Как настроить режим темпа emacs для работы с сокращениями для C / C ++? - PullRequest
1 голос
/ 29 ноября 2009

Я экспериментировал с режимом темпа emacs, и мне кажется, что это сэкономило мне много времени на печать (всегда хорошо), но я не заставил его работать именно так, как я хочу. На вики есть пример для elisp, аналогичный тому, что я хочу сделать, который работает, как и ожидалось. Вот полный .emacs, на котором я его тестировал:

(require 'tempo)
(setq tempo-interactive t)
(tempo-define-template "lambda"
                 '(> "(lambda (" p ")" n> r> ")">)
                 nil
                 "Insert a template for an anonymous procedure")
(define-abbrev lisp-mode-abbrev-table "lambda" "" 'tempo-template-lambda)

Это позволяет мне набирать "лямбда", затем пробел и автоматически вставлять

(lambda ( )
  )

В моем буфере с точкой на первой закрывающей скобке.

Однако, заменив два последних секса на следующий код (украденный у Иоахима Бауманна через Себастьяна Варретта и измененный мной):

(tempo-define-template "c-include"
         '("#include <" r ".h>" > n)
         nil
         "Insert a #include <> statement")
(define-abbrev c-mode-abbrev-table "c-include" "" 'tempo-template-lambda)

Не приведет к вставке шаблона после ввода «c-include» и пробела. Это на emacs 22.2.1, работающем под Ubuntu 9.04. Кто-нибудь знает, почему это может иметь место до того, как я углублюсь в код темпа и / или (не дай бог) код режима C?

Ответы [ 2 ]

1 голос
/ 29 ноября 2009

Альтернативой tempo является yasnippet, что, как мне показалось, проще для установки интересных расширений.

1 голос
/ 29 ноября 2009

Последний аргумент для вашего define-abbrev должен быть 'tempo-template-c-include. Кроме того, я не уверен, что у вас там может быть тире, т. Е. Она может быть cinclude вместо c-include:

(define-abbrev c-mode-abbrev-table "cinclude" "" 'tempo-template-c-include)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...