通常,当您在emacs python模式下在空白行上点击选项卡时,它将循环显示可用的选项卡缩进.当我在最高缩进点处按Tab时,我得到了包含最后一个最佳匹配选项的pabbrev缓冲区.还有其他人有这个问题吗,有没有解决此问题的简便方法而无需编写任何elisp吗?
编辑:
Trey,我想让pabbrev保持在python模式下而不关闭它.
因此,假设有2个缩进级别,或者没有,或者如果敲打制表符3次通常为1个级别,则第一个将点放在4个空格(或任何缩进设置)中,第二个放回0空格,第三回4位.
在pabbrev模式下,一个缩进将标记放置4个空格,第二个则调出用于自动完成的缓冲区.如果我的观点左边没有字母,则不会发生这种情况.
这有意义吗?
解决方法:
根据明确的要求,您需要一些类似的方法.我敢肯定,如果不写一些elisp,您将无法摆脱.好的(IMO)是,它应该适用于所有模式,而不仅仅是python模式.
(defadvice pabbrev-expand-maybe (around pabbrev-expand-maybe-when-not-after-whitespace activate)
"prevent expansion when only whitespace between point and beginning of line"
(if (save-match-data
(save-excursion
(let ((p (point)))
(string-match "^\\s-*$" (buffer-substring-no-properties (progn (beginning-of-line) (point)) p)))))
(let ((last-command (if (eq last-command this-command) (pabbrev-get-previous-binding) last-command))
(this-command (pabbrev-get-previous-binding)))
(pabbrev-call-previous-tab-binding))
ad-do-it))