emacsのdiredでファイルが読めない問題
emacsのdiredでカーソル行のファイルを選択しても、ファイルが無いといわれて読めないことがある。どうもdiredで表示される日付の形式が英語(C)と違うかららしい。 これを解消するには
1.localeをCにする
2.dired-move-to-filename-regexpを設定する
のどちらかを行う必要があります。1は簡単なので2のほうでやってみます。
2の方法でやるには、以下の内容をdired-mode.elとか適当な名前を付けたファイルに保存して、.emacsで読み込むだけです。
///////////ここから///////////
;; Dired mode の変更
(setq dired-move-to-filename-regexp
(let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)")
(month (concat l l "+[.]?,? *"))
(k "[^\0-\177]")
(s " ")
(yyyy "[0-9][0-9][0-9][0-9]")
(mm "[ 0-1][0-9]")
(dd "[ 0-3][0-9][.]?")
(HH:MM "[ 0-2][0-9]:[0-5][0-9]")
(western (concat "\\(" month s dd "\\|" dd s month "\\)"
s "\\(" HH:MM "\\|" s "?" yyyy "\\|" yyyy s "\\)"))
(japanese (concat mm k s dd k s "\\(" s HH:MM "\\|" yyyy k "\\)"))
(debianjp (concat mm k s dd s "\\(" HH:MM "\\|" s yyyy "\\)")))
(concat ".*[0-9]" s "\\(" western "\\|" japanese "\\|" debianjp "\\)" s)))
;; vc-dired-mode
(defadvice vc-dired-mode
(after vc-dired-mode-fix-filname-regexp activate compile)
(setq dired-move-to-filename-regexp
(let*
((l "\\([A-Za-z]\\|[^\0-\177]\\)")
(month (concat l l "+ *"))
(k "[^\0-\177]")
(s " ")
(yyyy "[0-9][0-9][0-9][0-9]")
(mm "[ 0-1][0-9]")
(dd "[ 0-3][0-9]")
(HH:MM "[ 0-2][0-9]:[0-5][0-9]")
(western (concat "\\(" month s dd "\\|" dd s month "\\)"
s "\\(" HH:MM "\\|" s yyyy"\\|" yyyy s "\\)"))
(japanese (concat mm k s dd k s "\\(" s HH:MM "\\|" yyyy k "\\)"))
(debianjp (concat mm k s dd s "\\(" HH:MM "\\|" s yyyy "\\)")))
(concat s "\\(" western "\\|" japanese "\\|" debianjp "\\)" s))))
///////////ここまで///////////
.emacsで読み込むには
(load "dired-mode.el")
とかします。
The comments to this entry are closed.
Comments