我正在使用「--no-init-file」運行emacs 23和24以避免加載我的自定義項。但後來我明確加載了我的古代版本的python-mode.el(版本3.105,最後版權注意事項1998),並且看到了我將要描述的相同行爲,所以我相信它是核心emacs,而不是python。emacs 24:如何獲取python模式下的emacs-23 sexp行爲?
考慮這個代碼(*
馬克光標位置):
*def emacs_is_fun():
for x in range(3):
print(x)
將光標在塔4在開始「DEF」。
隨着emacs 23,運行mark-sexp
選擇「def」。
用emacs 24,mark-sexp
選擇整個代碼塊,到打印語句的末尾 。
這並不壞。的主要問題是這種常見的用法:
*very_long_var_name[very_long_expn] += long_function_call(long_arg_list, blah)
同樣,光標位於該行的可打印部分的開始,列4
在Emacs 23,mark-sexp
選擇very_long_var_name
。
在emacs 24中,mark-sexp
選擇從第4列到最後的完整行。我使用Ctrl-alt-space alt-w
來快速保存變量名稱。 (或alt-2 ctrl-alt-space alt-w
保存ref表達式。)現在它的 沒了。這是emacs,所以這必須是可定製的,但我還沒有發現 新的行爲被實現(並記住我正在使用大約15歲的python模式 )。我需要在我的.emacs文件中放入什麼?
就是這樣!非常感謝!這仍然符合括號表達式和字符串的預期。我對這種新行爲的另一個問題是它的不對稱性:坐在'def'上,fwd-sexp走到塊的盡頭,但是一旦出現(fwd-sexp-1)就會返回一個傳統的sexp。 – Eric
沒問題。很高興幫助。不知道我完全理解你的第二個問題。如果你仍然有問題,請在評論中以示例和@我的方式提出新的SO問題,我很樂意看一看。 – Jack