我想知道是否有一种方法可以说映射
s-Y转换为两个不同的命令。
我想我想让s-Y在一个较低的拆分窗口中打开终端,然后启动bash,然后将焦点更改为新窗口,这样
(defun bash-window ()
(interactive)
(split-window-below)
(other-window 1)
(shell)
)
然后,使用相同的命令终止shell进程,并取消拆分下部窗口。有没有一种方法可以用lisp做到这一点,在emacs-lisp编程中,lisp似乎不保持状态。。。。除非我不正确。
为什么不写一个同时做这两件事的新函数,然后绑定它呢?
Emacs Lisp(以及大多数Lisp)确实有状态,你只需要知道在哪里可以找到它。(这是CLisp与纯粹功能性的最大区别。)
例如,
(setq bash-window-active nil)
(defun bash-window nil
(interactive)
(if bash-window-active
(function-to-reverse-those-performed-below)
(progn
(split-window-below)
(other-window 1)
(shell)
(setq bash-window-active t)))
(global-set-key "C-cb" 'bash-window)