gpt4 book ai didi

emacs - Defadvice for C-k in emacs for js-mode

转载 作者:行者123 更新时间:2023-12-05 01:16:39 27 4
gpt4 key购买 nike

我想使用 C-k 在 js 模式下杀死一个 block 或杀死当前行的其余部分。

google了一会儿,我想defadvice将是答案,但我不熟悉 elisp。所以我希望有人可以帮我写它:)

我提到的函数类似于 paredit-mode但我不想启用 paredit-modejs-mode因为我的要求会简单得多。当我写 js 时,有时我想杀死下面的 block ,比如:

function test() {
if () {
} else {
}
}

如果光标现在在 function 之间和 test , 然后我用 C-k 我可以杀死整个街区
        test() {
if () {
} else {
}
}

用唯一的词 function左。这里的 'block' 仅仅意味着 '{}' 之间的东西。

如果当前行后面没有 block ,C-k 应该像它的原始行为一样,应该是 (kill-line &optional ARG) , 默认情况下杀死其余的行。

如果您熟悉 paredit-mode ,你会发现它只是一个非常简单的版本!

我希望你能明白我的意思,因为我的英语很烂。任何帮助将不胜感激 !

最佳答案

我建议不要为此使用建议,因为您可以重新绑定(bind) C-kjs-mode-map反而。例如。

(defun my-kill-line-or-block (&optional arg)
"Kill line or whole block if line ends with a block opener."
(interactive "P")
(if (looking-at ".*\\({[^{}\n]*$\\)")
(kill-region (point)
(progn (goto-char (match-beginning 1))
(forward-sexp 1)
(point)))
(kill-line arg)))

(define-key js-mode-map [?\C-k] 'my-kill-line-or-block)

关于emacs - Defadvice for C-k in emacs for js-mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538107/

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