emacs

ライブラリを遅延ロードするマクロ

特徴 引数一つで動く 複数の関数を同時に autoload にできる ライブラリのロード後に実行する式を書ける(eval-after-load を使う) ライブラリのパスを返す すでに autoload として定義されていれば、重複して定義しない quote して渡す(趣味) 基本的には…

term-mode で引数ありで任意のコマンドを実行

M-x term とかだと引数付けられないので。 (require 'term nil t) (defvar term-shell-command-history nil "History for `term-shell-command'") (defun term-shell-command (command &optional buffer-or-name) "Run COMMAND in terminal emulator. If BUF…

pasteboard.el

作りました。https://github.com/10sr/emacs-lisp/blob/master/pasteboard.elpbcopy および pbpaste と連携します。 (and (require 'pasteboard.el nil t) (turn-on-pasteboard)) tmux の内側で使う場合、 reattach-to-user-namespace が必要です。 通常、こ…

windowを任意の個数にだいたい等分するelisp

書きました。https://github.com/10sr/emacs-lisp/blob/master/divide-window.elrequireすると、 M-x divide-window-verticallyと M-x divide-window-horizontallyの2つが使えるようになります。 前置引数を用いることで、分割する数を指定できます。何も指…

git-command.el

作った。 いちいちキーバインド覚えてらんねーということで、対話的なシェルと同じ感覚で使えるようなものを目指した。 エディタを起動するようなコマンドは上手くいかない。https://github.com/10sr/emacs-lisp/blob/master/git-command.el設定は例えばこん…

diredの隠しファイル表示をトグルするminor-mode

つくった。以下をdot.emacsに追加。 (when (require 'dired-list-all-mode nil t) (setq dired-listing-switches "-lhFG") (add-hook 'dired-mode-hook (lambda () (define-key dired-mode-map "a" 'dired-list-all-mode) )))

書き込み禁止、挿入、上書きの状態に応じてmodelineの色を変えるライブラリ

つくった。使い方: (require 'set-modeline-color nil t) 設定: (setq set-modeline-color-color-alist '((readonly "blue" "white") (overwrite "red" "white") (insert nil nil))) この機能どこかで既に見た気がしなくもない。

ターミナルエミュレータで起動したemacsで、ターミナルのタイトルを変える

マウスがただひたすらにウザいし、フォント設定をターミナルエミュレータと共有できるのが便利なので、いつもemacsは-nw付きで起動してる。 (defun set-terminal-title (&rest args) "" (interactive "sString to set as title: ") (let ((tty (frame-parame…

ctl-x-mapがよく分からない

2012/4/7追記: (pc-selection-mode 1)があるとそれ以前のキー設定が元に戻ってしまうよう。 dot.emacsに (define-key ctl-x-map (kbd "C-x") nil) を書いても、C-x C-x の定義は C-x C-x runs the command exchange-point-and-mark-nomarkのままなのに、起…

global-hl-line-mode を term-mode で無効にする

めんどいので擬似的に (add-hook 'term-mode-hook (lambda () (set (make-local-variable 'hl-line-range-function) (lambda () '(0 . 0)))))

readonly時にモードラインの色を変える

2012/3/27 ライブラリ化した。 ここを参考に。 EmacsWiki: Changing Cursor Dynamically (defun my-set-mode-line-color-read-only () "" (let ((state (if buffer-read-only 'readonly (if overwrite-mode 'overwrite 'insert)))) (unless (eq state my-set…

diredで隠しファイルの表示をトグルする

2012/3/27 ライブラリ化した。 minor mode。 my-dired-display-all-modeをhとかにbindしたりhookに追加したり (setq dired-listing-switches "-lhFG --time-style=long-iso") ; do not add "-a" or "-A" option (define-minor-mode my-dired-display-all-mod…

eshellプロンプトを中身を色分けして設定する

(setq eshell-prompt-function (lambda () (with-temp-buffer (let (p1 p2 p3 p4) (insert " [") (setq p1 (point)) (insert (abbreviate-file-name default-directory)) (setq p2 (point)) (insert "]\n") (setq p3 (point)) (insert user-login-name "@" (…

mode-lineは割合表示とかいらないので総行数を表示してください

mode-line-positionをすっかり書き換えた。 (line-number-mode 0) (column-number-mode 0) (size-indication-mode 0) (setq mode-line-position '(:eval (format "L%%l/%d,C%%c" (count-lines (point-max) (point-min)))))

eshellでプロンプトを消去不可にする

これをDELにバインドする。 なんでこういう設定初めからないのサ。 (defun my-eshell-backward-delete-char () (interactive) (when (< (save-excursion (eshell-bol) (point)) (point)) (backward-delete-char 1)))

fiber.exeなんてない人のための関連付け実行 on bash and ntemacs

meadowにはfiber.exeが付属する。 これは、ファイルをwindowsの関連付けに従って開くコマンドで、meadowからofficeが起動できたりして割と便利に使える。 が、ntemacsにはそんなものない。 どうにかならんかな、と思ってぐぐると、 startというコマンドを発…

EmacsLisp で let と無名関数のみで再帰

関数をグローバルにしたくない時に。 (let ((fun (lambda (f num &optional result) (if (eq num 0) (or result 1) (funcall f f (- num 1) (* num (or result 1))))))) (funcall fun fun 10)) 3628800 書きながら Y combinatorとかいう概念があるのを知った…

保存時に全体をインデント

1/5 やっぱ変なことになったのでモードを限定するように おかしなことになったら止める (defvar my-indent-buffer-mode-list '(emacs-lisp-mode)) (defun my-indent-buffer () "" (interactive) (when (memq major-mode my-indent-buffer-mode-list) (indent…

eshell dot.emacsからaliasを追加

eshell-command-aliases-listに直接追加しないでって書いてあったので。 (eval-after-load "em-alias" '(progn (eshell/alias "ll" "ls -lhF") (eshell/alias "la" "ls -aF") (eshell/alias "lla" "ls -alhF")))

mode-lineに今のディレクトリを表示

;; current directory 表示 (let ((ls (member 'mode-line-buffer-identification mode-line-format))) (setcdr ls (cons '(:eval (concat " (" (abbreviate-file-name default-directory) ")")) (cdr ls))))

buffer表示したときに変更されてたら自動でrevert

10/11/16 前の版だと2回revertしてたのを直した。 こうしないとrevert-bufferがwindow-configuration-change-hookして無限ループになる (add-hook 'window-configuration-change-hook (lambda () (run-with-timer 0.5 nil (lambda () (unless (verify-visite…

vc-rcsで弱いロック

邪道かどうかさえよく分かんない やたら試行錯誤 (defadvice vc-rcs-register (after rcs-register-non-strict-locking activate) "" (when (eq (vc-backend (buffer-file-name)) 'RCS) (vc-rcs-set-non-strict-locking (buffer-file-name)))) ;; (vc-rcs-ch…

sdicのwindowがジャマ

echoエリアに吐いてくれるだけでいいのです (defun sdic-describe-word-echo () "" (interactive) (sdic-describe-word-at-point) (sdic-close-window) (save-excursion (set-buffer sdic-buffer-name) (message (buffer-substring (point-min) (progn (goto…

ntemacsでgauche

パスに空白があるときは""で括る。 (setq scheme-program-name "\"c:/Program Files/Gauche/bin/gosh.exe\" -i")

ntemacsフォント設定

参考:http://ntemacsjp.sourceforge.jp/matsuan/FontSettingJp.html 英字と日本語で幅がそろわないけど気にしないことにした。 (set-face-attribute 'default nil :family "Consolas" ; "Courier New" :height 90) (set-fontset-font "fontset-default" 'ja…

行末に$を表示

灰色で。 (standard-display-ascii ?\n "$\n") (defface my-eol-face '((t (:foreground "gray"))) "eol") (defvar my-eol-face '(("\n" . '(0 my-eol-face t nil)))) (add-hook 'font-lock-mode-hook (lambda () (font-lock-add-keywords nil my-eol-face)))

auto save bufferを車輪の再発明

9/29変更点 ミニバッファにいるときは喋らないようにした 保存しなかったらnil返すようにした (my-auto-save-this-buffer 10) 指定秒数操作しないと勝手に保存する。 http://0xcc.net/misc/auto-save/との相違点は以下。 専用の関数を用意し、引数を単純にし…

保存時に行末のスペースとかタブを除く

9/27 delete-trailing-whitespace見つけたので不要。 (add-hook 'before-save-hook 'delete-trailing-whitespace) emacs lisp使ったのが見つからない気がした。 (defun my-delete-blanks-on-eol () "" (interactive) (save-excursion (goto-char (point-min)…

scratchバッファを自分なりに使いやすくした

C-xC-sで内容を~/.emacs.d/savedscratches/日時.scratchに保存して全消去する

diredでミニバッファが暇そうだったので

上下移動時にディレクトリとカーソル行の内容を教えてくれるようにした。