2

地図の言い方はないかと思っていました

sYから2つの異なるコマンド。

私は、sYがより低い分割ウィンドウで端末を起動し、次にbashを起動してから、フォーカスを新しいウィンドウに変更することを望んでいたので、

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

次に、同じコマンドでシェルプロセスを終了し、下部のウィンドウを分割解除します。lispでこれを行う方法はありますが、それについて間違っていない限り、lispはemacslispプログラミングで状態を保持していないようです。

4

1 に答える 1

2

両方を行う新しい関数を作成し、それをバインドしてみませんか?

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)
于 2013-02-08T21:16:06.213 に答える