2010-07-22 39 views
2

在Ubuntu 9.04上運行GNU Emacs 22.2.1。爲什麼python文檔字符串中的撇號會打破emacs語法高亮?

在emacs中編輯python代碼時,如果文檔字符串包含撇號,emacs會將所有以下代碼高亮顯示爲註釋,直到使用另一個撇號。真煩人!

換句話說,如果我有這樣的文檔字符串:

''' This docstring has an apostrophe ' ''' 

然後,所有下面的代碼被高亮顯示爲註釋。評論以代碼形式突出顯示。

我能逃脫文檔字符串避免這種情況,像這樣:

''' This docstring has an escaped apostrophe \' ''' 

那麼突出是好的,但後來它看起來很滑稽的,沒有必要對我的團隊的其他開發者,我也得到取笑使用因爲「它不能處理自衛」。 ;)

那麼,有誰知道如何使emacs在這方面表現更好?

感謝,

喬希

+0

我在版本23.1.1中沒有看到此問題 - 所以也許這是一個錯誤,但已被修復。 – 2010-07-22 19:18:09

回答

7

這似乎在GNU Emacs 23.2.1中正常工作。如果升級不切實際,您可以從Emacs 23源代碼中複製python.el,或者僅複製它的相關部分(python-quote-syntax,python-font-lock-syntactic-keywords和代碼使用後者,我認爲 - 我不是一個Elisp黑客)。

不幸的是,savannah.gnu.org的bzr瀏覽器目前無法正常工作,所以我不能直接指出你的代碼,你必須下載它。請參閱http://www.gnu.org/software/emacs/

+0

建築23.2現在。希望能解決它。 – Josh 2010-07-22 19:28:58

+0

是固定的。謝謝。 – Josh 2010-07-22 19:47:58

+0

FWIW,當使用帶有Emacs 23.1的python-mode.el版本時,我也注意到了這個問題。我已經刪除了它,並從Emacs 23.2中刪除了python.el.gz到/usr/local/share/emacs/23.1/site-lisp/,並且目前爲止都很好。 – phils 2010-07-23 13:51:08

2

這可能是Emacs的錯誤,但它也可能是由目的。如果您在docstrings中插入doctests,就像我經常用來解釋API一樣,我甚至希望在docstrings內部突出顯示完整的python語法。

但它可能是一個錯誤...(可能emacs語法高亮只是簡單和雙引號的照顧,忽略三重簡單和三重雙打)。如果是這樣,你應該使用三重雙引號而不是三重簡單引號(就我所知,大多數用戶對docstring使用三重雙引號),並且你不會遇到問題。

相關問題