2013-11-09 1 views
0

я определил некоторые аббревиатуры для режима питона с помощью кода, как этотEmacs: Abbrev-режим не может работать в питона режиме

(define-abbrev-table 'python-mode-abbrev-table 
    '(
    ("i_settings" "from django.conf import settings") 
    ("i_requestcontext" "from django.template import RequestContext") 
    ("i_model" "from django.db import models") 
    ("i_form" "from django import forms") 
    )) 

, но он не может работать правильно. например, я вводил «i_settings», затем вводил пробел, emacs не расширялся до «из настроек импорта django.conf». Я пробовал это с отключенной конфигурацией, но без помощи.

ответ

1

Кажется, подчеркивание _ препятствует расширению. Попробуйте ту же таблицу без подчеркивает

(define-abbrev-table 'python-mode-abbrev-table 
    '(
    ("isettings" "from django.conf import settings") 
    ("irequestcontext" "from django.template import RequestContext") 
    ("imodel" "from django.db import models") 
    ("iform" "from django import forms") 
    )) 

и он будет работать, как ожидалось.

+0

Это не похоже на знак подчеркивания. потому что, если я изменю python-mode-abbrev-table на sh-mode-abbrev-table, а затем в исходном файле сценария оболочки, он работает хорошо. Это очень странно. – YuYang

+0

Я не могу это подтвердить. Изменение 'python-mode-abbrev-table' в' sh-mode-abbrev-table' ничего не меняет. Даже там, это не работает с подчеркиваниями, и без него. –

0

Внутреннее продолжение, расширяющее аббревиатуру --abbrev - before-point-- полагается на синтаксис слова - не может видеть причину этого BTW, Emacs может использовать любую печатную версию.

В результате в любом режиме, где символ подчеркивания имеет синтаксис слов, ваши определения должны работать - например, с python-mode.el.