2013-11-02 8 views
5

Я не уверен, что это возможно, но я хотел бы установить некоторые проектные конкретные комбинации клавиш с помощью .dir-locals.elEmacs .dir-locals.el - настройка привязок клавиш

Конечно .dir-locals.el должен содержать специальный список параметров, так что я не могу сделать:

(global-set-key [24 down] 'move-text-down) 

есть ли способ, что я могу придать лямбда выполнить произвольный код или какой-либо другой способ установки клавиш в .dir-locals.el?

+0

Ваш вопрос слишком общий. Какой язык, количество проектов и количество разных поведений для каждого проекта? Приведите несколько примеров. –

+2

@ abo-abo ... извините, но вы просто не понимаете вопроса, в этом нет ничего общего. – ocodo

ответ

8

pseudo-variable eval позволяет указать произвольный elisp для оценки с вашими локальными переменными.

например. https://stackoverflow.com/a/7340962/324105

См. EmacsWiki для получения более подробной информации.

Обратите внимание, что это не является особенно полезным механизмом для установки привязок клавиш, так как каждый буфер с использованием рассматриваемой ключевой карты будет затронут. Вероятно, вам лучше будет использовать конфигурацию dir-local, чтобы включить вспомогательный режим с конкретной раскладкой для этого проекта. В качестве альтернативы вы можете адаптировать this approach to file-local bindings (но второстепенный режим будет приятнее).

Это, как говорится ...

Довольно минимальная форма ((nil . ((eval . (progn BODY))))) с BODY быть выражения для оценки. Конечно, если BODY - это всего лишь одно выражение, вам не нужно progn.

Следующая поэтому отображает сообщение, когда вы посещаете какой-либо файл (в каталоге в вопросе):

((nil . ((eval . (message "hello"))))) 

Автомобиль каждого списка в Dir-местные жители образуют, как правило, главный символ режима, или nil (как в приведенном выше примере), и в этом случае настройки применяются в любых основных режимах.

Автомобиль также может указать строку подкаталога, и в этом случае cdr является другой формой dir-locals с настройками, применимыми к этому поддиректору.

+0

так, по существу .. a .dir-locals.el, содержащий: '((eval. (Progn BODY)))'? (Я дам ему попробовать) – ocodo

+1

Как минимум формат будет: ((nil. ((Eval. (Progn BODY))))) '- автомобиль каждого списка в форме - это (основной режим) символ или 'nil' (как в этом примере), указывающие настройки, которые применяются в * любом * основном режиме. (Автомобиль также может указать строку (подкаталог), а затем настройки, применимые к этому под-директору). – phils

+0

Благодаря @phils отображается запрос emacs для маркировки '.dir-locals.el' как безопасного, однако код внутри тела' progn' не выполняется. Я добавил «(сообщение« привет »)' для регистрации * сообщений * и не отображается. Пробовал с лямбдой, а также не выполнял. Есть еще идеи? – ocodo

Смежные вопросы