2015-01-17 2 views
1

Я не могу заставить abbrevs работать в ess-режиме при редактировании R-файлов.Emacs - Добавление аббревиатур в ess-mode

У меня есть привязку режима ess-mode, чтобы активировать режим abbrev-mode, но я не получаю расширения для своих глобальных аббревиатур. Когда я делаю add-mode-abbrev, я могу добавить аббревиатуру, но она не записана в мой аббревиатурный файл и, конечно же, не расширяется (после read-abbrev-file или перезапуска).

Если я вручную добавить что-то вроде этого в мой файл Abbrev и перезагружать:

(define-abbrev-table 'ess-mode-abbrev-table 
'(
    ("-=" "<-" nil 0) 
)) 

не работает.

Как я могу заставить ess-mode знать мои аббревиатуры?

ответ

0

Ожидается, что в аббревиатурах будет использоваться синтаксис слова - forward-word используется внутри.

Написание/переопределение аббревиатур - дорогостоящая операция, занимает несколько секунд. Таким образом, это не делается после редактирования/определения - за исключением случаев, когда явно запрашивается C-x C-s. Аббревиатура обычно записывается, когда сеанс закрыт.

+0

Это правильно, но не моя проблема - я вызываю read-abbrev-file, и он все еще не работает. Аббревиатуры работают корректно в других режимах. Существует разрыв между ess-mode и abbrev-mode, и это то, что мне нужно получить исправлено ... – user673592

2

Я использую обходное решение, устанавливающее локацию ess-mode-abbrev-table. Сначала я определить расшифровку сокращений стола, на всяком случае, что я загрузить мои Abbrev столы позже и не хочу об ошибке при запуске ESS:

(define-abbrev-table 'ess-mode-abbrev-table nil) 
(add-hook 'ess-mode-hook 
      (lambda() 
      (setq local-abbrev-table ess-mode-abbrev-table))) 

Я предпочитаю использовать одни и то же сокращение, в интерпретаторе, так что Полезно:

(dolist (hook '(ess-mode-hook inferior-ess-mode-hook)) 
    (add-hook hook 
     (lambda() 
      (setq local-abbrev-table ess-mode-abbrev-table)))) 
+0

Добро пожаловать в stackoverflow. Немного больше объяснений. – Daenarys

+0

Спасибо! Это выглядит многообещающим: теперь отображается список-abbrevs' (ess-mode-abbrev-table) "- =" 0 "<-", но он до сих пор не расширяет аббревиатуру. 'local-abbrev-table' is [## 0 0 0 0 0 0 0 0 0 0 0 0 0 - = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] (так что он тоже содержит триггер ...). Вы делаете какие-либо дальнейшие настройки, пожалуйста? – user673592

+0

Докшнарная строка 'define-abbrev-table' проливает свет на вашу проблему:« Если: regexp равно нулю, поведение по умолчанию использует обратное слово и форвард-слово для извлечения имени аббревиатуры, что может поэтому быть единственным слово." Поэтому изменение названия аббревиатуры на «u» для подчеркивания, например, должно решить вашу проблему. – mutbuerger