Spacemacs中org-cite/citar如何删除minibuffer内多余引用键?
解决org-cite+citar-embark+ivy下minibuffer退格退出问题
针对你遇到的退格直接退出minibuffer的问题,给你几个可行的解决方向:
自定义ivy退格行为,适配citar场景
因为ivy-backward-delete-char在检测到输入被判定为"为空"时(比如只剩分号时被ivy识别为空)会触发退出。你可以自定义函数覆盖原逻辑,在citar的引用输入minibuffer里,只有当真正输入为空(连分号都没有)时才允许退出:(defun my-ivy-backward-delete-char-citar (n) (interactive "p") (if (and (bound-and-true-p citar--minibuffer) (string-match-p "^;*$" (minibuffer-contents))) (ivy-backward-delete-char n) (backward-delete-char n))) (add-hook 'citar-minibuffer-setup-hook (lambda () (local-set-key (kbd "<backspace>") #'my-ivy-backward-delete-char-citar)))这段代码会在citar的minibuffer启动时,把退格键绑定到自定义函数,只有当输入只剩空分号时才用ivy的退格逻辑,否则用普通的退格删除字符。
直接在citar minibuffer里用普通退格
更简单的方式,直接在citar的minibuffer环境下把退格键绑定到原生的backward-delete-char,跳过ivy的特殊处理:(add-hook 'citar-minibuffer-setup-hook (lambda () (local-set-key (kbd "<backspace>") #'backward-delete-char)))这样退格就只会删除字符,不会触发ivy的退出逻辑,你可以正常删除
Citation2部分。用embark的条目编辑功能删除引用
既然你在用embark,其实可以不用直接退格:在minibuffer里,用embark-act(默认快捷键是C-.)选中你要删除的引用键条目,然后选择embark-delete或者对应的删除命令,直接移除该条目,这种方式更符合citar-embark的交互逻辑,也不会触发退出问题。
内容的提问来源于stack exchange,提问作者Lavin J Leung
相关产品推荐
相关产品推荐

