我想在git-messenger
下使用apply prefix arg的git-link
的函数。
方案1
下面这样定义后,M-x git-link-commit--C-u
是可以使用的,但是无法在git-messenger
内使用 (复现 M-x git-messenger:popup-message
→ o
)。
(defmacro call-function--with-prefix-arg (func &rest arglist)
"defmacro to create functions call with prefix arg"
`(defun ,(intern (format "%S--C-u" func)) ,arglist
(interactive)
(let ((current-prefix-arg '(4)))
(call-interactively ',func))))
;; git-link
(call-function--with-prefix-arg git-link-commit)
(define-key git-messenger-map (kbd "o") 'git-link-commit--C-u)
(setq git-messenger:func-prompt (cons '(git-link-commit--C-u . "Browse Remote") git-messenger:func-prompt ))
方案2
但是我这样定义git-link-commit
的函数,在git-messenger
下使用就行 spacemacs-config/funcs.el at master · ztlevi/spacemacs-config · GitHub 。这种我是直接把C-u
加在函数体里了。
(define-key git-messenger-map (kbd "o") 'my-git-link-commit)
(setq git-messenger:func-prompt (cons '(my-git-link-commit . "Browse Remote") git-messenger:func-prompt ))
求教如何解决这个问题,能够让第一种方式正常使用。
你的 my-git-link-commit
还改了 git-link-commit
中获得 commit
的获取方式,所以方案 1 无法工作(更准确地说,估计会提示 “Point is not on a commit hash”)可能是理所当然的。
1 个赞