最終更新日: 2016-06-26 日 01:23
ホーム | 文書トップ | 目次

emacs lisp

Table of Contents

マニュアル(日本語訳)

関数

setq

  • 変数に値を代入する
  • (厳密には関数ではなく、特殊形式: special form らしい)

car

  • リストの先頭要素を示す

cdr

  • リストの残り(リストの最初の要素に続くもの)を示す

カーソル位置関連

(point)
(what-cursor-position)
(line-number-at-pos)
(current-column)

事例

バッファ名を変数に格納

(setq current-buffer-name (car (split-string (buffer-name) "<")))

カレントバッファを書き込み可能にし開きなおす

(defun write-enable-file ()
  "chmod +w and kill-buffer and find-file"
  (interactive)
  (unless (equal buffer-file-name nil)
    (setq target-buffer-file-name (buffer-file-name))
    (setq target-point (point))
    (setq target-window-start (window-start (get-buffer-window)))
    (chmod buffer-file-name 755)
    (kill-buffer (buffer-name))
    (find-file target-buffer-file-name)
    (goto-char target-point)
    (set-window-start (get-buffer-window) target-window-start)
    )
  )
(define-key ctl-x-map "w" 'write-enable-file)

カレントバッファを開きなおす(kill-bufferしfind-fileする)

(defun kill-buffer-and-find-file ()
  "kill-buffer and find-file"

  上記と同じ、(chmod buffer-file-name 755) のみ除き、他は同じ

  )

メモ

  • ほとんどの基本関数は、呼び出すときにすべての引数を評価します。引数すべてを評価しない基本関数をスペシャルフォーム(special form)と呼びます
  • 関数(function)という用語で、 LispやCで書かれたEmacsのすべての関数を指します。 Lispで書いた関数に関しては、See section 関数型。
  • 基本関数には入力構文はなく、サブルーティン名を含むハッシュ記法で表示します。
(symbol-function 'car)          ; シンボルの関数セルを参照する
     => #<subr car>
(subrp (symbol-function 'car))  ; 基本関数か?
     => t                       ; そのとおり
(defun hoge-test-func-prev1 ()
""
(interactive)
(prog1
  (save-current-buffer
    (save-selected-window
      (with-current-buffer (get-buffer-create "*hoge-test*"))
#      (setq buf (get-buffer "*hoge-test*"))
#      (setq win (get-buffer-window buf))
#      (set-buffer buf)
#      (select-window win)
      (pop-to-buffer (get-buffer "*hoge-test*"))
      (insert "test")
))))


(defun hoge-test-func ()
""
(interactive)
(prog1
  (save-current-buffer
    (save-selected-window
#      (start-process "my-process" "*hoge-test*" "ls" "" (buffer-name))
      (start-process-shell-command "my-process" "*hoge-test*" "rm" "-i" "tmp.txt")
      (pop-to-buffer "*hoge-test*")
      (setq ans (read-from-minibuffer "よろしいですか?[y on n]:") )
      (process-send-string "*hoge-test*" (concat ans "\n"))
      (if (string-equal ans "y") (message "削除しました") (message "削除しませんでした"))

;(if (eq (process-status (get-process "my-process")) 'exit)
#    (kill-buffer "*hoge-test*"))

))))

参考

ホーム | 文書トップ | 目次
Created by Emacs 25.2.1 (Org mode 8.2.10)