2013-11-09 36 views
0

工作,我以這樣的的emacs:縮寫模式不能在python模式

(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,然後將其更改爲shell腳本源文件,那麼效果很好。這很奇怪。 – YuYang

+0

我無法確認。將'python-mode-abbrev-table'改爲'sh-mode-abbrev-table'不會改變任何東西。即使在那裏,它也不能與下劃線一起工作,而且沒有。 –

0

內部程序擴展縮寫--abbrev - before-point--依賴於單詞語法 - 不能看到這個BTW的原因,Emacs可以採取任何可打印的方式。

結果,在任何模式下,下劃線字符都有單詞語法,您的定義應該可以工作 - 例如使用python-mode.el。