LINUX.ORG.RU

msf-abbrev


0

0

Нашел недавно одно очень полезную программку под емакс -- msf-abbrev. Предназначена она для работы с сокращениями (abbrev). То есть, вводишь определенное слово, если это слово совпадает с определенным сокращением, то вместо него вставляется другой текст.

Чем же интересен msf-abbrev?

* Поддержка программируемых сокращений (в принципе, возможность аналогична предоставляемым такими библиотеками как tempo или skeleton, но реализована гораздо более удачно). Подробности на сайте разработчика.

* Каждое сокращение определяется в отдельном файле (его имя определяет ключевое слово сокращения). Сокращения, которые работают только в каком-то определенном режиме (mode), хранятся в отдельном каталоге, имя которого совпадает с названием режима. Например, сокращения, которые используются во время кодировки на С хранятся в каталоге `c-mode'. ИМХО, такой способ управления сокращениями гораздо удобней, чем определять все сокращения в одном файле.

Пользуясь второй возможностью, легко написать скрипт, который из списка функций (правда, немножко обработанного sed'ом для удобства ;)) какой-то библиотеки генерирует сокращения для всех ее функций, что и продемонстрировано на данном скриншоте. В первом окне код скрипта, во втором -- тестовый код, в котором происходит вставка сокращения `qsortx' (между аргументами можно переключаться с помощью клавиш TAB и S-TAB). В нижнем окне -- непосредственно код соответствующего сокращения.

Не знаю пока, удобно ли будет использовать эти сгенерированные сокращения, но идея в любом случае интересная :)

Дом. страница: http://www.bloomington.in.us/~brutt/msf-abbrev.html.

>>> Просмотр (1024x768, 21 Kb)



Проверено: Shaman007 ()

Вот именно поэтому я и использую vim -- там abbrev есть бех плагинов:)

ivon
()

>Нашел недавно одно очень полезную программку под емакс -- msf-abbrev. Предназначена она для работы с сокращениями (abbrev).

В виме тоже такая есть :) Правда, не такая фунциональная, но зато встроенная :)

php-coder ★★★★★
()
Ответ на: комментарий от php-coder

В емаксе тоже есть встроенные abbrev'ы (точнее, входящие в стандартную поставку). Эта программка работает поверх стандартных.

nsav-ng
() автор топика

Ion3 жжот!

anonymous
()

Да, удобная фишка!
За хорошо настроенный емакс - респект :)

godexsoft
()

>Каждое сокращение определяется в отдельном файле (его имя определяет ключевое слово сокращения). Сокращения, которые работают только в каком-то определенном режиме (mode), хранятся в отдельном каталоге, имя которого совпадает с названием режима.

Ну и глупо. Лучше б один файл для одного режима.

anonymous
()
Ответ на: комментарий от anonymous

> Ну и глупо. Лучше б один файл для одного режима.

Если сокращений достаточно много, то лучше все же в отдельных файлах. Сейчас у меня в сишном режиме 1300 аббревов. прикинь, какая была бы каша, если бы они хранились в одном файле?

nsav-ng
() автор топика
Ответ на: комментарий от uj2

большинство аббревов совпадают с именами библиотечных функций (только к ним добален суффикс 'x'). Например, memsetx, qsortx. Как я уже говорил, аббревы сгенерированные скриптом.

nsav-ng
() автор топика
Ответ на: комментарий от hbee

Емаксерами не рождаются. Ими девианти^H^H^H^H становятся :)

AP ★★★★★
()
Ответ на: комментарий от php-coder

> :D Маньяк :)

Сейчас прийдет devinull с Orlangoor'ом и скажут, что мне надо найти девушку :)))

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

>Сейчас у меня в сишном режиме 1300 аббревов. прикинь, какая была бы каша, если бы они хранились в одном файле?

Видимо, у нас совершенно разные понятия о том, что такое "каша". Полечу в свою галактику, а то у вас тут физика какая-то дурацкая...

anonymous
()
Ответ на: комментарий от rys

> а что круче, vi или emacs? :)

Понурая свинка глубок корень роет...

hbee ★★★★
()

Аффтар, плиз, напиши название шрифта - мне понравилссо, самому подбирать времи нет. Заранее, пасиб.

anonymous
()
Ответ на: комментарий от nsav-ng

О, заодно еще ткните нуба ссылкой или советом, как заставить работать хоткеи в русской раскладке :)

anonymous
()
Ответ на: комментарий от anonymous

(set-input-method 'russian-computer)

Переключаться между раскладками нужно с помощью C-\. Если не хочешь такой клавишей, то можно перебиндить функцию toggle-input-method, например

(global-set-key "C-1" #'toggle-input-method)

nsav-ng
() автор топика

хехе, не хорошо пропагандировать cut&pase стиль программинга :), хотя я сам пользовал раньше подобные тулзы .. с другой стороны подобные тулзы очень полезны при написании маленьких независимых прог, типа юниксовых ls, cat, etc ..

lg ★★
()
Ответ на: комментарий от lg

> хехе, не хорошо пропагандировать cut&pase стиль программинга :)

Что ты имеешь в виду? При чем тут cut&paste?

nsav-ng
() автор топика
Ответ на: комментарий от lg

Кстати, эта тулза в xemacs не работает. Еще в xemacs жутко убогий интерфейс к gdb, в cvs'ном емаксе гораздо лучше. Если удастся потрировать эти две фичи на xemacs, то я на него окончательно переползу. :)

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

при том что шаблонизация это ни что иное как cut&paste программинг .. нужно стремиться к тому чтобы код не повторялся тем самым нужда в шаблонах отпадет ..

lg ★★
()
Ответ на: комментарий от nsav-ng

> Кстати, эта тулза в xemacs не работает.

хм, а на сайте у него написано что работает .. сейчас проверим ..

> Еще в xemacs жутко убогий интерфейс к gdb, в cvs'ном емаксе гораздо лучше.

там их куча .. какой именно?

lg ★★
()
Ответ на: комментарий от lg

> при том что шаблонизация это ни что иное как cut&paste программинг .. нужно стремиться к тому чтобы код не повторялся тем самым нужда в шаблонах отпадет ..

А, в этом плане... Тогда асолютно согласен. Сам всегда следую этому принципу. Многие мой код, правда, после этого читать не могут :) Но это уже их проблемы.

Ну и я написал, что пока что шаблоны в реальной жизни не использовал, поэтому не буду утверждать, какой подход рульнее. В любом случае, эта тулза, ИМХО, уделывыет скелетоны и темпо по легкости написания шаблонов, при этом не проигрывая им в мощности.

nsav-ng
() автор топика
Ответ на: комментарий от lg

> там их куча .. какой именно?

Я пробовал из пакета debug, он очень древний :( Пробовал из emacscvs -- не прикрутился. На емаксвики ничего другого не нашел.

nsav-ng
() автор топика
Ответ на: комментарий от lg

> у меня заработала .. в чем проблема у тебя, почему не работает?

Работает не всё. Например, такой аббрев

exit(<field "int STATUS">)<endpoint>

не работает как надо. Просто вставляется exit() и все. Посмотри демку на сайте, как все работает в обычном емаксе.

nsav-ng
() автор топика
Ответ на: комментарий от lg

Вот блин. Спасибо, буду знать куда копать дальше.

Если еще подскажешь хороший интерфейс для gdb, так я вообще тебе благодарен по гроб жизни буду.

/me мечтает перелезть таким наконец-то на xwem...

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

дело в том что эта ''прикольная фича в GNU Emacs которая правильно
abbrev экспандит при нажатии пробела'' - ни что иное как костыль от
которого избавились в XEmacs .. вот комментарии по этому поводу:

#if 1
	Fexpand_abbrev();
#else				/* FSFmacs */
	Lisp_Object sym = Fexpand_abbrev();

	/* I think this is too bogus to add.  The function should
           have a way of examining the character to be inserted, so
           it can decide whether to insert it or not.  We should
	   design it better than that.  */

	/* Here FSFmacs remembers MODIFF, compares it after
	   Fexpand_abbrev() finishes, and updates HAIRY.  */

	/* NOTE: we cannot simply check for Vlast_abbrev, because
	   Fexpand_abbrev() can bail out before setting it to
	   anything meaningful, leaving us stuck with an old value.
	   Thus Fexpand_abbrev() was extended to return the actual
	   abbrev symbol.  */
        ...<code>...
#endif /* FSFmacs */

> Если еще подскажешь хороший интерфейс для gdb

попробуй gud

> /me мечтает перелезть таким наконец-то на xwem.

и это правильно! так чтож тебе мешает  хехе? 

lg ★★
()
Ответ на: комментарий от lg

> попробуй gud

Блин, в xemacs'е он жутко старый. Там даже автодополнение не работает. Сейчас попробую присобачить из гнутого. Может быть, что то и выйдет.

> и это правильно! так чтож тебе мешает хехе?

Башка дурная мешает, прежде всего. Пока все заставлю правильно работать, состарюсь :( Все таки, правильно работающий редактор для меня важнее, чем правильно работающий wm.

nsav-ng
() автор топика
Ответ на: комментарий от anonymous

> ну и чем ddd не устраивает?

Интерфейс неудобный.

nsav-ng
() автор топика
Ответ на: комментарий от anonymous

Мне есть чем заниматься, кроме как цветовые схемы емакса менять. Вообще-то кроме цветовой схемы ничего общего между скринами нету. Разные дистры, разные вмы, разная начинка емакса...

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

темно-серый статусбар, там где расположена информация об имени файла, дате etc. Так вот он обведен белой рамкой, как сего добиться, т.е. какой параметр за это отвечает ?

у меня пока получается только вот так http://img380.imageshack.us/img380/9457/200509222134181024x768scrot8sz.png сам когда пытался такое сделать, в итоге запутался и забил. И ещё вопрос на скрине (modeline-3d-p nil)?

kuruu
()
Ответ на: комментарий от kuruu

В xemacs насколько я понимаю так нельзя. Только в gnu emacs. Тоже буду благодарен, если кто скажет, как это сделать в xemacs

anonymous
()
Ответ на: комментарий от kuruu

Хз, я это не настраивал. Все из коробки работает. По части настройки внешнего вида меня лучше не спрашивать. Я человек абсолютно безвкусный, поэтому никогда не занимаюсь подобными вещами.

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

2 nsav-ng ну хорошо, тогда поставлю вопрос по другому: цветовая схема не с неба же свалилась? где такую посмотреть можно в формате custom.el?

2 anonymous (*) (22.09.2005 22:29:29)

ну на скрине это же xemacs, а не GNU, стало быть можно =)

kuruu
()
Ответ на: комментарий от kuruu

> 2 nsav-ng ну хорошо, тогда поставлю вопрос по другому: цветовая схема не с неба же свалилась? где такую посмотреть можно в формате custom.el?

http://www.emacswiki.org/cgi-bin/wiki/ColorTheme

> ну на скрине это же xemacs, а не GNU, стало быть можно =)

Это GNU :))

nsav-ng
() автор топика
Ответ на: комментарий от nsav-ng

>Это GNU :))

ясно, меня видимо ввела в ступор фраза

>>Блин, в xemacs'е он жутко старый. Там даже автодополнение не работает. Сейчас попробую присобачить из гнутого. Может быть, что то и выйдет.

Теперь ясность полная, вопросы также отсутствуют

kuruu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.