Emacsのメモとか気になったことをメモしておく。



  • make-keymap
    • (keymap [nil nil ... nil])
    • full-keymap
  • make-sparse-keymap
    • (keymap (TYPE1 . BINDING1) (TYPE2 . BINDING2) ...)
    • (keymap) というリスト

Emacsの変数・関数・スペシャルフォーム

defsubst

定義された関数は、 byte compile の際にインライン展開される。
11.9 インライン関数

defvar

Special Form: defvar symbol [value [doc-string]]:
シンボルをグローバル変数として使う

変数の書き換えは
(setq 定義した変数名 変更したい値)
で書き換える

(setq defvar-symbol t)
(setq defvar-symbol (not defvar-symbol))

defconst

シンボルを定数として扱う。

letとlet*の違い

(setq foo 1)
(let ((foo 2) (bar foo))
  ...)
上無理

(setq foo 1)
(let* ((foo 2) (bar foo))
    ...)
↑できる

つまり、(foo 2)を定義した後、(bar foo)でfooが評価されるかということ。
let*だとできる
Lisp 一夜漬け -- 1.Lisp の書き方

plist

plist は 「property list」 の略語で、「属性」を保持するためのリスト。変数のドキュメントはここに保存される

obarray

シンボルの配列。シンボル名からシンボルの実体に高速にアクセスするためのシンボル表。なんの略称かは、「object array」の略かも。
変数と関数の名前空間

getenv

  • (getenv "PATH") これでPATHのリストを返す

setenv

;;";"がデリミタになる?
(setenv "PATH"
  (concat
   "C:/cygwin/usr/local/bin" ";"
   "C:/cygwin/usr/bin" ";"
   "C:/cygwin/bin" ";"
   (getenv "PATH")
  )
)

Difference Between Emacs's “(getenv PATH)” and “exec-path”

37.4 ユーザーの識別 -GNU Emacs Lisp リファレンス-

fboundpとboundpの違い

fboundpは関数が束縛されているか。 (fboundp 'func)
boundpは変数が束縛されているか。 (boundp 'var)

define-minor-mode

interactive

`*'カレントバッファが読み出し専用であるとエラーを通知する。 「スペシャル」。
`@'このコマンドを起動したキー列の最初のマウスイベントが表すウィンドウを選択する。 「スペシャル」。
`a'関数名(つまり、fboundpを満たすシンボル)。 「既存」、「補完」、「プロンプト」。
`b'既存バッファの名前。 デフォルトでは、カレントバッファ(see 節 26. バッファ)の名前を使う。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`B'バッファ名。 バッファが既存である必要はない。 デフォルトでは、カレントバッファ以外の最近使ったバッファの名前を使う。 「補完」、「デフォルト」、「プロンプト」。
`c'文字。 カーソルはエコー領域には移動しない。 「プロンプト」。
`C'コマンド名(つまり、commandpを満たすシンボル)。 「既存」、「補完」、「プロンプト」。
`d'整数としてのポイント位置(see 節 29.1 ポイント)。 「入出力なし」。
`D'ディレクトリ名。 デフォルトは、カレントバッファのカレントデフォルトディレクトリ default-directory(see 節 37.3 オペレーティングシステム環境)。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`e'コマンドを起動したキー列の最初やつぎのマウスイベント。 より正確には、`e'はリストであるイベントを取得するので、 読者はリスト内のデータを調べられる。 see 節 20.5 入力イベント。 「入出力なし」。1つのコマンドの対話指定で複数回`e'を使える。 コマンドを起動したキー列がn個のリストであるイベントである場合、 n番目の`e'は、n番目のそのようなイベントを与える。 `e'では、 ファンクションキーやASCII文字などのリストでないイベントは数えない。
`f'既存ファイルの名前(see 節 24.8 ファイル名)。 デフォルトディレクトリはdefault-directory。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`F'ファイル名。 ファイルが既存である必要はない。 「補完」、「デフォルト」、「プロンプト」。
`i'無関係な引数。 このコードは、引数の値につねにnilを与える。 「入出力なし」。
`k'キー列(see 節 21.1 キーマップの用語)。 現在のキーマップにおいてコマンドがみつかる(あるいは未定義コマンド)まで イベントを読み続ける。 キー列引数は、文字列かベクトルとして表現される。 カーソルはエコー領域には移動しない。 「プロンプト」。この種の入力は、describe-keyやglobal-set-keyなどの コマンドで使われる。
`K'キー列であり、読者がその定義を変更することを意図している。 これは`k'と同様に動作するが、 キー列の最後の入力イベントに対しては、 未定義キーを定義済みのものに変換するために(必要なときに)普通使われる 変換処理を抑制する。
`m'整数としてのマーク位置。 「入出力なし」。
`M'カレントバッファの入力方式を用いてミニバッファで読んだ任意のテキスト。 文字列として返す (see 節 `入力方式' in GNU Emacs マニュアル)
`n'ミニバッファで読んだ数。 入力が数でないと、ユーザーに再入力を促す。 もし前置引数があってもそれは使わない。 「プロンプト」。
`N'数値前置引数。 前置引数がなければ、nで数を読む。 数を必要とする。 see 節 20.10 前置コマンド引数。 「プロンプト」。
`p'数値前置引数。 (この`p'は小文字。) 「入出力なし」。
`P'生の前置引数。 (この`P'は大文字。) 「入出力なし」。
`r'2つの数値引数としてのポイントとマーク。 小さいほうが先にくる。 これは、1つではなく2つの連続した引数を指定する唯一のコード文字。 「入出力なし」。
`s'ミニバッファで読んだ任意のテキスト。 文字列として返す(see 節 19.2 ミニバッファでのテキスト文字列の読み取り)。 C-jかRETで入力を終える。 (これらの文字を入力に含めるにはC-qを使う。) 「プロンプト」。
`S'ミニバッファで読んだ名前をインターンしたシンボル。 白文字で入力を終える。 (文字列に白文字を含めるにはC-qを使う。) (丸括弧や角括弧などの)通常はシンボルを終える他の文字は、 ここではシンボルを終端しない。 「プロンプト」。
`v'ユーザーオプションと宣言された変数 (つまり、述語user-variable-pを満たす)。 see 節 19.5.4 高レベルの補完関数。 「既存」、「補完」、「プロンプト」。
`x'入力構文で表されたLispオブジェクト。 C-jかRETで終える。 オブジェクトは評価しない。 see 節 19.3 ミニバッファでのLispオブジェクトの読み取り。 「プロンプト」。
`X'xのようにLispフォームを読むが、評価しその値がコマンドの引数になる。 「プロンプト」。
`z'コーディングシステム名(シンボル)。 ユーザーの入力が空であると、引数の値はnil。 see 節 32.10 コーディングシステム。 「補完」、「既存」、「プロンプト」。
`Z'このコマンドに前置引数を指定した場合にのみ、 コーディングシステム名(シンボル)。 前置引数がないと、`Z'は引数の値にnilを与える。 「補完」、「既存」、「プロンプト」。

@see 20.2.2 interactiveのコード文字

コメントをかく


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

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

フリーエリア




編集にはIDが必要です