emacs 在 python 模式下使用下划线自动完成行为

emacs 在 python 模式下使用下划线自动完成行为

在我的.emacs我有以下代码行:

(modify-syntax-entry ?_ "." python-mode-syntax-table)

这样,像forward-word和这样的命令backward-kill-word就会在单词中的任何下划线处停止。这与默认行为不同,这是我想要的行为。问题是 thenauto-complete-mode也以不理想的方式将下划线视为单词边界。例如,如果我有一个名为 的变量foo_varfo然后我输入并尝试完成,它只会完成到 而foo不是foo_var

text-mode和中,c-mode行为正是我想要的,即运动遵循下划线,但auto-complete-mode会跨它们完成。我需要在配置中更改什么才能auto-complete-mode在 Python 中修复此问题?

答案1

我设法解决了我的问题。我对为python-mode和加载的语法表进行了比较c-mode(使用C-h s)。我注意到在中c-mode,下划线是一个符号字符(“_”),而在python-mode下划线是一个标点符号(“。”)。因此,我只需将上述代码行更改为

(modify-syntax-entry ?_ "_" python-mode-syntax-table)

相关内容