先日のxyzzyの設定がさらに進み、完全に手になじんできた。Emacsとの互換性で言うと、以下も必要だった。特にヒストリの挙動はこうしないと使いづらいと思う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
; window stuff (define-key ctl-x-map #\3 'split-window-vertically) (define-key ctl-x-map '(#\5 #\f) 'find-file-other-window) (define-key ctl-x-map '(#\5 #\2) 'new-pseudo-frame) (define-key ctl-x-map '(#\5 #\0) 'delete-pseudo-frame) (define-key ctl-x-map '(#\5 #\o) 'next-pseudo-frame) (define-key ctl-x-map '(#\5 #\n) 'next-pseudo-frame) (define-key ctl-x-map '(#\5 #\p) 'previous-pseudo-frame) (defun kill-buffer-and-window () (interactive) (and (kill-buffer (selected-buffer)) (delete-window))) (define-key ctl-x-map '(#\4 #\0) 'kill-buffer-and-window) ; ミニバッファのヒストリの挙動 (define-key minibuffer-local-completion-map #\Up 'minibuffer-previous-line-or-history) (define-key minibuffer-local-completion-map #\Down 'minibuffer-next-line-or-history) (define-key minibuffer-local-completion-map #\C-p 'minibuffer-previous-line-or-history) (define-key minibuffer-local-completion-map #\C-n 'minibuffer-next-line-or-history) (define-key minibuffer-local-completion-map #\C-Up 'minibuffer-previous-line-or-search-history) (define-key minibuffer-local-completion-map #\C-Down 'minibuffer-next-line-or-search-history) |
そしてRPN電卓!Emacsにはmcalcというのがあるが、xyzzyにも移植されていたので、持ってきて設定を追加してみた。演算子を簡単に追加できるのがいいね。以下でクリップボードやキルリングとの間で数値を相互にコピペできる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
; RPN calculator (load-library "mcalc") (defun mcalc-copy (arglist) (let ((arg (nth 0 arglist))) (ed::kill-new (mcalc-format-string arg)) (message "Copied") (list arg))) (mcalc-add-function "w" 'mcalc-copy 1) (defun mcalc-paste (arglist) (let ((arg (parse-integer (nth 0 (ed::current-kill 0))))) (list arg))) (mcalc-add-function "y" 'mcalc-paste 0) (defun mcalc-copy-to-clipboard (arglist) (let ((arg (nth 0 arglist))) (copy-to-clipboard (mcalc-format-string arg)) (message "Copied to clipboard") (list arg))) (mcalc-add-function "c" 'mcalc-copy-to-clipboard 1) (defun mcalc-paste-from-clipboard (arglist) (let ((arg (parse-integer (get-clipboard-data)))) (list arg))) (mcalc-add-function "v" 'mcalc-paste-from-clipboard 0) |
同じことをEmacsのmcalcでやるにはこうする。Xのクリップボードの操作は面倒なのでやっていない。(kill-new
にあたるものがないようだ)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(require 'mcalc) (defun mcalc-copy (arglist) (let ((arg (nth 0 arglist))) (kill-new (mcalc-format-string arg)) (message "Copied") (list arg))) (mcalc-add-function "w" 'mcalc-copy 1) (defun mcalc-paste (arglist) (let ((arg (string-to-number (current-kill 0)))) (list arg))) (mcalc-add-function "y" 'mcalc-paste 0) |
んー、いい感じ。