如何制作像phpstorm / eclipse这样的emacs缩进行为?

时间:2018-03-14 11:41:47

标签: emacs indentation

我是emacs的新手,并且拼命想让它在过去几年中我的IDE已经习惯了。

我喜欢它所做的很多事情,但我对它的缩进做法感到不满。

我想要的是什么:

  • 4个空格而不是标签
  • 按Enter键将光标放在与上一行开始的列相同的列上
  • 按下标签会插入4个空格,无论“聪明”和“智能”是什么。缩进可能认为是正确的
  • 使用neotree-dir时按Tab键应尝试正常解析路径

我设法用https://github.com/zorgnax/regtab获得2/4。 不幸的是,该解决方案打破了neotree中的路径解决方案。

编辑:认为显示我的.emacs配置为此

是有意义的
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(add-to-list 'load-path "~/.emacs.d/plugins/")
(load "regtab.el")
(define-globalized-minor-mode my-global-regtab-mode regtab-mode
  (lambda() (regtab-mode 1)))
(my-global-regtab-mode 1)
(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

关闭电子缩进模式是因为如果我按照它认为的无效方式缩进一行,然后按下RET,它会纠正'我的缩进。当我使用C-y

时,它对整个文件做同样的事情

您想要使其无效的原因'缩进是某些库使用本质上无效的html / js语法。

EDIT2: 替换

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

(setq-default electric-indent-inhibit t)

有点帮助。它不再强迫我使用奇怪的缩进,但现在它在按下RET时至少有点缩进,并且在使用C-y时不再破坏我的缩进。

现在剩下的就是以某种方式实现regtab所做的事情而不会搞砸M-x命令的路径解析。

1 个答案:

答案 0 :(得分:0)

好吧,我有点想通了自己的东西。如果您有比我要列出的更好的解决方案,请提供它们。

1)修复糟糕的emacs缩进: 获取此文件:https://github.com/zorgnax/regtab 把它放在〜/ .emacs.d / plugins /(这个文件不存在,制作它。)

在你的〜/ .emacs文件中,添加:

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(add-to-list 'load-path "~/.emacs.d/plugins/")
(load "regtab.el")
(define-globalized-minor-mode my-global-regtab-mode regtab-mode
  (lambda() (regtab-mode 1)))
(my-global-regtab-mode 1)
(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))
(setq-default electric-indent-inhibit t)

2)修复前面步骤的副作用: 安装hippie-expand 将以下内容添加到〜/ .emacs文件

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point)
(defun my-expand-file-name-at-point ()
  "Use hippie-expand to expand the filename"
  (interactive)
  (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name)))
    (call-interactively 'hippie-expand)))

现在,如果要在M-x命令中完成路径,请使用C-M - /