gpt4 book ai didi

emacs - 如何在emacs中为特定的正则表达式包装对齐正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:35:28 25 4
gpt4 key购买 nike

我经常在一个区域上使用 align-regexp 和正则表达式“[^]+_”。所以我想我会为它定义一个函数,这样我就可以将它绑定(bind)到一个键:

(defun align-members ()
(interactive)
(align-regexp " [^ ]+_"))

但是 emacs 提示 align-regexp 需要三个参数。查看文档,我发现它需要 BEG 和 END。我不知道如何 (interactive)东西在emacs中工作,但通过阅读我收集的文档,我应该这样做:
(defun align-members (BEG END)
(interactive "r")
(align-regexp BEG END " [^ ]+_"))

但是 emacs 然后在 align-regexp 的调用堆栈深处提示它预期 integer-or-marker-p反而得到了零。我究竟做错了什么?

最佳答案

你应该写如下

(defun align-members (BEG END)
(interactive "r")
(align-regexp BEG END (concat "\\(\\s-*\\)" " [^ ]+_") 1 1))

或者更简单一点

(defun align-members (BEG END)
(interactive "r")
(align-regexp BEG END "\\(\\s-*\\) [^ ]+_" 1 1))

要了解它,请查看 align-regexp来源,这里有一部分。

(interactive
(append
(list (region-beginning) (region-end))
(if current-prefix-arg
(list (read-string "Complex align using regexp: "
"\\(\\s-*\\)")
(string-to-number
(read-string
"Parenthesis group to modify (justify if negative): " "1"))
(string-to-number
(read-string "Amount of spacing (or column if negative): "
(number-to-string align-default-spacing)))
(y-or-n-p "Repeat throughout line? "))
(list (concat "\\(\\s-*\\)"
(read-string "Align regexp: "))
1 align-default-spacing nil))))

如你看到的:
  • 它添加了一个字符串 "\\(\\s-*\\)"到您的正则表达式
  • 它设置 1 和 align-default-spacing到可选参数
  • 关于emacs - 如何在emacs中为特定的正则表达式包装对齐正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282506/

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