Emacs Pabbrev和Python

通常,当您在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))
上一篇:emacs bookmark(书签)初次使用


下一篇:在Emacs打开时自定义窗口