emacs:非连续缓冲区
问题描述:
我希望Emacs的语法运动函数忽略缓冲区的某些区域;即正确解析非连续区域。如果可以将区域定义为注释忽略并将parse-sexp-ignore-comments变量设置为true,则可以有效地完成此操作。emacs:非连续缓冲区
这是问题所在。主模式的注释以'!'开始并以换行符('\ n')结尾,并且我希望忽略缓冲区,因为注释以“%{”开始并以“}%”结尾。但是,我看不出任何方式将这两个定义为注释。在语法表中处理多字符注释分隔符的机制对于C来说非常具体。有没有人有任何其他的建议,文字属性,例如?
答
是的,您可以修改类似于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")
虽然,我认为保持{
和}
作为配对括号可能会混淆的东西......
谢谢回复。不幸的是,在我来这里问这个问题之前,我已经尝试过了。我发现这个机制对C来说太具体了; 'b'型评论必须以'a'型评论的第一个符号开始,在这种情况下'!'和'%'。在C中,这些都是方便的'/' – Alex 2009-09-20 08:27:47