Emacs Python.el,语法高亮怪癖

我现在正在为Emacs使用python.el版本0.23.1。 语法突出显示有点偏离 - 任何包含下划线后跟关键字的变量名都会导致突出显示关键字。 例如,“foo_list”将导致“列表”被突出显示。

更多的是我自己对Emacs-Lisp的理解比任何东西(这不是什么大不了的),我该如何去解决这个问题。 这里是我认为相关代码在“python.el”第312-318行的地方。 我怀疑问题出在“符号开始”的定义上,但我不知道这个名字是指什么。

(defvar python-font-lock-keywords
  ;; Keywords
  `(,(rx symbol-start
         (or "and" "del" "from" "not" "while" "as" "elif" "global" "or" "with"
             "assert" "else" "if" "pass" "yield" "break" "except" "import"
         "print" "class" "exec" "in" "raise" "continue" "finally" "is"
         "return" "def" "for" "lambda" "try" "self")
     symbol-end)

到目前为止,我在Emacs-Lisp中苦苦挣扎的一件事是,我发现在这些情况下很难将名称追溯到它们的定义。

提前致谢!


当你说你正在使用python-mode 0.23.1时,你的意思是与Emacs捆绑在一起的还是这个:http://launchpad.net/python-mode? (这似乎是在版本6.something)

我问的原因是我无法重现你所看到的。 在一个空的python缓冲区中,我插入了

def x ():
    a_list =3

和“列表”仅在删除“a_”时突出显示。 我正在使用捆绑Emacs的版本,Emacs的快照版本,所以这可能会有所不同?

顺便提一句,你引用的字体锁定规则看起来对我来说是正确的:也许问题是在你的版本中“_”没有设置符号语法? 你可以通过输入来检查

M-: (string (char-syntax ?_))

当在一个python缓冲区。 你应该得到“_”(这意味着符号)。 如果你得到 ”。” (标点符号)或其他奇怪的东西,这可能解释了什么问题。

链接地址: http://www.djcxy.com/p/52353.html

上一篇: Emacs Python.el, Syntax Highlighting Quirks

下一篇: Where to learn how to practically use Common Lisp