[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
関数や使い方の羅列です.単なる備忘録なので私以外は役に立たないでしょう.そのうち 適当に追加して整理するかもしれませんが,しばらくはメモのままです.
文字の入力.
(insert "test") (insert (concat "test" vars)) |
書式付き出力は format を使う.時間については format-time-string を使う.
今のバッファ,今の場所は
(setq cbuf (current-buffer)) (setq cpoint (point)) |
とする.後は
(set-buffer cbuf) (goto-char cpoint) |
とすればよい.関数の前後でカーソル位置を保存するだけなら,全体を save-excursion でくくれば,関数終了後,カーソル位置を戻してくれる.
文字列検索.
(if (re-search-forward "abc\\(test\\)" nil t) (setq match-string (buffer-substring (match-beginning 1) (match-end 1)))) |
が基本. buffer-substring で一致項目を切り出し.こうすると第 1 グループ.つまり test だけが切り出せる. 0 なら全部.ただし, Font-lock の情報も match-string に 代入される.どこかへ insert で入力するだけなら問題ないが,そうでない場合 (変数に入 れて処理をするなどの場合) は, buffer-substring-no-properties で文字だけを切り出 す.
re-search-forward は検索に一致するとカーソルが一致箇所の一番後ろへ移動する.
行頭または行末までの検索は
(if (re-search-forward "^\\(@node\\|@chapter\\|@[sub]*section\\)" (line-end-position) t) |
のように line-end-position や line-beginning-position を用いる.
re-search-backward の逆
save-excursion で処理を括ると,カーソルの位置を戻してくれる.
save-で始まるものには,分割状態を保存やナローイングを保存するものもある.
(setq my-windows-conf (current-window-configuration))) |
として保存して,
(set-window-configuration my-windows-conf) |
で復元する。
ell を見てあまりに簡単にできるので驚いたもの.
http://www.meadowy.org/meadow/dists/1.99/setup.ini をダウンロードするサンプル
(with-temp-buffer (let* (local-buf fpos epos (host "www.meadowy.org") (path "meadow/dists/1.99/setup.ini") (coding-system-for-read 'binary) (coding-system-for-write 'binary) (http (open-network-stream "elisp-retrieval-process" ;; プロセス名 "*elisp-buffer*" ;; バッファ名 host 80)) ;; ポート (pbuf (process-buffer http))) ;; プロセス用バッファ作成 (process-send-string http (concat "GET " (concat "http://" host "/") "/" path " HTTP/1.0\r\n\r\n")))) |
後は *elisp-buffer* をいじればいい.
(let ((coding-system-for-read 'euc-japan) (coding-system-for-write 'euc-japan)) |
として, find-file-noselect などで開く
メジャーモードは必ず
(setq major-mode 'emacs-lisp-mode)
(setq mode-name "Emacs-Lisp")
|
をセットする.これらはバッファローカルなので,
(if (string= major-mode 'texinfo-mode)
|
のようにすると,モードにより条件分けを行うことができる. mode-name はユーザがい じれるのであてにするべきではない.
エクスプローラで開こうとしても
(start-process "explorer" "diredex" "explorer.exe" dir) |
では蹴られてしまう.
(start-process "explorer" "diredex" "explorer.exe" (unix-to-dos-filename dir)) |
として,/ を \ に変換しないといけない.
行ならば (sort-lines nil REGION-START REGION-END) で可能.大文字,小文字は区別さ れる.必要によって upcase を利用するなり工夫を行う.
inhibit-read-only という変数の値が t だと,
(put-text-property (match-beginning 1) (match-end 1) 'read-only t)) |
という風に,バッファの一部を read-only にできる.これが nil だと, 1 個目はでき るんだが, 2 個目以降は バッファが read-only であるというエラーが出てしまう.そ のため,個別に read-only を設定したい時には
(let ((inhibit-read-only t)) |
という風にローカル変数とすればよい
バッファ全体の read-only は
(setq buffer-read-only t) |
とする.バッファが read-only はどうかもこの変数を調べればいい
ミニバッファから文字を受け取ることは read-from-minibuffer で可能.引数は以下.オ プション引数である, INHERIT-INPUT-METHOD を t にすると,ミニバッファに移動した 際, IME の状態を維持してくれる. nil ならオフになる
read-from-minibuffer PROMPT-STRING &optional INITIAL-CONTENTS KEYMAP READ HIST DEFAULT INHERIT-INPUT-METHOD |
(with-temp-buffer (insert-file-contents-literally filename) ...) |
とすると,一時バッファが作成される.そのため,そこへファイルの内容や文字をコピー しておき,置換などを行うと楽. with-temp-buffer は自動で一時バッファを消してくれ るので,後処理も気にしなくていい.
環境変数のリスト. let で束縛すると,その部分だけ環境変数を変えることができる.
M-x のヒストリは extended-command-history に入ってるし,デフォルトのヒストリは minibuffer-history に入っている.しかし,場合によって使い分けるのは面倒なので, minibuffer-history-variable を使う.
(let ((lst (symbol-value minibuffer-history-variable)))
...
|
としてやれば,その場に応じたヒストリが得られる.
をしたくなる時がある. (emacs-version) とコメント部に書いておいて,バージョンを書 き変えて欲しいなど.
buffer-substring-no-properties で読み取って, (funcall string) としても駄目.
(funcall (read string)) |
とする.
-- Function: read &optional STREAM
この関数は STREAM から 1 つの Lisp 式のテキスト表現を読み取り、それを Lisp
オブジェクトとして返す。これは基本的な Lisp 入力関数である。
meadow -batch -l "~/mylisp/meadowmemo-index.el"
とすれば, Meadow をコマンドラインで実行して処理を行うことができる.ただし,必ず ファイルの保存を関数内で行うこと.
(easy-menu-define diff-mode-menu diff-mode-map "Menu for `diff-mode'." '("Diff" ["Jump to Source" diff-goto-source t] ["Apply hunk" diff-apply-hunk t] ["Apply diff with Ediff" diff-ediff-patch t] ["-----" nil nil] ["Reverse direction" diff-reverse-direction t] ["Context -> Unified" diff-context->unified t] ["Unified -> Context" diff-unified->context t] )) |
と定義しておき
(popup-menu diff-mode-menu) |
でポップアップがマウスカーソル付近にでる.関数を呼び出すだけなら簡単にできそう. たまに使うような関数を適当に登録しておき,右クリックで呼び出せるようにしておいて もいいかも.
(point) |
で現在の位置を得ることができる.しかし,これは絶対値となる (最初から 100 文字目など) .
そのため,ポイント位置よりも前のテキストを追加/削除すると,思った位置とは違う位 置になってしまう.
そこで,以下の関数を使う.
(copy-marker (point)) (point-max-marker) (point-min-marker) |
使い方は同じ.
(defvar test-point 0) (defun test (&optional arg) (interactive "P") (if arg (goto-char test-point) (setq test-point (copy-marker (point))))) |
M-x testで現在位置を保存.C-u M-x testで保存した場所へ移動.
設定の中で,任意のディレクトリの中を検索してインデックスをした上で読み込みたいと か,そういう風に普段は使わないんだけど,時として使いたい関数などがあります.
別にその関数が軽いものであれば,いつでも読み込んで実行すればいいのですが,そうい う関数が重いというのもよくあることです.
そこで,
(if (y-or-n-p-with-timeout "Load filecache?" 5 nil) (load ".loadfilecache")) |
のようにします.
まず, y-or-n-p-with-timeout が実行されます.すると,ミニバッファには
Load filecache?(y or n)
と表示されます.ここで,y を入力すると,続く関数(ここでは,load ".loadfilecache"が実行されます)
もしも,n と入力するか,あるいは,5秒放置すると,この関数は実行されません.
この関数は特に重い関数を普段は使いたくないんだけど,ある特定の時には使いたいなん て時に便利です.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |