2009-09-19 327 views
1

我希望Emacs的語法運動函數忽略緩衝區的某些區域;即正確解析非連續區域。如果可以將區域定義爲註釋忽略並將parse-sexp-ignore-comments變量設置爲true,則可以有效地完成此操作。emacs:非連續緩衝區

這是問題所在。主模式的註釋以'!'開始並以換行符('\ n')結尾,並且我希望忽略緩衝區,因爲註釋以「%{」開始並以「}%」結尾。但是,我看不出任何方式將這兩個定義爲註釋。在語法表中處理多字符註釋分隔符的機制對於C來說非常具體。有沒有人有任何其他的建議,文字屬性,例如?

回答

1

是的,您可以修改類似於C所做的語法表。你可以閱讀語法表here。基本上,您需要將%定義爲標點和註釋字符,與{}相同。

在C的/字符的描述是:

 character:/(47, #o57, #x2f) 
preferred charset: ascii (ASCII (ISO646 IRV)) 
     code point: 0x2F 
      syntax: . 124b which means: punctuation, 
     is the first character of a comment-start sequence, 
     is the second character of a comment-start sequence, 
     is the second character of a comment-end sequence (comment style b) 

注:獲得一個角色,類型M-x describe-char的描述,它會告訴你所有的點之後的char。

類似地,*字符具有描述(C):

 character: * (42, #o52, #x2a) 
preferred charset: ascii (ASCII (ISO646 IRV)) 
     code point: 0x2A 
      syntax: . 23 which means: punctuation, 
     is the second character of a comment-start sequence, 
     is the first character of a comment-end sequence 

基本上,你需要設置註釋啓動和評論端序列,如在this part of the info pages說明。

我想你會想修改語法條目是這樣的:

(modify-syntax-entry ?% ".14") 
(modify-syntax-entry ?{ "(}2") 
(modify-syntax-entry ?} "){3") 

雖然,我認爲保持{}作爲配對括號可能會混淆的東西......

+0

謝謝回覆。不幸的是,在我來這裏問這個問題之前,我已經嘗試過了。我發現這個機制對C來說太具體了; 'b'型評論必須以'a'型評論的第一個符號開始,在這種情況下'!'和'%'。在C中,這些都是方便的'/' – Alex 2009-09-20 08:27:47