雑記 - emacs Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!mewの中でのサーチ
Ctrl + r とかすると、インクリメンタルサーチ。そこで検索キーワードを入力する前に[Enter]すると、通常のサーチになって、日本語での検索も可能になる。

!サーチ
MIGEMOという便利な物があると N くんから聞く。

!色
色付けが鬱陶しい。識別方法として色を使う利便性は理解できるが、色使いが悪いと逆に視認性が良くない。ということで、色を off にしたい。

vine3.x の場合、.emacs.el の 47 行目 .emacs-faces.el を呼び出しているところをコメントにすると、かなり幸せになれる。(mode によって色が付けられたりする。例えば mew とか。)


あとは各 mode 毎に色付けしているところを弄れば良いはず。( mew の例を後述)

この他の安直な方法としては、
TERM=vt100 emacs -nw

!mew mode で色付けを消す
(setq mew-use-highlight-mark nil)
(setq mew-use-highlight-body nil)
(setq mew-use-highlight-url nil)
(setq mew-use-highlight-header nil)
てな具合に変数を設定すれば良い。例えば vine3.x なら、.mew.el の最後に上の行を付け加えれば良い。

!yc
とても便利な canna client ( http://www.ceres.dti.ne.jp/~knak/yc.html )

unix domain socket な cannaserver の場合、4.0.0 以上の yc を。

emacs -nw して使っていると、変換している途中(変換の文節を広げたとき)で
Wrong type argument: characterp, nil
となってしまいキー入力が全く効かない状態になることがある。
さて、これは何が悪いのやら。(要検証)

LANG 関連ではなさそう。フェンス幅より文節を広げる操作をした時に固まるっぽい?

!coding setting
Ctrl-x RET f utf-8
Ctrl-x RET t utf-8
Ctrl-x RET k utf-8

!emacs の dired
Vine3.x の .emacs.el を Vine4.x で使うと、dired で表示したファイルを開くことができない。.emacs.el を Vine4.x のものに差し替えるか、以下の 1行を .emacs.el に付け加えればよい。
(add-hook 'dired-mode-hook  '(lambda ()(setenv "LANG" "C")))

!色 2
上の方で記述したような方法で emacs の色づけを止める以外に、font-lock-mode を変更する手があるようだ。というか、こっちの方が真っ当な方法かもしれない。

font-lock とは編集しているテキストの構文に従って、様々な (font) face(文字表示のスタイル)を使って強調表示するもののようである。

というわけで、この font-lock-mode を off にしてしまえば、色づけも何もしなくなるというわけ。全面的に font-lock-mode を off にするのなら、.emacs に
(global-font-lock-mode 0)
とでも書いておけば良い。あぁ、plane で読み易い。

!face
定義されている face のリストは
M-x list-faces-display
とすればわかる。

!quail input method
nn で「ん」にするには
(setq quail-japanese-use-double-n t)

!emacs lisp
起動後の scratch バッファは lisp-interaction-mode 。
S式を記述し、行末で C-j するとその式を評価する。

一般に lisp-interaction-mode に入るには
M-x lisp-interaction-mode

lisp なファイルを読み込んで実行させるには、
M-x load-file
したあとに、ファイル名を指定すればよい。

!emacs23 で anthy-el
timeout 値が大きいせいで、変換の応答が悪い。
anthy-el を load した後に以下を加えておけば ok
(if (>= emacs-major-version 23)
   (setq anthy-accept-timeout 1))

!recenter
何故か C-l すると font-lock-mode を enable した上で recenter することに気付く。文字への装飾は不要なので非常に塩梅が悪い。

原因がすぐに分からなかったので、手っ取り早く .emacs の末尾に以下を追記
(defun my-recenter ()
   (interactive)
   (recenter))
(global-set-key "\C-l" 'my-recenter)
時間ができたら、.emacs を見直してみよう

!M-=
region 選択した後、M-= で文字数カウント

!起動時のメッセージを消したり、空の scratch buffer にしたり
emacs 起動時に、Welcome to GNU Emacs... というメッセージが出るのを抑制するには
(setq inhibit-startup-message t)
空っぽの scratch buffer にするには
(setq initial-scratch-message nil)
それぞれ .emacs 辺りに書いておけばよい

!Symbol's value as variable is void: last-command-char
何ぞ symbol を入力しようとしたときに 'Symbol's value as variable is void: last-command-char' とか言われたら、 last-command-char を last-command-event に書き換えればよい。これは emacs24.x で last-command-char が obsolete になったため。sed でも使ってエイヤッと置換するのが楽ですね。

!ファイルの文字コードを明示的に指定するには
何で間違えるのかよくわからないが、時折文字コード判別を間違えてしまうことがある。(本来なら誤認識自体を抑制すべきだが、とりあえずそれはさておくとして、、)先頭行に次のような文字列を入れておけば emacs が coding をそれを読んで開いてくれる。
-*- coding: utf-8 -*-
例えば C の source なら
/* -*- coding: utf-8 -*- */
HTML ファイルなら
<!-- -*- coding: utf-8 -*- -->
のような行を加えておけばよい

参照:[[emacs manual: Specifying a File's Coding System|https://www.gnu.org/software/emacs/manual/html_node/emacs/Specify-Coding.html#Specify-Coding]]

!タイムスタンプの挿入
テキストファイル内に修正時のタイムスタンプを入れるには、.emacs に
(add-hook 'write-file-hooks 'time-stamp)
を書いておき、テキストファイルの 8行目までに
Time-stamp: < >
のように入力しておけばよい。保存時に < > の間に保存時刻&ユーザ名を入れてくれる。

!あらかじめ文字コードを指定してファイルを開くには
文字コードの誤認識に関連して。あらかじめ文字コードを指定しておいて、ファイルを開く方法について。emacs 起動後に、次のように
C-x Enter c
を入れると文字コードを聞いてくるので
utf-8 Enter
のようにすれば、以下のコマンドはその文字コードで実行することになるので、続けて
Ctrl-x Ctrl-f
として開きたいファイルを選べば良い
まとめて書けば
C-x Enter c '文字コード' Enter Ctrl-x Ctrl-f

!開いたファイルを別の文字コードで再読込するには
ある utf-8 ファイルを開いたら SJIS と誤認識され文字化けしているとしよう。この場合は次のように
Ctrl-x Enter r '文字コード' utf-8 Enter
とすると、当該ファイルから revert する?と聞いてくるので yes とすれば指定した文字コードで utf-8 で読み込み直してくれる。

!文字コードの指定
文字コード誤認識の話のつづき。通常、日本語環境を指定する場合、
(set-language-environment "Japanese")
に加えて、default の文字コードを指定するために
(set-default-coding-systems 'utf-8)                                            
とするか、
(prefer-coding-system 'utf-8)
とする方法がある。(この2つの指定の違いが何なのかはきちんと調べてない。)

読み込み時の文字コード認識に関していえば、prefer-coding-system の方が良いようだ。set-default-coding-systems では失敗することがある。