hack のためのネタ帳, etc,,,

Common Lisp ベースで emacs ライクな Windows 用テキストエディタ

mode の自作関連

mode

最初にやる設定

SendTo

以下の場所に xyzyy.exe, xyzzycli.exe のショートカットを作成しておく
XP 以前: C:\Documents and Settings\username\SendTo\
Vista 以降: C:\Users\username\AppData\Roming\Microsoft\Windows\SendTo\

上記の場所は explorer で 「shell:sendto」を開けば簡単。

設定 Tips

site-lisp/siteinit.l に設定したときには xyzzy.wxp を消し xyzzy 再起動することで再生成する必要がある。
netinstaller でパッケージをインストールした後も再生成する必要あるかも?

プログラミング Tips

NetInstaller 入れてへなちょこリファレンスの chm 版をインストールしとくと、M-x reference-show でリファレンスを参照できる。

試行錯誤しながら書く場合は、*scratch* バッファで、C-j or C-RET で逐次評価できる。
.l ファイルの編集時に M-x lisp-interaction-mode を適用しても同様のことができる。

キー割当

引数付きの関数を引数決め打ちでキー割当する場合は lambda を使うと良い。
interactive の指定も忘れずに。
例えば、C-1 で <h1> タグをカーソル位置に挿入したい場合、以下のように書ける。
(global-set-key '(#\C-1) #'(lambda () (interactive "*p") (insert "<h1>")))

インデントの TAB/SPACE 切り替え

indent-tabs-mode 変数の値を切り替えれば良い。具体的には以下のような設定をしておけば使い易い。
;;; C-TAB でインデントの TAB/SPACE 切り替え
(set-extended-key-translate-table exkey-C-tab #\F24) ; C-TAB を F24 キーに割り当て
(global-set-key '(#\F24) #'(lambda () (interactive "*p") (setq indent-tabs-mode (not indent-tabs-mode))))

minibuffer で履歴を利用する

interactive にパラメータとして :historyN を与える。:historyN に続けて ed::minibuffer-history-variable プロパティに履歴保存用の変数名(以下の例では inserttest-history)を与えたシンボル(以下の例では 'inserttest)を渡す。履歴保存用の変数を define-history-variable で定義すると、xyzzy インストールディレクトリの user ディレクトリ以下にある .xyzzy.history に保存され次回起動時に履歴を読み込んでくれる。正しく設定できていないと *minibuffer-default-history* 変数の内容が履歴として利用される。
(setq inserttest-history nil)                     ; 終了時に忘れさせたいならこちら
;(define-history-variable inserttest-history nil) ; 終了時に記憶させたいならこちら
(setf (get 'inserttest 'ed::minibuffer-history-variable) 'inserttest-history)
(defun inserttest (s)
  (interactive "*sinsert string: " :history0 'inserttest)
  (insert s))

文字コードを指定して開き直す

C-u C-x C-v だって。
参考:

narrow-to-region 時の領域外の色は Windows のシステムカラーの使用不可の項目

ファイル保存時の permission 保存

Cygwin 用にスクリプト書いたり、samba の共有ディレクトリのファイル編集する場合には
設定ファイルに以下のようにかいておくと幸せになれる模様。
(setq-default backup-by-copying t)
参考:

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます