编程语言
首页 > 编程语言> > Emacs Python.el,语法突出显示的怪癖

Emacs Python.el,语法突出显示的怪癖

作者:互联网

我现在正在为Emacs使用python.el版本0.23.1.语法高亮显示似乎有点偏离-任何包含下划线和关键字的变量名都将导致该关键字被高亮显示.例如,“ foo_list”将导致“ 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缓冲区中时.您应该得到“ _”(表示符号).如果你得到 ”.” (标点符号)或其他怪异的东西,这可能可以解释出了问题所在.

标签:emacs,syntax-highlighting,python
来源: https://codeday.me/bug/20191208/2088013.html