当前位置:  开发笔记 > 开发工具 > 正文

修改自定义defun以与Magit不冲突

如何解决《修改自定义defun以与Magit不冲突》经验,为你挑选了1个好方法。

我在.emacs中使用以下智能选项卡defun来完成一个单词或只是做一个标准选项卡:

(global-set-key [(tab)] 'smart-tab)
(defun smart-tab ()
  "This smart tab is minibuffer compliant: it acts as usual in
    the minibuffer. Else, if mark is active, indents region. Else if
    point is at the end of a symbol, expands it. Else indents the
    current line."
  (interactive)
  (if (minibufferp)
      (unless (minibuffer-complete)
        (dabbrev-expand nil))
    (if mark-active
        (indent-region (region-beginning)
                       (region-end))
      (if (looking-at "\\_>")
          (dabbrev-expand nil)
        (indent-for-tab-command)))))

但是,当我magit-status用于git Git集成时,我之前可以选择一个已修改的文件,点击标签,并立即在该文件上看到差异以查看已修改的内容.但是,每当我现在尝试选项卡时,我的迷你缓冲区中都会出现以下错误.

indent-relative: Buffer is read-only: #

有关接近此问题的想法,并且可能仅将智能标签应用于某些模式吗?

谢谢!



1> haxney..:

我是Smart-tab的维护者,可以从GitHub获得.最新版本定义了一个次要模式,它在只读缓冲区或迷你缓冲区中自动关闭,允许像ido-mode和magit这样的东西正常工作.它还可以更好地处理您希望密钥运行不同命令的情况indent-for-tab-command,例如org-mode.我强烈建议您使用GitHub版本,因为它避免了使用全局键绑定的基本版本的许多麻烦.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有