gpt4 book ai didi

Emacs 自定义缩进

转载 作者:行者123 更新时间:2023-12-04 03:23:53 24 4
gpt4 key购买 nike

我的团队使用一种特殊类型的文件进行配置,我想使用 emacs 自动缩进(块缩进)该文件。

我想为左括号 - { 或 [ 增加一个制表符大小的缩进,并为右括号 - } 或 ] 减少一个制表符大小。

例如,

files = {
file1 = first_file.txt
file2 = second_file.txt
rules = {
skip_header = 1
fast_process = 1
}
}

C 样式缩进不起作用,因为一行不以分号结尾。

今天研究了半天的emacs缩进,还是不知道怎么弄。

最佳答案

从 text-mode 或其他东西派生一个新模式并创建自己的缩进功能。我知道说起来容易做起来难,所以这可能足够接近了:

(define-derived-mode foo-mode text-mode "Foo"
"Mode for editing some kind of config files."
(make-local-variable 'foo-indent-offset)
(set (make-local-variable 'indent-line-function) 'foo-indent-line))

(defvar foo-indent-offset 4
"*Indentation offset for `foo-mode'.")

(defun foo-indent-line ()
"Indent current line for `foo-mode'."
(interactive)
(let ((indent-col 0))
(save-excursion
(beginning-of-line)
(condition-case nil
(while t
(backward-up-list 1)
(when (looking-at "[[{]")
(setq indent-col (+ indent-col foo-indent-offset))))
(error nil)))
(save-excursion
(back-to-indentation)
(when (and (looking-at "[]}]") (>= indent-col foo-indent-offset))
(setq indent-col (- indent-col foo-indent-offset))))
(indent-line-to indent-col)))

打开您的文件并执行 M-x foo-mode

关于Emacs 自定义缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4158216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com