2013-01-20 57 views
1

我發現這個郵件列表有關多字縮寫的message,但 仍然無法獲得擴展功能。多字縮略詞擴展

我有這兩個縮寫定義:

"agw"   0 "a great whale" 
"a g w"   0 "a great whale" 

按下後 「AGW」 工作空間,而不是 「A G W」。但是,如果我撥打 (abbrev-expansion "a g w"),則返回正確的擴展名。

問題是如何讓Emacs向後搜索超出一個單詞邊界?

是的,yasnippet存在,我使用它,但縮寫更無縫(例如在「1/2」將它變成unicode一半後按 空間)。我也不想更改 的語法表。

回答

0

SPACE在插入之前會在點展開之前查找縮寫。它使用「後退詞」,它將停留在前一個空格處。因此SPACE不能擴展縮寫內的空格。

0

正如Andreas所解釋的那樣,它不起作用,因爲默認情況下,縮寫詞只有在由「詞成分」和「」不是詞成分的字符組成時才起作用。你可以改變這個規則,對於一個給定的表,像(abbrev-table-put <table> :regexp <regexp>)這樣的正則表達式像"\\<\\(\\w+:?\\)\\W*"幾乎可以重現默認行爲。

現在對於你的情況,你需要一個匹配「agw」和「agw」的正則表達式,但要注意它不應該匹配「dawg」的「agw」,也不應該匹配「ag agw」,它使它有點棘手。一種方法是將你的正則表達式定義爲(concat "\\<" (regexp-opt '("agw" "a g w")) "\\W*"),這很簡單,但缺點是它需要在添加縮寫詞時改變正則表達式。