我的意图是在按RET时为每个提示使用bm.el
Visible Bookmarks。我已经在一定程度上做到了这一点。如果缺少一些重要的问题,请在下面的代码中发表评论:除了将args传递给默认函数外,我不知道是否需要处理args。
当我在一个空的命令行上按RET时,我不想为该行添加书签。在将contol传递给默认函数eshell-send-input
之前,如何截获命令行内容?
(defun eshell-send-input-zAp (&optional use-region queue-p no-newline)
"eshell-send-input, customized to add bm-bookmark to prompt line"
(interactive)
(bm-bookmark-add)
(eshell-send-input use-region queue-p no-newline))
(add-hook 'eshell-mode-hook
#'(lambda ()
(define-key eshell-mode-map
[return]
'eshell-send-input-zAp)))
最佳答案
您的代码看起来不错。如果阅读eshell-send-input
的代码,您将看到如何获取当前输入。
另请阅读interactive参数。需要"P"
才能将用户区域传递给eshell-send-input
。
(defun eshell-send-input-zAp (&optional use-region queue-p no-newline)
"eshell-send-input, customized to add bm-bookmark to prompt line"
(interactive "*P")
(unless (string-equal (eshell-get-old-input use-region) "")
(bm-bookmark-add))
(eshell-send-input use-region queue-p no-newline))