Emacs使用相同的keymap命令

时间:2013-02-08 21:04:48

标签: emacs lisp

我想知道是否有办法说地图

s-Y到两个不同的命令。

我以为我想让s-Y在一个较低的分割窗口中调出终端, 然后调出bash然后将焦点更改为新窗口

(defun bash-window ()
  (interactive)  
  (split-window-below)
  (other-window 1)
  (shell)
  )

然后使用相同的命令终止shell进程并且拆分下部窗口是否有一种方法我可以用lisp执行此操作,看起来lisp在emacs lisp编程中不保持状态....除非我对此不正确

1 个答案:

答案 0 :(得分:2)

为什么不编写一个同时执行这两个操作的新函数,然后将其绑定?

Emacs Lisp(以及大多数Lisps)确实有状态,你只需要知道在哪里寻找它。 (这是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)