【xyzzy】設定ファイル .xyzzyに入れておきたいlisp設定 10個+α

ファイル名: -

カスタマイズ

;delete系で マウス等で選択したセレクションはキャンセルされずに windows/秀丸ライクに操作したい。
(global-set-key #\C-d 'delete-or-unshift-selection)
(global-set-key #\C-h 'delete-backward-char-or-selection)
(global-set-key  #\DEL 'delete-or-unshift-selection)

; セレクションを上書きして貼り付け
; by Tetsuya Kamei  [xyzzy:02641]
;セレクションに対して C-y で上書き貼り付け
(defun yank-overwrite (prefix &optional (arg 0))
  (interactive "*P\np")
  (when (pre-selection-p)
    (delete-region (selection-mark) (selection-point))
    (stop-selection))
  (setq *this-command* 'yank)
  (yank prefix arg))
(global-set-key #\C-y 'yank-overwrite)

;MLからパクリだったと思う。。。
(defun delete-or-unshift-selection ()
  (interactive)
  (if (and (get-selection-type)
           (looking-at "\t"))
      (unshift-selection)
    (delete-char-or-selection)))
(global-set-key '(#\C-x #\d) 'delete-current-buffer-force)
(defun delete-current-buffer-force ()
 (interactive)
 "カレントバッファーを有無をいわさず消去"
 (if (selected-buffer)
     (delete-buffer (selected-buffer))
    (message "失敗・・(^^;)>")))

行頭でのKill Line動作改良

;移動系の関数
;(global-set-key #\C-a #'(lambda () (interactive) (goto-virtual-bol)))
(global-set-key #\C-e 'goto-virtual-eol2) 
(global-set-key #\M-a 'beginning-of-line) 
(global-set-key #\M-e 'end-of-line)

;基本は(goto-virtual-bol)のように前に行くが、
;0カラム目であればインデントの空白をスキップして nカラム目の文字の先頭に移動する。
;MSの VisualStudioや ExcelのVBA環境のように
(defun goto-virtual-indent-bol ()
  (interactive)
  (if (= 0 (current-column))
      (scan-buffer "[^\n \t ]" :regexp t)
    (goto-virtual-bol)))
(global-set-key #\C-a 'goto-virtual-indent-bol)

;折り返しの時は、見た目の最後で良い。
(defun goto-virtual-eol2 () 
  "goto-virtual-eol で 後ろに1文字ずらす"
  (interactive) 
  (let ((realpt)(vrtpt)(nowpt)) 
      (setq nowpt (point))
      (goto-virtual-eol)
      (setq vrtpt (point))
      (goto-eol) 
      (setq realpt (point))
    (unless (= realpt vrtpt) 
      (goto-char nowpt) 
      (goto-virtual-eol)
      (forward-char) ) ) )
;MSのOffice likeに selection範囲毎を上下に移動
;http://blue.ribbon.to/~aotororo/prog/200310.html#d08_t4   めざなでさん
;; 行セレクションを上下に移動
(defun transpose-selection-down (&optional (n 1))
  "行セレクションを n 行下に移動"
  (interactive "*p")
  (let ((pre-selection-type (get-selection-type))
        (column (current-column)))
    (unless pre-selection-type
      (goto-bol)
      (start-selection 1 t)
      (or (forward-line 1)
          (progn (goto-eol) (insert #\LFD))))
    (selection-start-end (beg end)
      (when (and (goto-char end) (bolp)
                 (goto-char beg) (bolp))
        (insert (prog1
                    (buffer-substring beg end)
                  (delete-region beg end)
                  (forward-line n)
                  (and (minusp (1- (get-window-line)))
                       (recenter 1))
                  (when pre-selection-type
                    (start-selection pre-selection-type t))))
        (unless pre-selection-type
          (forward-line -1)
          (goto-column column))))))
(defun transpose-selection-up (&optional (n 1))
  "行セレクションを n 行上に移動"
  (interactive "*p")
  (transpose-selection-down (- n)))
(global-set-key #\S-M-Down 'transpose-selection-down)
(global-set-key #\S-M-Up 'transpose-selection-up)

;M-S-左右で シフト、アンシフト(オフィスや秀丸風)
(global-set-key #\M-S-Left 'unshift-selection)
(global-set-key #\M-S-Right 'shift-selection)
;マウスの 戻る進むボタンで バッファー移動
(global-set-key #\XBtn1Down 'previous-buffer)
(global-set-key #\XBtn2Down 'next-buffer)

;Office likeに セレクション範囲をD&D移動
; 実装済み ;共通設定 さまざま D&D編集する にチェック。
; Ctrl押しながらだと 移動ではなく、セレクション選択したままコピーも出来ます。

;MSのExcel likeに バッファーを移動するキーバインディング設定
(set-extended-key-translate-table exkey-C-tab #\C-PageDown)
(global-set-key #\C-PageDown 'next-buffer)
(set-extended-key-translate-table exkey-S-C-tab #\C-PageUp)
(global-set-key #\C-PageUp 'previous-buffer)

;ノートパソコンだとちょっときついので C-F11,F12でやる場合はこちら
(setq *next-buffer-in-tab-order* t)
(setq *previous-buffer-in-tab-order* t)
(global-set-key #\C-F11 'previous-buffer)
(global-set-key #\C-F12 'next-buffer)

mini lisp(機能)

;;scratch の保存
;; *scratch* を終了時に保存
;; wikiより
(add-hook '*kill-xyzzy-hook*
          #'(lambda ()
              (save-excursion
                (set-buffer (find-buffer "*scratch*"))
                (write-file "~/scratch"))))

;; *scratch* を起動時にロード
(add-hook '*post-startup-hook*
          #'(lambda ()
              (save-excursion
                (set-buffer (find-buffer "*scratch*"))
                (insert-file-contents "~/scratch" t))))
;注意!:このままだと、バッファが消えたとき復活ができないし、Undoも無いので消えるリスクは高いです。
;       また複数のxyzzyを立ち上げている時注意!! 適度にファイルに保存しておきましょう。

;M-xを実行した後 そのコマンドにショートカットがあれば表示する

(defun lookup-key-from-command (command)
 (or (find command  (cdr (local-keymap))  :key 'cdr)
	 (find command  (cdr (minor-mode-map))  :key 'cdr)
     (let ((key)(ret))
       (setq key (position command *global-keymap* ))
       (when key (setq ret (cons (*keymap-index-char  key) (elt *global-keymap*  key)))        )
       ret)))
(defvar *print-short-cut-after-exe-com* t)
(defvar *xyzzy-language* "JAPANESE")

;標準Lispを上書き
(defun execute-extended-command (command &optional raw arg)
  (interactive "0CM-x: \nP\np")
  (let ((*prefix-args* raw)
	(*prefix-value* arg))
    (setq *last-complex-command* nil)
    (setq *this-command* command)
    (command-execute command (and (interactive-p)
				  (not *executing-macro*)
				  #'ed::record-complex-command))
;ここから上書き
    (when *print-short-cut-after-exe-com*
	(let ((key))
;	  (setq key (lookup-key-from-command (find-symbol command)))
	  (setq key (lookup-key-from-command command))

	 (when key
      (if (string-equal *xyzzy-language* "JAPANESE")
          (minibuffer-message "今 入れたコマンド '~A' は ~S というショートカットキーがあるよ" command (car key))
        (minibuffer-message "You can run the command '~A' with ~S" command (car key)))
      (sit-for 3))))))

ちょっとした設定

;メニューで表示する文字列の長さをちょっと長めに
(setq *menu-display-length* 80)

;lisp では :も syntaxの範疇にする。
(set-syntax-symbol ed::*lisp-mode-syntax-table* #\:)

;  find-fileでC-x C-v でファイル名ももらう (Ver.0.0.0.90 以降)
(setq *find-other-file-requires-file-name* t)
;右上に バツボタン をつけて、マウスでバッファを閉じられるようにする
;Version 0.2.1.180
(add-hook '*init-app-menus-hook*
  #'(lambda ()
    (add-menu-item *app-menu* 'close-box :close-box
      #'kill-selected-buffer)))

見出しや文字列を色つけ

;Version 0.2.2.215 で改行文字などを表示させる方法

(setq-default display-newline-char #\downwards_arrow_with_tip_leftwards)
(setq-default display-first-tab-char #\rightwards_arrow_to_bar)
(setq-default display-rest-tab-char t)
(setq-default display-rest-tab-char #\.)
Delicious にシェア
Digg にシェア
reddit にシェア
LinkedIn にシェア
LINEで送る
email this
Pocket

2,040 views.



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です