2012-03-13

Возвращение к Geany

Не срослось у меня со Snaked. Основная причина, это ощутимая тормознутость при навигации (а я довольно дофига туда-сюда по сорцам лажу), и это в XXI веке, на четырёх ядрах в 3.2GHz, простой текстовый, да ещё позиционирующийся как лёгкий, редактор :-). С остальными болячками я бы даже справился со временем.

Основной причиной обращения к Snaked была потребность в сессиях. Это что-то типа проектов (не особо мудрёных) и возможности запуска нескольких экземпляров редактора, а точнее открытии очередного файла в том или ином экземпляре; у меня одновременно открыто несколько проектов и в каждом от трёх до десятка файлов, мешать всё в кучу не разумно, к тому же каждый экземпляр редактора открыт в отдельном теге Awesome (это такой тайловый менеджер окон, теги -- что-то вроде рабочих столов).

В Geany, в принципе можно добиться подобной функциональности. Во-первых, в Geany есть понятие проекта, и нужно завести такой Geany-проект для каждого своего проекта; а во-вторых, при открытии файлов, относящихся к одному и тому же проекту, и при желании открытия их в своём экземпляре редактора, нужно передавать Geany ключик --socket-file с указанием уникального для этого экземпляра сокетного файла. Например, для проекта plup я буду открывать файлы так:
$ geany --socket-file=/tmp/geany-$USER-plup.socket setup.py
$ geany --socket-file=/tmp/geany-$USER-plup.socket bootstrap.py
$ geany --socket-file=/tmp/geany-$USER-plup.socket README
Везде указан один и тот же сокет, открыто всё будет в одном и том же окне. Но это полбеды, нам бы ещё хотелось сохранять набор открытых файлов при закрытии окна редактора. По умолчанию все экземпляры редактора будут писать список открытых вкладок в "сессию" по умолчанию, т.е. затирать данные друг друга. А что бы для каждой сессии вёлся свой список вкладок и нужно было завести Geany-проект (доступно через главное меню редактора).

Остаётся ещё одна проблема, если экземпляр редактора запущен (с правильным сокетом) и в нём выбран нужный проект, то все последующие открываемые извне файлы (с правильным сокетом) будут добавляться в этот проект. Но если экземпляр не открыт, то сокет не поможет загрузить очередной (первый открываемый) файл в проект. Получается, придётся заранее открыть редактор (с правильным сокетом) и в нём загрузить нужный проект, затем всё пойдёт как по маслу (до закрытия экземпляра редактора). Засада, конечно, но пока с этим не разобрался. Хотя у меня комп не отключается месяцами и я попросту ничего не закрываю перед сном, так что не очень мешает :-).

И ещё, безусловно, нужно отметить что Geany позволяет писать плагины для себя любимого, с этим не разбирался, может напишу сессионый плагин когда-нибудь или найду другое решение.

Но я всё же продолжу следить за Snaked, интересная вещь, пусть пока и не могу ей пользоваться.

2 комментария:

Андрей комментирует...

Что люди только не придумают, чтобы не исполользовать проверенные временем и тысячами разработчиков Vim/Emacs :)

bw комментирует...

Наскальные рисунки тоже проверены временем, так чего мы тупим ;-).
В текстовом редакторе, как ни странно, я хочу набирать текст, а не команды, и эту киллер фичу vim'а как не старался я так и не понял, речь о нескольких режимах и об акценте на командном интерфейсе. Мне значительно ближе хоткейность, причём регистровые клавиши должны работать беспроблемно в любой комбинации (и с тем же NumPad), а это, не уверен, что всегда достижимо в posix терминалах.
Наверняка можно подкрутить и настроить под себя, и это здорово, вот только хочется что бы из коробки работало как можно ближе к моим предпочтениям, ведь на сторонней системе всегда будет дефолтная конфигурация (или мне конфиги теперь с собой носить?).