2 時半起床.
昼まで数学をやる.
午後から出かける. 水彩絵具が何色かと 3B の鉛筆を使い切ったのと, 極細の絵筆が必要になったのだ.
あと紙も.
絵を描くために必要なものは, 品揃えがいいので新宿の世界堂で買っている.
毎回買い物をすると割引券をくれるのも嬉しい.
外出はやはり緊張と不安を伴うが, 今日はそれほど苦しくはなかった. 頓服は飲んだが.
買い物を終えて外に出たら空が暗くなっていた.
台風が来ている.
予報では夜から天気が荒れると言っていた.
帰宅して夕食.
豆腐と大根と油揚げの味噌汁, 鯵の開き, 冷奴, 納豆と卵かけご飯.
夕方から少し気分の落ち込みがあったが昨日一昨日ほどではない.
鬱の波はひとまず回復したかな.
2017年08月07日
Emacs: Control-' に delete-other-windows 関数を割り当てる
Emacs であるバッファーを編集しているとき, そのバッファーだけをフレームに表示させたいことは多い.
そういうときはそのバッファー内にカーソルを置いた状態で delete-other-windows という関数を呼び出せばよい.
カーソルがある編集中のバッファーがフラーム全体に表示される.
delete-other-windows 関数は "
体調の回復に伴い Emacs を長時間使うようになってきたらこの関数を頻繁に呼び出すことに気がついた.
指が疲れるので押しやすい
このキーバインディングを $HOME/.emacs.d/init.el 内に書くのだが,
と書くと "
検索してみたら Qiita の knakagawa-c5 さん の投稿 EmacsでASCII以外の文字を含むキーバインドを定義する というところに対処方法が書いてあった. 助かった.
つまり非 ASCII 文字 (今回の場合
Emacs 25.1 のマニュアルに次のような記述 (†) がある.
キーシーケンスがファンクションキー, マウスボタンイベントあるいは C-= (Control =) や H-a (Hyper a) などの非 ASCII 文字を含むとき, そのキーシーケンスを指定するためにはベクターを使用する.
ここで書かれているベクター (vector) というのはキーシーケンスをブラケット('
結局, $HOME/.emacs.d/init.el 内に
のように追加してとりあえず目的の動作を得た.
実際に Emacs を使っていく上で, こういったキーバインディングに関する問題の奥は深い.
たとえば
あるモードが
†: この記述は ``GNU Emacs Manual 17th Edition, Updated for Emacs Version 25.1.'' の 33.3.6 Rebinding Keys in Your Init File にある.
When the key sequence includes function keys or mouse button events, or non-ASCII
characters such as C-= or H-a, you can use a vector to specify the key sequence.
33.4.5 Non-ASCII Characters in Init Files には次のような記述もある.
To bind non-ASCII keys, you must use a vector (see Section 33.3.6 [Init Rebinding],
page 449). The string syntax cannot be used, since the non-ASCII characters will be interpreted
as meta keys. For instance:
(global-set-key [?char] 'some-function)
そういうときはそのバッファー内にカーソルを置いた状態で delete-other-windows という関数を呼び出せばよい.
カーソルがある編集中のバッファーがフラーム全体に表示される.
delete-other-windows 関数は "
C-x 1
" にバインドされている.体調の回復に伴い Emacs を長時間使うようになってきたらこの関数を頻繁に呼び出すことに気がついた.
C-x 1
は C-x
の入力と 1
の入力という 2 回の操作を必要とする.指が疲れるので押しやすい
C-'
にも delete-other-windows を割り当てることにした.このキーバインディングを $HOME/.emacs.d/init.el 内に書くのだが,
(define-key global-map "C-'" 'delete-other-windows)
と書くと "
error: Invalid modifier in string
" というエラーメッセージが表示されてキーバインディングに失敗する.検索してみたら Qiita の knakagawa-c5 さん の投稿 EmacsでASCII以外の文字を含むキーバインドを定義する というところに対処方法が書いてあった. 助かった.
つまり非 ASCII 文字 (今回の場合
'
) を含んだキーバインドを行うための記述を正しく行う必要がある.Emacs 25.1 のマニュアルに次のような記述 (†) がある.
キーシーケンスがファンクションキー, マウスボタンイベントあるいは C-= (Control =) や H-a (Hyper a) などの非 ASCII 文字を含むとき, そのキーシーケンスを指定するためにはベクターを使用する.
ここで書かれているベクター (vector) というのはキーシーケンスをブラケット('
[
' と ']
'で囲んだ記法である. 非 ASCII 文字はブラケット内で '?
' に続けて書くことにより指定する. したがって今回キーバインドを行いたい C-'
はベクター記法により, [?C-\']
と記述される.結局, $HOME/.emacs.d/init.el 内に
(define-key global-map [?\C-\'] 'delete-other-windows)
のように追加してとりあえず目的の動作を得た.
実際に Emacs を使っていく上で, こういったキーバインディングに関する問題の奥は深い.
たとえば
C-'
に delete-other-windows 関数を割り当てる件について上記のように対処したとしても完全ではない.あるモードが
C-'
をそのモードのある機能に割り当てて上書きされてしまう可能性もある.†: この記述は ``GNU Emacs Manual 17th Edition, Updated for Emacs Version 25.1.'' の 33.3.6 Rebinding Keys in Your Init File にある.
When the key sequence includes function keys or mouse button events, or non-ASCII
characters such as C-= or H-a, you can use a vector to specify the key sequence.
33.4.5 Non-ASCII Characters in Init Files には次のような記述もある.
To bind non-ASCII keys, you must use a vector (see Section 33.3.6 [Init Rebinding],
page 449). The string syntax cannot be used, since the non-ASCII characters will be interpreted
as meta keys. For instance:
(global-set-key [?char] 'some-function)