created and maintained by tokd

EmacsTips

Emacs(Meadow) の Tips です.

hideshow


ブロック毎に表示と非表示を切替えるためのマイナーモード.C 言語などで深いネストがあるときに便利.


(add-hook 'c-mode-common-hook 'hs-minor-mode)
(eval-after-load "hideshow"
  '(define-key c-mode-base-map "\C-c:" 'hs-toggle-hiding))

image-types


Meadow2 でマルチページの TIFF のインライン表示をしようとすると、固まったように
なって画像が画面に表示されるまで非常に時間がかかってしまう。TIFF は外部ビューワ
で構わないので、以下のようにした。

ImageMagick 6.2.0 Q16 対応版なら固まらないみたい。


(setq image-types (delq 'TIF (delq 'tiff image-types)))

Copyright 表記の更新


自動的に Copyright の年表記を更新するため、以下のようにした。ここでは VHDL ソースを想定しているが、同じようにすればどの言語でも適用できると思う。


(defun update-copyright-year ()
  (interactive)
  (save-excursion
    (let ((current-year (format-time-string "%Y" (current-time))))
      (goto-char (point-min))
      (if (and (re-search-forward "^-- Copyright (C) ")
	       (not (looking-at current-year)))
	  (progn
	    (forward-char 4)
	    (if (looking-at "-20[0-9][0-9]")
		(replace-match (concat "-" current-year))
	      (insert "-" current-year)))))))
(add-hook 'write-file-hooks
	  (lambda ()
	      (if (string-match "\\.vhd$" buffer-file-name)
		  (update-copyright-year))))

Emacs VHDL mode のコンパイルでエラー箇所にジャンプする


ModelSim vcom 用。


(require 'compile)
(add-to-list 'compilation-error-regexp-alist-alist
	     '(vhdl "^.+ \\(Error:\\|Warning: \\)\\(\\[[0-9]+\\] \\)*\\(.+\\)(\\([0-9]+\\)): .+$" 3 4))
(add-to-list 'compilation-error-regexp-alist 'vhdl)

'~' が latin-jisx0201 となるのを抑制する


Mew で `~` 以降が URL として認識されないので、mew-browse.el -> browse-url.el -> thingatpt.el と追ってみたけど無関係そう。ふと思いついて、C-u M-x what-cursor-position してみたら、チルダが latin-jisx0201 になっている。これだと正規表現にマッチしないので、以下のようにした。


(aset (get 'oldjis-newjis-jisroman-ascii 'translation-table)
      (make-char 'latin-jisx0201 126) (make-char 'ascii 126))

不要なバッファを自動的に消去する


lcomp.el の代わりに tempbuf.el を使ってみた


(require 'tempbuf)
(setq tempbuf-life-extension-ratio 0
      tempbuf-minimum-timeout 1)
(add-hook 'compilation-mode-hook 'turn-on-tempbuf-mode)
(add-hook 'completion-list-mode-hook 'turn-on-tempbuf-mode)
(add-hook 'view-mode-hook 'turn-on-tempbuf-mode)

リモートファイルをドラッグ&ドロップで開く


dnd.el で "Remote files not supported" となって開けないので適当に修正


(defun dnd-open-file (uri action)
  (let ((local-file (dnd-get-local-file-uri uri)))
    (if local-file (dnd-open-local-file local-file action)
      (find-file (substring uri 5)))))

Spawning child process: exec format error


.emacs に以下を追加すれば解決することがある。


(require 'mw32script)
(mw32script-init)

fiber vs Office 2007


Word 2007, Excel 2007, Powerpoint 2007 の拡張子 .docx, .xlsx, .pptx を fiber 経由で開く場合、.zip ファイルと認識されてうまく開けないことがあるので、zip の登録をデータベースから削除した。

fiber -l で表示されるリストの中から、zip=PK,0 の登録番号を指定して fiber -r num で削除する。

NTEmacs-23 上の Mew での機種依存文字


Mew の Message バッファが使うコーディングシステム ISO-2022-JP では、
丸数字等の機種依存文字が豆腐□で表示されてしまうため、変換テーブルを追加。


(coding-system-put 'iso-2022-jp :decode-translation-table
		 '(cp51932-decode japanese-ucs-cp932-to-jis-map))
(coding-system-put 'iso-2022-jp :encode-translation-table
		 '(cp51932-encode))