[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23. ファイルを開く関連 (2005/11/19)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=find-file"
"MeadowMemo/ファイルを開く関連"へのコメント(無し)
検索全文Elisp


この章で紹介していること

Meadow でファイルを開くための方法として,多くの方法が用意されています.

例えば,C-x C-f で開く, Windows からドラッグする,dired でフォ ルダ内のファイル一覧を表示して開く方法検索した結果から開く 方法 などです.

全部を取り上げていてはきりがありませんので,ここでは,主に C-x C-f で開く方 法のみを取り上げ,その機能や拡張方法について紹介します.

以下はこの章で紹介している方法です.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.1 ファイルを開く基本操作 (2005/03/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=find-file%20ext"
"MeadowMemo/ファイルを開く基本操作"へのコメント(無し)
検索全文Elisp

C-x C-f の基本操作

まずは,基本的な操作から説明します.

Meadow でファイルを開く時には C-x C-f とします.そして,開きたいファイルを 指定します.この時,TABSPC を入力することで,補完することができ ます.このようにして,ファイルを指定したら,RET で決定します.すると,その ファイルを開くことができます.

ファイルの新規作成

Word などでは,起動した画面に文字を入力して,それを保存することで新規ファイルを 作成します.

しかし,Emacs では,このような方法を取りません.

Emacs の場合には,最初にファイル名を指定します.指定の仕方は通常のファイルを開く 操作と同じです.ただし,ファイル名として,存在しないファイル名を指定します.

これで,文字を入力して,保存すると,そのファイルが作成されます.

あくまで,保存した時点でファイルが作成されることに注意してください.保存せずに終 了するとファイルは作成されず,データも残りません.

特定の拡張子のファイルを開く

C-x C-f では,ファイル名だけではなく,ワイルドカードや環境変数も使うことが できます.そのため,C-x C-f *.html とすると,拡張子が HTML のファイルを全部 開くことができます.

あまり使う機会はないかもれませんが,C-x C-f $TMP/test.el のように環境変数 を使うこともできます.

ファイル名入力の補完機能

既存のファイルを開く場合,補完機能が便利です.C-x C-f とした後で, TABSPC を入力すると候補一覧が表示されます.頭何文字か入力して, TAB とすると,指定した文字で始まるファイルだけを一覧表示してくれます.

この時,ファイルが 1 つしかなければ,そのファイル名になります.また,ファイルが複 数あっても最初の文字が皆同じ場合 (例えば, file1.txt , file2.txt などといったファ イルがあるなど) ,適当な場所まで補完してくれます (この例だと,f TAB で file まで自動的に入力してくれます) .

しかし,拡張子が「 elc 」や「 exe 」,「 dvi 」といったバイナリファイルは開いても あまり意味がありません.だったら,最初から補完候補に入っていない方が便利ですね.

そこで,以下のような設定をします.こうすると,指定した拡張子は補完候補に出ないよ うになります.デフォルトの値は,M-x help-for-help v completion-ignored-extensions で確認できますので,足りないと思うものを追加してお くと便利になります.

 
(setq completion-ignored-extensions
      (append completion-ignored-extensions
              '(".exe" ".com" ".o")))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2 ファイル名補完関連 (2005/03/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=find-file%20completion"
"MeadowMemo/ファイル名補完関連"へのコメント(無し)
検索全文Elisp

ここでは C-x C-f でファイルを開く時の補完機能を便利にするための設定などを紹 介します.

23.2.1 ファイル名の一部と拡張子で補完 (2005/03/20)  
23.2.2 ファイル名,ディレクトリ名補完 − completer (2004/02/03)  
23.2.3 ファイル名を自動で補完 ― highlight-completion (2003/08/06)  
23.2.4 migemo で find-file ― 小菊 (2004/02/13)  
23.2.5 ファイルを開く時にも iswitchb のように (2003/08/06)  
23.2.6 ファイル名補完をカラフルに ― dircolors (2003/11/07)  
23.2.7 余計な部分を暗く ― rfn-eshadow (2005/03/18)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.1 ファイル名の一部と拡張子で補完 (2005/03/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=partial-completion"
"MeadowMemo/ファイル名の一部と拡張子で補完"へのコメント(無し)
検索全文Elisp
要約

m.h で meadow.html のように,拡張子と名前をセットにして補完できます.

何が問題なのか?

例えば, meadow.html というファイルを開く時どうやって補完しますか? meadow.el や meadow.txt というファイルが同じディレクトリにあると,補完も結構面倒ですよね.

何ができるのか?

m.h で補完すると,meadow.html と展開できます.拡張子とセットにすることで,補完が 非常に便利になります.

設定済みMeadowでは

同じ機能を有効にするための設定を入れてあります.

インストール方法

Meadow の標準機能ですので,インストールは不要です.

設定方法

.emacs に以下を追加します.

 
(partial-completion-mode t)

詳しい使い方

m.h [TAB] で一気に meadow.html が補完できます. m_1.h とすると, meadow_1.html のような補完もできます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.2 ファイル名,ディレクトリ名補完 − completer (2004/02/03)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=completer%20complete"
"MeadowMemo/ファイル名,ディレクトリ名補完−completer"へのコメント(無し)
検索全文Elisp

23.2.1 ファイル名の一部と拡張子で補完 (2005/03/20) で紹介した標準機能よりも便利なのが completer です.

インストール方法

http://www.mit.edu/afs/sipb/project/clisp/source/ilisp/completer.el より ダウンロードして,ロードパスの通ったところへ置きます.

これは, Meadow 1.99 では動きません.

completer は ilisp という XEmacs のパッケージにも附属しています.こちらは, Meadow 1.99 でも使うことができます.とりあえずファイルを completer.el に置いておきます (そのままでは動かなかったので,少し変更してあります) .設定と使い方は同じです.

設定方法

 
(require 'completer)
(setq completer-words "---. <_")

を .emacs に追加します.

詳しい使い方

これで,ミニバッファに ~/w/s/m.h [TAB] と入力すると一気に ~/www/soft/meadow.html まで補完してくれます.

仮りに ~/web というフォルダがあったとしても,

Find file: ~/w/s/m.h

のように,カーソルが ~/w の後に移動し,各ディレクトリを個別に補完することができ ます.

設定の 2 行目はなくてもいいですが,これを入れておくと p_h で public_html といっ た補完ができるようになります.不要ならなくても問題はないです.

このような補完は M-x でのコマンド入力や shell でも使うことができます.

ただし,大文字,小文字は区別されます.

注意としては, shell での補完が効かなくなってしまう, M-x やファイルを開く 際に通常の補完がおかしくなってしまうという副作用があります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.3 ファイル名を自動で補完 ― highlight-completion (2003/08/06)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=highlight-completion"
"MeadowMemo/ファイル名を自動で補完―highlight-completion"へのコメント(無し)
検索全文Elisp

何が問題なのか?

例えば,~/www というディレクトリに meadow.html , test.txt というファイルがあっ たとします.そこで,C-x C-f でファイルを開く際, m と入力したら m で始まる ファイルは meadow.html しかないんだから,最後まで補完しなくても m RET で開 けたら楽ですよね.

そんな入力ができるのが, highlight-completion です.

インストール方法

highlight-completion を Highlight completion home page からダウンロードします.そして,ロードパスの通ったところへ 置きます.

設定方法

以下を.emacs に追加します.

 
(setq hc-ctrl-x-c-is-completion t)
(require 'highlight-completion)
(highlight-completion-mode 1)
(global-set-key "\C-\\" 'toggle-input-method)

最後の行がないと,C-\がリセットされてしまうので, IME のオン/オフができな くなってしまいます.

詳しい使い方

これで,普通にファイルを開くと,

 Find file: d:/home/www/meadow.html

という風に,補完候補が自動的に入力されます.

これはファイルを開く時だけではなく,M-xでのコマンド入力時にも可能です.

さらに,ファイルを編集時に C-x c F とすると,~/www/home/ といったパスをミ ニバッファでの入力と同じように補完入力できます.

他にも,

などの補完入力が可能です.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.4 migemo で find-file ― 小菊 (2004/02/13)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=kogiku"
"MeadowMemo/migemoでfind-file―小菊"へのコメント(2007/12/28)
検索全文Elisp

flash によるデモ もあります.

現在開発が活発に行われており,以下の内容はすでに古くなっています

何が問題なのか?

find-file で日本語のファイルやフォルダを開くためには,どう操作してますか?

普通は, IME を起動して日本語を入力したり,フォルダ名に「 1 , 2 , 3 」といった 風に数字をつけておいたり,日本語は使わないようにしたりしてると思います.

そんな操作をするたびに,誰もが思うのは「こんな時こそ migemo が使えればいいのに」 じゃないでしょうか.

何ができるのか?

migemo を使って find-file ができます.そのため,ミニバッファで煩わしい漢字変換を する必要がなくなります.

インストール方法は?

migemo っぽい find-file よりkogiku.el をダウンロードし, ロードパスの通ったところへ置きます.

設定方法は?

以下を.emacs に追加します.

 
(require 'kogiku)

詳しい使い方は?

上記の設定をすると,普通にファイルを開いて,TAB とすることで,小菊による展 開が可能です.

うまく動かない

最新版を CVS で取ってくる場合には下記の設定は不要です

ffap などを使っていると,うまく動作しません.

 
(require 'kogiku)
(add-hook 'after-init-hook
          'kogiku-hack-keymap)
(defun kogiku-completion-complete ()
  (interactive)
  (if (or
       (eq minibuffer-completion-table
           'read-file-name-internal)
       (eq minibuffer-completion-table
           'ffap-read-file-or-url-internal))
      (setq minibuffer-completion-table
            'kogiku-read-file-name-internal))
  (funcall
   kogiku-original-function-for-tab-on-minibuffer-local-completion-map))

とすると,とりあえず利用できます.使った感じでは随分と安定しているようです.日本 語のファイルが多い人は試す価値ありです.

解決策は?

以下のコードは古い kogiku 向けですので,現在は不要です

やっぱり completer と一緒には動いてません.

オリジナルを少し改造してみました.ほとんどはオリジナルのままですが,少し使い勝手 を上げています.上記の設定の後に,これを .emacs に追加してください.

最後の行のコメントをはずすと.通常の find-file でも migemo を使うことができます. ただし, read-file-name-internal という関数を置き換えてしまっているので,不具合 がでる可能性があります (completer は動作しない) .

コメントをはずすと, highlight-completion-mode , ffap の設定があってもC-x C-fで migemo を利用した find-file を使うことができます.

そのため,例えば,この機能を highlight-completion-mode と組み合わせると,「~/仕 事」を「~/s 」だけで補完できてしまいます.

ただし,一意に決まるまで,ミニバッファの文字はローマ字のままです.

「 read-file-name-internal 」とは返り値や動作などの仕様が異なります.そのため,変 な動作をするものがあれば,機能を切るようにしてください.

 
(defun kogiku-read-file-name-internal (string dir action)
  ;; dir?
  (setq string (expand-file-name string))
  (if (file-directory-p dir)
      (setq dir (file-name-as-directory (expand-file-name dir))))
  (let* ((jdir (file-name-directory string))
         (all-file (directory-files jdir))
         (jpat
          ;; / で終わっていたら, migemo は使わない
          (if (string-match "/$" string)
              (file-name-nondirectory string)
            (migemo-get-pattern (file-name-nondirectory string))))
         (jlist
          (delete nil
                  (mapcar
                   (function
                    (lambda (f)
                      (if (string-match (concat "^" jpat) f)
                          (if (file-directory-p f)
                              ;; ディレクトリは / で終わるように
                              (file-name-as-directory f)
                            f)
                        nil)))
                   all-file)))
         (jlen (length jlist)))
    (let (comp)
      (if action
          ;; all-completions
          jlist
        ;; try-completion
        (cond
         ((< 1 jlen)
          (setq comp (try-completion
                      (file-name-nondirectory string)
                      (mapcar 'list jlist)))
          (if comp
              (concat jdir comp)
            string))
         ((= 1 jlen)
          (if (file-directory-p (concat jdir (car jlist)))
              (file-name-as-directory (concat jdir (car jlist)))
            (concat jdir (car jlist))))
         (t
          nil))))))

;;(fset 'read-file-name-internal 'kogiku-read-file-name-internal)

もっと遊んでみた

改造版をさらに改造したもの.ミニバッファの補完が途中でも日本語で補完するようにし てみた.

これなら,「仕事」と「仕事資料」なんてフォルダがあっても,「 si 」で補完すると 「仕事」までは日本語に展開されます.

 
(defun try-completion-regexp (string regexp all-list)
  (let (lst (match-str t))
    (cond
     ((= (length regexp) 0)
      "")
     (t
      (setq lst
            (delete nil
                    (mapcar
                     (function
                      (lambda (f)
                        (if (string-match (concat "^" regexp) f)
                            f
                          nil)))
                     all-list)))

      (setq match-str
            (if (= (length lst) 1)
                nil
              (substring
               (car lst)
               0
               (- (abs (compare-strings (car lst) 0 nil
                                        (car (cdr lst)) 0 nil)) 1)
               )))

      (if (and match-str
               (delete nil
                       (mapcar
                        (function
                         (lambda (f)
                           (if (string-match (concat "^" match-str) f)
                               f
                             nil)))
                        lst)))
          match-str
        string)))
    ))

(defun kogiku-read-file-name-internal (string dir action)
  ;; dir?
  (setq string (expand-file-name string))
  (let* ((nondir-str (file-name-nondirectory string))
         (jdir (file-name-directory string))
         (all-file (directory-files jdir))
         (jpat
          ;; / で終わっていたら, migemo は使わない
          (if (string-match "/$" string)
              ""
            (if (string-match "\\(\\cj+\\)\\([^\\cj]+\\)" nondir-str)
                (concat (match-string 1 nondir-str)
                        (migemo-get-pattern (match-string 2 nondir-str)))
              (migemo-get-pattern (file-name-nondirectory string)))))
         (jlist
          (delete nil
                  (mapcar
                   (function
                    (lambda (f)
                      (if (string-match (concat "^" jpat) f)
                          (if (file-directory-p f)
                              ;; ディレクトリは / で終わるように
                              (file-name-as-directory f)
                            f)
                        nil)))
                   all-file)))
         (jlen (length jlist)))
    (let (comp)
      (if action
          ;; all-completions
          jlist
        ;; try-completion
        (cond
         ((< 1 jlen)
          (setq comp (try-completion-regexp ;;try-completion
                      (file-name-nondirectory string)
                      jpat
                      jlist))
          (if (= (length comp) 0)
              string
            (concat jdir comp)
            ))
         ((= 1 jlen)
          (if (file-directory-p (concat jdir (car jlist)))
              (file-name-as-directory (concat jdir (car jlist)))
            (concat jdir (car jlist))))
         (t
          nil))))))

;;(fset 'read-file-name-internal 'kogiku-read-file-name-internal)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.5 ファイルを開く時にも iswitchb のように (2003/08/06)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ido"
"MeadowMemo/ファイルを開く時にもiswitchbのように"へのコメント(無し)
検索全文Elisp

インストール方法

まず, ido.el を Storm's Emacs Resources より ダウンロードし,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'ido)
(ido-mode t)

詳しい使い方

これで,C-x b のバッファ移動では iswitchb のようになりますし,C-x C-f でも iswitchb のようにディレクトリやファイルを選択していくことができます.

iswitchb を使うから,C-x b の時にはいらないという時には,

 
(require 'ido)
(ido-mode 'file)

とします.逆に,C-x C-f の時にはいらないのであれば,

 
(require 'ido)
(ido-mode 'buffer)

とします.

これで, find-file やバッファの切り替えで iswitchb のような選択が可能になります.

ただ,ディレクトリを移動するたびに,ミニバッファでディレクトリを選択して,何度も RET を押して移動する必要があり,結構面倒です.使いたい時だけ,適当なキーで 切り替えられると便利かもしれませんが,常時使うとストレスがたまるように感じました.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.6 ファイル名補完をカラフルに ― dircolors (2003/11/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=dircolors"
"MeadowMemo/ファイル名補完をカラフルに―dircolors"へのコメント(無し)
検索全文Elisp

何ができるのか?

ファイルを開く時にTABを押すと,補完候補が表示されます.しかし,この画面は 非常に地味です.

そこで,こんな風にカラフルにしてしまいましょう.

In this buffer, type RET to select the completion near point.

Possible completions are:
../                                ./
.cvsignore                         199image.jpg
article.jpg                        basic.texi
basic_know.texi                    black.css
cgrep.jpg                          cnamazu.jpg
dired.texi                         dispret.gif
faces-list.jpg                     file.texi
index.html                         index.texi
kill-ring.png                      lastmeadow.css
meadow.el                          meadow.html
meadow.texi                        meadow.txt

インストール方法

http://ftp.azc.uam.mx/mirrors/gnu/emacs-lisp/archive/より, dircolors.el をダウンロードします.それを,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(setq dircolors-face-color
      '(
        (dircolors-face-dir            "SkyBlue"        )
        (dircolors-face-doc            "MediumTurquoise")
        (dircolors-face-html           "Plum"           )
        (dircolors-face-package        "IndianRed"      )
        (dircolors-face-tar            "OrangeRed"      )
        (dircolors-face-dos            "LimeGreen"      )
        (dircolors-face-sound          "LightBlue"      )
        (dircolors-face-img            "Salmon"         )
        (dircolors-face-ps             "BlueViolet"     )
        (dircolors-face-backup         "Magenta"        )
        (dircolors-face-make           "Khaki"          )
        (dircolors-face-paddb          "Orange"         )
        (dircolors-face-lang           "Yellow"         )
        (dircolors-face-emacs          "GreenYellow"    )
        (dircolors-face-lang-interface "Goldenrod"      )
        (dircolors-face-yacc           "Coral"          )
        (dircolors-face-objet          "DimGray"        )
        (dircolors-face-asm            "Tan"            )
        (dircolors-face-compress       "Sienna"         )
        ))
(require 'dircolors)

詳しい使い方

これで,ファイルを開く際にTABを入力するとカラフルな補完候補が表示されます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.2.7 余計な部分を暗く ― rfn-eshadow (2005/03/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=rfn-eshadow"
"MeadowMemo/余計な部分を暗く―rfn-eshadow"へのコメント(無し)
検索全文Elisp
要約

ファイル名を指定する時に「d:/~/」と入力すると,「d:/」までは意味をなさない.そこ で,この不要な部分を暗く表示してくれる.

何が問題なのか?

「c:/WINDOWS/system/~/」や「c:/WINDOWS/system/g:/」といったように,あるディレクト リから,まったく違うディレクトリを指定する場合,全部が同じように表示されると,ど こからどこまでが本当に表示して欲しい部分か分かりにくいです.

何ができるのか?

C-x C-f

c:/WINDOWS/system/

となっている時に,「g:」と入力すると,

c:/WINDOWS/system/g:

のように,不要になった部分を暗く表示してくれます.

設定済みMeadowでは

設定しています.

インストール方法

標準で付属しています.

設定方法

以下を .emacs に追加します.

(file-name-shadow-mode t)

詳しい使い方

普通にファイル名を入力するだけです.それで,余計になった箇所は見えにくくしてくれ ます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.3 深い階層のファイルを一発で開く (2003/08/06)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=find-file%20subdir"
"MeadowMemo/深い階層のファイルを一発で開く"へのコメント(無し)
検索全文Elisp

深い階層のファイルを開くためには,少しずつディレクトリを辿る必要があり,かなり面 倒です.

そこで,深い階層のファイルを一瞬で開くことのできるものを紹介します.

ここで紹介するのは二つあります. filecache と super-smart-find です.機能はほぼ 同じですが,以下のような違いがあります.

23.3.1 起動時にファイル一覧を作成 ― filecache (2003/08/08)  
23.3.2 深いディレクトリのファイルを開くモード ― super-smart-find (2003/08/08)  
23.3.3 一致したファイルをすべて開く ― findr (2004/04/30)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.3.1 起動時にファイル一覧を作成 ― filecache (2003/08/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=filecache"
"MeadowMemo/起動時にファイル一覧を作成―filecache"へのコメント(無し)
検索全文Elisp

何ができるのか?

深いディレクトリにあるファイルを開く時に,毎回ディレクトリを辿っていくのは非常に 面倒です.

そんなことをしなくても済むのが Meadow に標準で附属している filecache です.これ を使うと, find-file でファイル名を入力するだけで,目的のファイル名を補完できる ようになります.

インストール方法

Meadow に付属しています.

設定方法

以下の設定を .emacs に追加します.

 
(require 'filecache)
(file-cache-add-directory-list
 (list "~" "e:/Meadow"))
(define-key minibuffer-local-completion-map
  "\C-c\C-i" 'file-cache-minibuffer-complete)

詳しい使い方

これで, Meadow 起動時に指定したディレクトリ下のファイルを調べ,そのリストが作成 されます.そして,C-x C-f でファイル名を入力して C-c C-iとします. そ うすると,作成されたリストを元に補完されます.これにより,深いディレクトリを辿ら なくてもファイルを開くことができます.

ただし, 補完は起動時に作成されるリストを元に行われますので,補完できるファイルは Meadow 起動時に存在していたファイルのみです. Meadow 起動後に作成されたファイル は対象にはなりません.

Meadow 起動後に作成したファイルを対象にするには設定後に再起動するか, M-x file-cache-add-fileM-x file-cache-add-directory-using-findなどを利用 して, 手動で追加する必要があります.

注意:2002/11/25 に設定を見直しました.それ以前の設定だと iswitchb と使おうとする とエラーになってしまいます.その場合にはキーバインドの設定を上の設定に変更してく ださい.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.3.2 深いディレクトリのファイルを開くモード ― super-smart-find (2003/08/08)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=super-smart-find"
"MeadowMemo/深いディレクトリのファイルを開くモード―super-smart-find"へのコメント(無し)
検索全文Elisp

何が問題なのか?

深いディレクトリにあるファイルを開く時に,毎回ディレクトリを辿るのは非常に面倒で す.

そこで,あらかじめ設定された複数のディレクトリの下に存在するファイルを,ディレク トリ名の指定を必要とせずに completion 機能を併用して読み込むことができるようにす るものが, super-smart-find です.

インストール方法

使うためには,まずftp://ftp.jpl.org/pub/elisp/から, super-smart-find を ダウンロードします.そして,解凍後,ロードパスの通ったところへ置きます.

設定方法

.emacs に以下のような設定を追加します.

 
(require 'super-smart-find)
(setq smart-find-file-path
      (append
       (list
        (expand-file-name "~/WWW")
        (expand-file-name "~/mylisp")
        )
       smart-find-file-path))

(define-key global-map "\C-x\C-f" 'super-smart-find-file)
(define-key global-map "\C-x4f"   'super-smart-find-file-other-window)
(define-key global-map "\C-xi"    'super-smart-find-insert-file)
(define-key global-map "\C-x\C-w" 'super-smart-find-write-file)
(define-key global-map "\C-x5f"   'super-smart-find-file-other-frame)
(define-key global-map "\C-x4l"   'super-smart-find-load-file)

;; Semi 使用時の設定
(add-hook 'mime-edit-load-hook
          (lambda ()
            (define-key mime-edit-mode-map "\C-c\C-x\C-i"
              'super-smart-find-mime-edit-insert-file)
            (put-alist
             'file
             '("Insert File" super-smart-find-mime-edit-insert-file)
             mime-edit-menu-list)
            ) t)

詳しい使い方

これで,C-x C-f =とすると, super-smart-find になります.ここで,SPC を入力すると,指定したディレクトリ下のファイル一覧が表示されます.ただし, C-x C-fの直後に=を入力しなければ,何も変化はありません.

filecache とは違い, Meadow 起動後にファイルが追加されても,補完することができま す.ただ,その補完にはバグがあり,うまく補完できないことがあります.その際には, 何文字か追加して,補完をやり直すとうまくいきます.

コメント

ちなみに, super-smart-find は, smart-find という Elisp を利用しています.これ は,単独で使うこともできます.上の設定を使わずに,以下のような設定を.emacs に追 加すると,利用できます.

こうすると,C-c C-fで smart-find になります.

 
(load "smart-find")
(setq smart-find-file-path
      '("~/WWW" "~/mylisp"))

さらに, super-smart-find には 改造版も存在し ます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.3.3 一致したファイルをすべて開く ― findr (2004/04/30)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=findr"
"MeadowMemo/一致したファイルをすべて開く―findr"へのコメント(無し)
検索全文Elisp
要約

あるディレクトリ下にあるファイルのうち,指定した正規表現に一致したファ イルだけをまとめて開くことができる.

何が問題なのか?

C-xC-fでは複数のファイルを開くのは面倒ですし,サブディレクトリに ある複数のファイルを開くのは少し面倒です.

何ができるのか?

指定した正規表現に一致するファイルを検索し,一致したファイルだけを開く ことができます.

インストール方法

http://groups.google.com/groups?selm=cxjhfml4b2c.fsf_-_%40acs5.bu.edu よりコピーして,findr.elの名前でロードパスの通ったところに保存します.

設定方法

以下を.emacsに追加します.

 
(autoload 'findr "findr" "findr" t nil)
(autoload 'findr-query-replace "findr" "findr" t nil)
(autoload 'findr-search "findr" "findr" t nil)

詳しい使い方

M-x findrとします.すると,

file name (regexp): 

とミニバッファに表示されますので,ここで一致させたいファイル名に対する 正規表現を入力します.次に

Directory: d:/home

となりますので,検索したいディレクトリを指定します.これで,そのディレ クトリ下から指定した正規表現に一致する文字を含むファイルがミニバッファ に順番に表示され,開くかどうかを指定できます.yで開く,nで開かないです.

また,M-x findr-searchというコマンドも利用できます.まず

Search through files for: (text regexp): 

で検索したい正規表現を入力し,

Look in these files: (files regexp): 

で検索したいファイル名に対する正規表現を

Start in this directory: d:/home/

で,検索したいディレクトリを指定します.すると,指定したディレクトリ下 のファイルを対象に検索し,最初の一致箇所が表示されます.次の一致箇所へ はM-,で移動できます.

同じようにして,M-x findr-query-replace で置換もできます.

コメント

私はこのコマンドを単体ではあまり使ってません。25.1.4 find-dired を Cygwin 無しで使う (2005/02/17) と して利用しています。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.4 カーソル付近のファイル/URL を開く ― ffap (2005/11/19)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ffap"
"MeadowMemo/カーソル付近のファイル/URLを開く―ffap"へのコメント(無し)
検索全文Elisp

何が問題なのか?

ファイルにファイル名や URL が書いてあって,そのファイルや URL を開きたい時があり ます.

しかし,そのためには,まずその文字をコピーして,ブラウザを立ち上げて,貼り付ける 必要があり,面倒です.

何ができるのか?

ファイル名やURLの上にカーソルを合わせてC-x C-fとするだけで,そのファイルや URLを開くことができます.

ちなみに, ffap とは,「 find file (or url) at point 」の略です.

設定済みMeadowでは

設定済みです.

インストール方法

標準で付属しています.

設定方法

以下を.emacs に追加します.

 
(ffap-bindings)

基本的な使い方

普通通りに C-x C-f としてファイルを開くと,カーソル付近の文字を探して,デフォ ルトとして入力してくれます.C-u C-x C-f で従来の find-file になります.

さらに,ミニバッファの文字を全部消して, URL を入力すると, browse-url により URL を開くことができます.もちろん,カーソル付近に URL があれば,それがデフォルト として入力されますので,RETだけで開くことができます.

URL なら browse-url ですが, ftp アドレスなら ange-ftp により開いてくれます.

各 モード用の機能

現在のモードに応じて適切なファイルを検索して,開く機能もあります.

例えば, Elisp を編集中に

 
(require 'session)

の「 session 」にカーソルがある時に,C-x C-f とすると,ロードパスから 「 session.el 」を検索して,開いてくれます.

このような機能は Elisp だけでなく, C-mode などでも可能です.モードと機能の対応は デフォルトでは以下のようになっています.

 
(defvar ffap-alist
  '(
    ("" . ffap-completable)         ; completion, slow on some systems
    ("\\.info\\'" . ffap-info)          ; gzip.info
    ("\\`info/" . ffap-info-2)          ; info/emacs
    ("\\`[-a-z]+\\'" . ffap-info-3) ; (emacs) Top [only in the parentheses]
    ("\\.elc?\\'" . ffap-el)            ; simple.el, simple.elc
    (emacs-lisp-mode . ffap-el-mode)    ; rmail, gnus, simple, custom
    ;; (lisp-interaction-mode . ffap-el-mode) ; maybe
    (finder-mode . ffap-el-mode)        ; type {C-h p} and try it
    (help-mode . ffap-el-mode)          ; maybe useful
    (c++-mode . ffap-c-mode)            ; search ffap-c-path
    (cc-mode . ffap-c-mode)             ; same
    ("\\.\\([chCH]\\|cc\\|hh\\)\\'" . ffap-c-mode) ; stdio.h
    (fortran-mode . ffap-fortran-mode)  ; FORTRAN requested by MDB
    ("\\.[fF]\\'" . ffap-fortran-mode)
    (tex-mode . ffap-tex-mode)          ; search ffap-tex-path
    (latex-mode . ffap-latex-mode)      ; similar
    ("\\.\\(tex\\|sty\\|doc\\|cls\\)\\'" . ffap-tex)
    ("\\.bib\\'" . ffap-bib)            ; search ffap-bib-path
    ("\\`\\." . ffap-home)              ; .emacs, .bashrc, .profile
    ("\\`~/" . ffap-lcd)                ; |~/misc/ffap.el.Z|
    ("^[Rr][Ff][Cc][- #]?\\([0-9]+\\)"  ; no $
     . ffap-rfc)                        ; "100% RFC2100 compliant"
    (dired-mode . ffap-dired)           ; maybe in a subdirectory
    )

このため, C-mode の設定を変えたければ, ffap.el の中から「 ffap-c-mode 」という 関数を探せば,設定項目が見つかります.

例えば, C や C++ なら,インクルードするファイルのあるパスを以下のようにして設定 できます.

 
(setq ffap-c-path
      '("/usr/include" "/usr/local/include"))

Fortran なら

 
(setq ffap-fortran-path '("../include" "/usr/include"))

です. TeX なら同じように「 ffap-tex-path 」を設定します.

もしも,編集したいモードの設定がなければ,適当な関数を作ってしまえば,簡単に追加 できます. c-mode の設定がシンプルで編集しやすいです.

各モード用の設定

こんな設定も入れてます.

 
(setq ffap-alist (append (list
                          '(lisp-interaction-mode . ffap-el-mode)
                          )
                          ffap-alist))

他の Elisp との干渉

と,ここまで紹介したように, ffap は非常に便利なものなのですが,ミニバッファに URL などを入力するという変則的な仕様であるため,一部の Elisp と干渉します.

例えば,「 highlight-completion-mode 」は URL を開こうとするとエラーになります.

「 highlight-completion-mode 」については,とりあえず以下を追加すると逃げること ができます.

 
;; highlight-completion-mode と干渉するので, URL の時には
;; 補完しないようにする
(defadvice hc-expand-file-name
  (around hc-expand-file-name-del activate)
  (if name
      ad-do-it))

ffap を入れると, completer も動きません.原因は補完のためのテーブルがおかしいこ となので,以下のようにして引数 table (2 個目の引数) を設定し直すとうまく動くみた いです.

 
(defadvice completer
  (before completer-set-table activate)
   (if (and (stringp (ad-get-arg 1))
            (string= (ad-get-arg 1) 'ffap-read-file-or-url-internal))
      (ad-set-arg 1 'read-file-name-internal)))

カスタマイズ

 
;; 新規ファイルの場合には確認する
(setq ffap-newfile-prompt t)
;; RFC2472 で ffap をすると,日本語訳の RFC を表示できる
(setq ffap-rfc-path "http://www.minokasago.org/labo/RFC/rfc%s-jp.html")
;; こっちは英語の設定
(setq ffap-rfc-path "http://www.ring.gr.jp/archives/doc/RFC/rfc%s.txt")
;; ffap でファイル名に以下の文字を含むと, dired に切り替える
;; つまり,*.el を開こうとすると,*.el をマスクとして, dired
;; を実行できる
;; デフォルトは nil なので,*.el というファイルを作ろうとする
(setq ffap-dired-wildcards "*")
;; ftp 時に ping をしないで,いきなり ange-ftp で開く
(setq ffap-machine-p-known 'accept)
;; ffap-kpathsea-expand-path で展開するパスの深さ
(setq ffap-kpathsea-depth 5)

うまく動かない

URLを開こうとすると,エラーになるかもしれません.そんな場合には下記を追加します.

 
(require 'url-vars)

23.4.1 ffap でスペースを含むパスを認識させる (2003/09/21)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.4.1 ffap でスペースを含むパスを認識させる (2003/09/21)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ffap%20space"
"MeadowMemo/ffapでスペースを含むパスを認識させる"へのコメント(無し)
検索全文Elisp

ネタ元:http://www.jurta.org/emacs/dotemacs.en.html

何が問題なのか?

「 C:/Program Files/」のようにスペースを含むパスが書いてあると ffap が認識してくれ ないことがあります.

何ができるのか?

リージョンで選択することで強制的に認識させることができます.

設定方法

以下を.emacs に追加します

 
(defun my-find-file-at-point-or-region (&optional arg)
   "Find filename at point or selected by region.
   This function is useful, when filename contain spaces, and so
   can't be fully found by `find-file-at-point'. In this case user
   should manually select full filename and invoke this command.
   Also maps UNIX filenames to Window$ filenames."
   (interactive "P")
   (let ((filename
          (if (and transient-mark-mode mark-active)
              (buffer-substring-no-properties (mark) (point))
            (ffap-string-at-point))))
     (and (eq system-type 'windows-nt)
          filename
          (string-match "^/dos/\\([A-Za-z]\\)\\(.*\\)" filename)
          (setq filename
                (concat (match-string 1 filename)
                        ":" (match-string 2 filename))))
     (or (and filename (file-exists-p filename))
         (setq filename (ffap-guesser)))
     (if (and filename (file-directory-p filename))
         (setq filename (file-name-as-directory filename)))
     (find-file-at-point (ffap-prompter filename))))

(define-key global-map "\C-x\C-f" 'my-find-file-at-point-or-region)

詳しい使い方

ffap で認識されなかったら,リージョンでパスを選択し,C-x C-fとします.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.5 ファイルを検索 (2003/11/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=search%20files"
"MeadowMemo/ファイルを検索"へのコメント(無し)
検索全文Elisp

ファイル名をもとにファイルを検索する Elisp を紹介します.

23.5.1 ファイルをパスから検索 ff-paths (2003/08/06)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.5.1 ファイルをパスから検索 ff-paths (2003/08/06)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ff-paths.el"
"MeadowMemo/ファイルをパスから検索ff-paths"へのコメント(無し)
検索全文Elisp

ff-paths.el というのがあります.これは, C-x C-f でファイルを開く際,存在 しないファイル名を入力すると,パスから検索してくれるというものです.

使うためには, ff-paths.el をhttp://people.debian.org/~psg/elisp/よりダウン ロードし,ロードパスの通ったところへ置きます.

そして,以下を.emacs に追加します.

 
(require 'ff-paths)

これで,使うことができます.

ただし,補完などはできません.あくまで,現在のパスにないファイル名を入力して RET を押した時に動作するものです.

最後まで入力しないといけないので,使い勝手がいいとは言えません.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6 バイナリファイルを開く (2003/11/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=binary%20file"
"MeadowMemo/バイナリファイルを開く"へのコメント(無し)
検索全文Elisp
要約

Meadow ではバイナリファイルの編集もできます.そのためには, M-x hexl-find-file とし ます.

詳しい使い方

M-x hexl-find-fileとすると,ファイルをバイナリファイルとして開くことができ ます.これでファイルを開くと

00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR
00000010: 0000 021f 0000 007b 0800 0000 00f1 ccbd  .......{........

のように,表示できます.

23.6.1 バイナリエディタ (2003/11/20)  
23.6.2 圧縮されたファイルを開く (2003/10/12)  
23.6.3 Word や Excel をテキストに変換 ― xdoc2txt (2005/02/17)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6.1 バイナリエディタ (2003/11/20)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=binary%20editor"
"MeadowMemo/バイナリエディタ"へのコメント(無し)
検索全文Elisp
要約

普通にファイルを開くだけで,バイナリであればバイナリファイルとして扱うようになり ます.

情報源

バイナリデータの編集時 には、 Emacs をバイナリエディタに変身させる」をもとに改造したもの.

何が問題なのか?

M-x hexl-find-fileでバイナリファイルを開くことができます.しかし,普通の find-file とは関数が違うために,区別しなければなりません.

何ができるのか?

C-x C-fでバイナリファイルであれば,自動的にバイナリエディタになります.

設定方法

以下を.emacs に追加します.

 
(defvar YAMA-file-not-binary-extensions '()
  "バイナリとみなさないファイルの拡張子を
  (\"txt\") のようにリストで指定する
  ただし,すべて小文字で指定する")

(defvar YAMA-file-not-binary-files
  '("tags" "gsyms" "gpath" "grtags" "gsyms" "gtags")
  "バイナリとみなさないファイル名を指定する.
ただし,すべて小文字で指定のこと")

(defun YAMA-file-binary-p (file &optional full)
   "Return t if FILE contains binary data.  If optional FULL is non-nil,
check for the whole contents of FILE, otherwise check for the first
  1000-byte."
   (let ((coding-system-for-read 'binary)
         default-enable-multibyte-characters)
     (if (or
          (and
           (boundp 'image-types)
           (or
            (memq (intern (upcase (file-name-extension file)))
                  image-types)
            (memq (intern (downcase (file-name-extension file)))
                  image-types)))
          (member (downcase (file-name-extension file))
                  YAMA-file-not-binary-extensions)
          (member (downcase (file-name-nondirectory file))
                  YAMA-file-not-binary-files))
          nil
       (with-temp-buffer
         (insert-file-contents file nil 0 (if full nil 1000))
         (goto-char (point-min))
         (and (re-search-forward
               "[\000-\010\016-\032\034-\037]"
               nil t)
              t)))))

 (defadvice find-file (around YAMA-find-file (file &optional wild))
   (if (and
        (condition-case nil (YAMA-file-binary-p file) (error))
        (y-or-n-p "バイナリデータとして編集しますか?"))
       (hexl-find-file file)
     ad-do-it))

 (ad-activate 'find-file)

詳しい使い方

C-x C-fでファイルを開きます.バイナリファイルであれば,バイナリとして開き ます.

ただし,C-x C-f で表示することのできる画像については,そのまま画像として表 示しています.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6.2 圧縮されたファイルを開く (2003/10/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=auto-compression-mode"
"MeadowMemo/圧縮されたファイルを開く"へのコメント(無し)
検索全文Elisp

要約

圧縮されたファイルを開き,編集することができる.さらに,編集後自動的に圧縮してく れる.

何が問題なのか?

gz などで圧縮されたファイルを開くためには一度解凍する必要があります.また,編集後 には圧縮し直す必要があります.

何ができるのか?

圧縮されたファイルを直接編集することができます.

インストール方法

標準で附属していますので,インストールは不要です.

設定方法

.emacs に以下を追加します.

 
(auto-compression-mode)

詳しい使い方

普通にC-x C-fで圧縮されたファイルを開くと,普通に見ることができます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6.3 Word や Excel をテキストに変換 ― xdoc2txt (2005/02/17)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=xdoc2txt"
"MeadowMemo/WordやExcelをテキストに変換―xdoc2txt"へのコメント(無し)
検索全文Elisp
要約

Word や Excel,PowerPoint,PDFなどのファイルをテキストに変換できます.

何が問題なのか?

Word や Excel,PowerPoint,PDFなどのファイルを開いてもバイナリファイルであり,内 容は分かりません.

そこで,それらをテキストに変換するソフトを導入しようと思っても,Perlが必要だった り,いくつかの形式毎に複数のソフトが必要だったりと結構面倒なものです.

何ができるのか?

Word や Excel,PowerPoint,PDF,一太郎などのファイルをテキストに変換できます.対 応形式は xdoc2txt のページ で確認できます.

しかも,Windows の実行ファイルなので,これだけで動作しますので,導入も簡単です.

設定済みMeadowでは

Meadow の実行ファイルがある場所に入れてあります.

インストール方法

xdoc2txt のページ からダウ ンロードして,解凍します.

そして,得られたファイルをパスの通ったところへ置きます.Meadowの実行ファイルがあ る場所でも構いません.

詳しい使い方

bashを起動し,

xdoc2txt sample.doc > sample.txt

のようにして変換します.

以下で,このxdoc2txtを活用した設定を紹介していきます.

23.6.3.1 Word や Excel のファイル内容を表示 (2005/02/17)  
23.6.3.2 dired で Word などのファイル内容を表示 (2005/02/17)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6.3.1 Word や Excel のファイル内容を表示 (2005/02/17)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=xdoc2txt%20findfile"
"MeadowMemo/WordやExcelのファイル内容を表示"へのコメント(無し)
検索全文Elisp
要約

C-x C-f で Word や Excel,PowerPoint,PDF ファイルを開くだけで,その内容を 簡単に確認することができます.

何が問題なのか?

23.6.1 バイナリエディタ (2003/11/20) でバイナリファイルを開くと自動的にバイナリエディタになる設定 を紹介しました.

しかし,これでは,Word や Excel,PowerPoint,PDF,一太郎などのファイルもバイナリ で表示されます.ですが,これはあまりうれしくありません.これらのファイルであれば, テキストだけでも確認したいという時があります.

何ができるのか?

C-x C-f で Word や Excel,PowerPoint,PDF ファイルを開くだけで,その内容を 簡単に確認することができます.

ただし,表示されるのはテキストのみに限られます.PDF でもスキャナで画像として取り 込んで PDF に変換したようなファイルは表示できません.

設定済みMeadowでは

設定済みですので,そのまま Word や Excel,PowerPoint,PDF などのファイルを開いて みてください.

ただし,Cygwin(bash) のインストールが必要です.

設定方法

以下を .emacs に追加します.

ただし,使用するためには,Cygwin(bash) のインストールが必要です.

 
;; Customize 用のグループを追加.
(defgroup Meadow-Memo nil
  "Meadow Memo が配布するパッケージ関連の設定"
  :group 'emacs)

(defcustom YAMA-binary-files-editor t
  "nil 以外であれば,バイナリファイルを開く際に
バイナリエディタとして編集するかどうかを選択できる"
  :type 'boolean
  :group 'Meadow-Memo)

(defcustom YAMA-binary-use-xdoc2txt
  (if
      (and
       (or
        (locate-library
         shell-file-name nil exec-path)
        (locate-library
         (concat shell-file-name ".exe")
         nil exec-path))
       (locate-library
        "xdoc2txt.exe" nil exec-path))
      t
    nil)
  "nil 以外であれば,doc などの拡張子でバイナリ
ファイルの場合には,xdoc2txt を使って開くようにする."
  :type 'boolean
  :group 'Meadow-Memo)

(defcustom YAMA-file-not-binary-extensions '()
  "バイナリとみなさないファイルの拡張子を指定する.
  ただし,すべて小文字で指定する"
  :type '(repeat string)
  :group 'Meadow-Memo)

(defcustom YAMA-file-not-binary-files
  '("tags" "gsyms" "gpath" "grtags" "gsyms" "gtags")
  "バイナリとみなさないファイル名を指定する.
ただし,すべて小文字で指定のこと"
  :type '(repeat string)
  :group 'Meadow-Memo)

(defcustom YAMA-binary-xdoc2txt-exts
  '(
    "\\.rtf" "\\.doc" "\\.xls" "\\.ppt"
    "\\.jaw" "\\.jtw" "\\.jbw" "\\.juw"
    "\\.jfw" "\\.jvw" "\\.jtd" "\\.jtt"
    "\\.oas" "\\.oa2" "\\.oa3" "\\.bun"
    "\\.wj2" "\\.wj3" "\\.wk3" "\\.wk4"
    "\\.123" "\\.wri" "\\.pdf" "\\.mht")
  "*List of file extensions which are handled by xdoc2txt.
ただし,すべて小文字で指定のこと"
  :type '(repeat string)
  :group 'Meadow-Memo)

(defun Yama-file-correspond-ext-p (filename list)
  (let ((ret nil))
    (while list
      (when (string-match (car list) filename)
        (setq ret t))
      (setq list (cdr list)))
    ret))

(defun YAMA-file-binary-p (file &optional full)
  "Return t if FILE contains binary data.  If optional FULL
 is non-nil, check for the whole contents of FILE, otherwise
 check for the first 1000-byte."
  (let ((coding-system-for-read 'binary)
        default-enable-multibyte-characters)
    (if (or
         (not YAMA-binary-files-editor)
         (and
          (boundp 'image-types)
          (not (Yama-file-correspond-ext-p
                file YAMA-binary-xdoc2txt-exts))
          (or
           (memq (intern (upcase (file-name-extension file)))
                 image-types)
           (memq (intern (downcase
                          (file-name-extension file)))
                 image-types)))
         (member (downcase (file-name-extension file))
                 YAMA-file-not-binary-extensions)
         (member (downcase (file-name-nondirectory file))
                 YAMA-file-not-binary-files))
        nil
      (with-temp-buffer
        (insert-file-contents file nil 0
                              (if full nil 2000))
        (goto-char (point-min))
        (cond
         ((re-search-forward
           "[\000-\010\016-\032\034-\037]"
           nil t)
          (if (and YAMA-binary-use-xdoc2txt
                   (Yama-file-correspond-ext-p
                    file YAMA-binary-xdoc2txt-exts))
              1
            0))
         (t nil))))))

(defvar mmemo-buffer-file-name nil)
(make-variable-buffer-local
 'mmemo-buffer-file-name)

(defun Yama-binary-file-view (file)
  (let ((dummy-buff
         (generate-new-buffer
          (concat "xdoc2txt:"
                  (file-name-nondirectory
                   file))))
        (coding-system-for-write 'binary)
        (coding-system-for-read 'binary))
    (set-buffer dummy-buff)
    (make-variable-buffer-local
     'mmemo-buffer-file-name)
    (setq mmemo-buffer-file-name file)
    (let ((fn (concat
               (expand-file-name
                (make-temp-name "xdoc2")
                temporary-file-directory)
               "."
               (file-name-extension file)))
          (str nil)
          )
      (set-buffer-file-coding-system 'euc-japan)

      (copy-file file fn t)
      (insert
       "XDOC2TXT FILE: " (file-name-nondirectory file) "\n"
       "----------------------------------------------------\n"
       (shell-command-to-string
        (concat
         "cd " (file-name-directory fn) ";"
         "xdoc2txt" " -e " (file-name-nondirectory fn))))
      (goto-char (point-min))
      (end-of-line)
      (decode-coding-region (point) (point-max)
                            'euc-jp)
      (while (re-search-forward "\r" nil t)
        (delete-region (match-beginning 0)
                       (match-end 0)))
      (goto-char (point-min))
      (while (re-search-forward
              "\\([\n ]+\\)\n[ ]*\n" nil t)
        (delete-region (match-beginning 1)
                       (match-end 1)))
      (delete-file fn)
      )
    (setq buffer-read-only t)
    (set-window-buffer (selected-window) dummy-buff))
  (goto-char (point-min))
  (view-mode t))

(defadvice find-file
  (around YAMA-find-file (file &optional wild))
  (let ((bn (condition-case nil
                (YAMA-file-binary-p file) (error nil))))
    (cond
     ((and
       (not coding-system-for-read)
       (eq bn 1)
       (y-or-n-p
        "バイナリデータの内容を xdoc2txt で表示しますか?"))
      (Yama-binary-file-view file))
     ((and
       (not coding-system-for-read)
       (eq bn 0)
       (y-or-n-p "バイナリデータとして編集しますか?"))
      (hexl-find-file file))
     (t
      ad-do-it))))

(ad-activate 'find-file)

詳しい使い方

C-x C-f で Word や Excel,PowerPoint,PDF ファイルを開いてみてください.す ると,対応している形式であれば,ミニバッファに

バイナリデータの内容を xdoc2txt で表示しますか?(y or n)

と表示されます.ここで,y を入力すると,内容を表示できます.

うまく動かない

xdoc2txt の場所を確認してください.パスが通っているところにないと動作しません.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.6.3.2 dired で Word などのファイル内容を表示 (2005/02/17)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=xdoc2txt%20bf-mode"
"MeadowMemo/diredでWordなどのファイル内容を表示"へのコメント(無し)
検索全文Elisp
要約

dired で簡単に Word や PDF などのファイルの内容を表示できます.

何が問題なのか?

25.7.1 dired でファイルの内容を表示 ― bf-mode (2005/02/17) で dired からファイルの内容を表示する Elisp を紹介しました.しかし, これを使っても Word や PDF などはバイナリとして表示されてしまいます.

何ができるのか?

xdoc2txt を利用して,25.7.1 dired でファイルの内容を表示 ― bf-mode (2005/02/17) で Word や PDF の内容を表示できます.

設定済みMeadowでは

インストールと設定済みです.

インストール方法

bf-mode-xdoc.el をダウンロー ドして,ロードパスの通ったところに bf-mode.el の名前で保存します.

設定方法

以下を .emacs に追加します.

 
(require 'bf-mode)

以下は必要に応じて設定します.

 
;; dired で q とすると、dired を終了する
(setq bf-mode-directly-quit t)
;; 別ウィンドウに表示するサイズの上限
(setq bf-mode-browsing-size 10)
;; 別ウィンドウに表示しないファイルの拡張子
(setq bf-mode-except-ext '("\\.exe$" "\\.com$"))
;; 容量がいくつであっても表示して欲しいもの
(setq bf-mode-force-browse-exts
      (append '("\\.texi$" "\\.el$")
              bf-mode-force-browse-exts))
;; 圧縮されたファイルを表示しない
(setq bf-mode-archive-list-verbose nil)
;; ディレクトリ内のファイル一覧を表示
(setq bf-mode-directory-list-verbose t)

詳しい使い方

使い方は通常の bf-mode と同じです.25.7.1 dired でファイルの内容を表示 ― bf-mode (2005/02/17) を参照ください.

ただし,一般に Word などのファイル容量は大きいので,最初は表示されないことが多い でしょう.そのためには,j で強制的に表示させるようにします.

うまく動かない

xdoc2txt がパスの通ったところにあるか,Cygwin がインストールされているかを確認し てください.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.7 ロードされる lisp を調べる ― which (2003/08/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=which%20lisp"
"MeadowMemo/ロードされるlispを調べる―which"へのコメント(無し)
検索全文Elisp

何が問題なのか?

ロードパス上に複数,同じファイルがあった場合,どのファイルが Meadow に読み込まれ るのでしょうか?

Meadow はロードパスのリストから,ファイルを順番に探していきます.そして,最初に見 つかったファイルを読み込みます.しかし,どのファイルが読み込まれかを調べるのは面 倒です.

何ができるのか?

どのファイルが読み込まれるのかを簡単に調べることができます.

インストール方法は?

http://www.bookshelf.jp/elc/which.elをダウンロードし,ロードパスの通った ところへコピーします.

設定方法は?

 
(autoload 'which "which"
"Here is the which command for loadables" t)

を .emacs に追加します.

詳しい使い方は?

M-x which の後で gnus と入力すると,実際に読み込まれるファイルがミニバッファ に出力されます.

23.7.1 カーソル付近のファイルや URL を開く − which の活用 (2003/08/07)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.7.1 カーソル付近のファイルや URL を開く − which の活用 (2003/08/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=find-file%20which"
"MeadowMemo/カーソル付近のファイルやURLを開く−whichの活用"へのコメント(無し)
検索全文Elisp

何ができるのか?

23.7 ロードされる lisp を調べる ― which (2003/08/07) で which を紹介しましたが,そんなに使う機会なんてないですよね. 同名のファイルなんて,そうそうできるものでもありませんし...

しかし,これを利用すると, Emacs Lisp を編集中に

 
(require 'emu)

の emu あたりにカーソルを持っていき,C-c C-j とすれば emu.el を開くという ことが簡単にできるのです.いちいち find-file をする必要はないので,簡単で便利で す.

設定方法

そのためには,以下の設定を .emacs に追加します.これで,上のようなことができるよ うになります.

 
(load "which")
(defun browse-url-of-find-file (&optional arg)
  (interactive "P")
  (let ((file))
    (setq file (thing-at-point 'filename))
    (cond
     ;; ファイルが存在するか?
     ((file-exists-p file)
      ())

     ;; html ファイルなら # を削除する
     ((and
       (string-match "htm[l]*#" file)
       (file-exists-p (concat (substring file 0 (string-match "#" file)) "")))
      (setq file (concat (substring file 0 (string-match "#" file)) "")))

     ;; which で探してみる
     ((car (make-which-list file))
      (setq file (car (make-which-list file))))
     )

    ;; elisp なら el を開いてほしい
    (if (and
         (string-match "elc" file)
         (file-exists-p (concat (substring file 0 (string-match "elc" file)) "el")))
        (setq file (concat (substring file 0 (string-match "elc" file)) "el")))

    (if (file-exists-p file)
        (find-file file)
      (if (string-match "\\(ftp\\|http\\)://[^\\.]+\\.[^\\.]+" (thing-at-point 'url))
          (progn
            (setq file (thing-at-point 'url))
            (if (string-match ",.+" file)
                (setq file (concat (substring file 0 (string-match ",.+" file)) "")))
            ;;(if arg
            ;;    (w3m file)
            (browse-url file)
            ;;  )
            )
        (message "no file and url")))
    ))
(global-set-key "\C-c\C-j" 'browse-url-of-find-file)

詳しい使い方

さらに,今のディレクトリに同名のファイルがあればそれを開くので,

という風な HTML の編集時に meadow_1.html あたりにカーソルを持っていき,C-c C-j でそのファイルを開くことができます. HTML でなくても,ファイル名があれば, それを開くことができます.

ついでに, URL らしきものがあればブラウザで開いてくれます.コメントをはずすと, C-u C-c C-jとすれば w3m で開きます.

簡単なものですが,非常に便利です.

コメント

これはもう少し改造したものを愛用してます.ファイル名でも, URL でもジャンプしたい なと思ったら,C-c C-jで移動できて,便利です.

ま,今となっては ffap でいいじゃんという気もしますが... ffap で上記機能はすべ てできますし.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.8 Windows/Cygwin などとの連携 (2005/03/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=coordination%20windows"
"MeadowMemo/Windows/Cygwinなどとの連携"へのコメント(無し)
検索全文Elisp

Windows の右クリックや Cygwin 独自のパスなどを Meadow から利用できるようにする設 定などを紹介しましょう.

23.8.1 送るや関連付けでファイルを開きたい ― gnuserv (2004/10/02)  
23.8.2 関連付けで現在バッファを開く (2005/02/17)  
23.8.3 Cygwin のパスを使う ― cygwin-mount (2003/08/07)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.8.1 送るや関連付けでファイルを開きたい ― gnuserv (2004/10/02)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=gnuserv"
"MeadowMemo/送るや関連付けでファイルを開きたい―gnuserv"へのコメント(2007/12/28)
検索全文Elisp

要約

Windows の送るや関連付けでファイルを開く方法.

何ができるのか?

Windows の関連付けや送るに Meadow の実行ファイルを登録すると,常に Meadow が新規 に起動されてしまいます.個人の設定ファイルが増えてくると, Meadow の起動には少し 時間がかかりますので,既に Meadow を起動しているならその Meadow で開いて欲しいで すね.

そんなことをしてくれるのが gnuserv というソフトです.

インストール方法

gnuserv は下奥さんのページ からダウン ロードするか, Netinstall でインストールします.

自分でダウンロードする時には, PATH の通ったディレクトリに実行ファイルを,ロード パスの通ったところへ gnuserv.el を置いてください. Netinstall の場合は勝手にやっ てくれます.

その後で, AUTOEXEC.BAT に以下を追加します. Windows 2000 や XP なら,マイコン ピュータのプロパティから詳細設定→環境変数で追加しても構いません.

 
SET GNUCLIENTW=-F
SET GNUDOITW=-F
SET EMACS=meadow
SET RUNEMACS=runmw32

ただし, meadow の実行ファイルにパスが通っている必要があります.パスが通っていな いなら上の設定はフルパスで指定してください.また, Autoexec.bat を編集した時には, Windows の再起動が必要です.

設定方法

.emacs に以下を追加します.

 
(load "gnuserv")
(gnuserv-start)
(setq gnuserv-frame (selected-frame))

詳しい使い方

あとはデスクトップに gnuclientw.exe のショートカットを作れば, そのアイコンへのド ラッグ&ドロップでファイルを開けますし, そのショートカットを SendTo フォルダへ置 くと"送る"からも開くことができるようになります.

ファイルの関連付けであれば,フォルダオプション (XP ならコントロールパネルにありま す. 2000 ならメニューにあるはず) からファイルの種類を選び,関連付けをしたい拡張子 を選び,詳細設定を押します.そして, open か開くというのがあるはずなので,それを選 択し,編集を押します.そうすると,「アクションを実行するアプリケーション」という 欄があるので,そこに gnuclientw.exe "%1"を指定します.これで,その拡張子を持つファ イルを Meadow で開くことができます.

毎回 Meadow で開く必要がないのであれば,「ファイルの種類の編集」のところで「新規」 を選び,アクションに「 Meadow で開く」といった名前を「アクションを実行するアプリケー ション」に gnuclientw.exe "%1"を指定します.これで,その拡張子を持つファイルを右 クリックすると出るメニューに「 Meadow で開く」が追加されます.

コマンドラインから開く

コマンドラインからは,

gnuclientw.exe .emacs

とすると,開くことができます.

gnuclientw.exe +100 .emacs

のように行数の指定もできるので,プログラムのエラーなどで素早く該当箇所へ行きたい 時に便利です.

関数の実行

さらに, Meadow を起動後, 関数を実行させたい (例えば, 起動してメールチェックさせ るなど) 時には, gnudoitw.exe を使います.

例えば, gnudoitw.exe -f "(gnus)" を実行すると, Meadow 起動後 M-x gnusを実 行します. 既に Meadow が起動しているなら, M-x gnusのみを行います. gnus の 部分は起動後 M-x で実行できるものであれば何でも構いません. もちろん, 自作で もいいので, 様々なソフトとの連携を取ることができます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.8.2 関連付けで現在バッファを開く (2005/02/17)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=fiberfile"
"MeadowMemo/関連付けで現在バッファを開く"へのコメント(無し)
検索全文Elisp
要約

現在バッファをWindows の関連付けをもとに開くことができます.HTML の簡 易確認などに利用できます.

何が問題なのか?

dired 実行中に Explorerで確認したいとか,ファイル編集中に関連付けられたソフトで開 きたくなるときがあります.

何ができるのか?

Windows の関連付けをもとに現在バッファを開き直させることができます.

設定方法

以下を .emacs に追加します.

 
(defun buffer-fiber-exe ()
  (interactive)
  (let ((file (buffer-file-name)))
    (cond
     ((string= major-mode 'dired-mode)
      (if (string-match "^\\([a-z]:\\)/$" default-directory)
          (start-process "explorer" "diredfiber" "explorer.exe"
                         (match-string 1  default-directory))
        (start-process "explorer" "diredfiber" "explorer.exe"
                       (unix-to-dos-filename
                        (directory-file-name
                         default-directory)))))
     ((and mmemo-buffer-file-name
           (file-exists-p mmemo-buffer-file-name))
      (start-process "fiber" "diredfiber" "fiber.exe"
                     mmemo-buffer-file-name))
     ((not file)
      (error
       "現在のバッファはファイルではありません"))
     ((file-directory-p file)
      (start-process
       "explorer" "diredfiber" "explorer.exe"
       (unix-to-dos-filename file)))
     ((file-exists-p file)
      (start-process
       "fiber" "diredfiber" "fiber.exe" file))
     ((not (file-exists-p file))
      (error "ファイルが存在しません")))))

詳しい使い方

M-x buffer-fiber-exe とします.すると,diredバッファなら Explorerで,通常のファイルであれば関連付けられたソフトで開くことができ ます.

設定済みMeadowなら F9 で実行できます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.8.3 Cygwin のパスを使う ― cygwin-mount (2003/08/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cygwin-mount"
"MeadowMemo/Cygwinのパスを使う―cygwin-mount"へのコメント(無し)
検索全文Elisp

何ができるのか?

Cygwin (Unix) には mount というものがあります.

どういうものかを知るために, bash.exe を起動して, mount.exe と入力してみてくだ さい.環境によって,結果は異なると思いますが,私の環境では以下のようになります.

C:\cygwin\usr\X11R6\lib\X11\fonts on /usr/X11R6/lib/X11/fonts type system (binmode)
C:\cygwin\bin on /usr/bin type system (binmode)
C:\cygwin\lib on /usr/lib type system (binmode)
C:\cygwin on / type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)

この例だと, Cygwin 上では「 c:」というパスが「/cygdrive/c 」とできると分かりま す.

ただし,このパスは Cygwin の中でだけでのみ有効なため, Meadow では使うことができ ません.

そこで,この方式を使うための Elisp として, cygwin-mount があります.

インストール方法

入手先は http://www.emacswiki.org/elisp/cygwin-mount.el です.

これをダウンロードして,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'cygwin-mount)
(cygwin-mount-activate)

詳しい使い方

これで,普通にファイルを開くと,上記のようなパスを使うことができます.

ドライブに関しては,「//c/」と入力できますし,「/」で「 c:/cygwin 」になります. 自分で mount しておくと,もっと便利になります.

ただし,一部の Elisp とは干渉して,うまく動かなくなるかもしれません.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.9 ファイルを開く関連の便利ツール (2005/03/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=util%20findfile"
"MeadowMemo/ファイルを開く関連の便利ツール"へのコメント(無し)
検索全文Elisp

最近使ったファイルを記憶するなど,便利な Elisp をここで紹介しておきましょう.

23.9.1 最近使ったファイルを記憶させる (2004/01/17)  
23.9.2 開いていたファイルなどを記憶させる ― desktop (2003/08/07)  
23.9.3 ファイルをグループ化 ― filesets  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.9.1 最近使ったファイルを記憶させる (2004/01/17)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=recentf"
"MeadowMemo/最近使ったファイルを記憶させる"へのコメント(無し)
検索全文Elisp

要約

最近開いたファイルを記録する

何ができるのか?

WORD などのソフトでは最近使ったファイルを記録しておくことができ,目的のファイル をすぐに開くことができます.

Meadow でも同じことが可能です.

インストール方法

この機能は標準で附属しています.

設定方法

以下を .emacs に追加します.

 
(recentf-mode 1)

詳しい使い方

File メニューに Open Recent が追加され,メニューに最近使ったファイルが表示され ます.

また M-x recentf-open-files でも最近使ったファイルの一覧を表示することがで きます.一覧が表示されたら,ファイルを選んで RET でそのファイルを開くこと ができます.

設定は, Open Recent メニューの Options で設定できます.

session + minibuf-isearch

ネタ元:http://ko.meadowy.net/~shirai/diary/20030319.html#p01

recentf と同じ機能を持たせる方法として,session.elminibuf-isearch.elを利用する方法があります.

そのために, session と minibuf-isearch の設定を以下のようにします.一部は好みに合わ せて変更してください.

 
(when (locate-library "recentf")
  (require 'recentf)
  (setq recentf-max-saved-items 80)
  (setq recentf-virtual-pathes-handler nil)
  (add-hook 'after-init-hook 'recentf-mode)
  (global-set-key "\C-cf" 'recentf-open-files))

(when (locate-library "session")
  (setq session-globals-max-size 512)

  (setq session-globals-regexp "-\\(ring\\|history\\|hist\\)\\'")
  (require 'session)

  (defadvice find-alternate-file
    (before session-store-buffer-places last activate)
    "Invoke session-kill-buffer-hook."
    (session-kill-buffer-hook))
  (add-to-list 'session-kill-buffer-commands 'find-alternate-file)

  (add-hook 'after-init-hook 'session-initialize))

(when (locate-library "minibuf-isearch")
  (setq minibuf-isearch-indicator-string nil)
  (setq minibuf-isearch-display-message-always t)
  (setq minibuf-isearch-match-format-string "[isearch with '%s']")
  (setq minibuf-isearch-no-match-format-string "[No further match with'%s']")
  (setq minibuf-isearch-message-on-right t)
  (setq history-length 128)
  (require 'minibuf-isearch))

http://ko.meadowy.net/~shirai/diary/20030803.html#p05によると,以下で resentf.el のリストを file-name-history として利用できる.

 
(defun my-minibuffer-setup-function ()
  (let ((case-fold-search nil)
        (home (concat "^" (regexp-quote (expand-file-name "~/"))))
        (hist (symbol-value minibuffer-history-variable))
        elt lst rl rlst)
    (when (and (boundp 'recentf-list)
               (eq 'file-name-history minibuffer-history-variable))
      (setq rl (copy-sequence recentf-list))
      (while rl
        (if (string-match home (car rl))
            (setq rlst (cons (concat "~/" (substring (car rl) (match-end 0)))
                             rlst))
          (setq rlst (cons (car rl) rlst)))
        (setq rl (cdr rl)))
      (setq hist (append hist (nreverse rlst))))
    (let ((tmp hist))
      (while tmp (setq tmp (setcdr tmp (delete (car tmp) (cdr tmp))))))
    (set minibuffer-history-variable hist)))

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-function)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.9.2 開いていたファイルなどを記憶させる ― desktop (2003/08/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=desktop-read-save"
"MeadowMemo/開いていたファイルなどを記憶させる―desktop"へのコメント(無し)
検索全文Elisp

何ができるのか?

ある作業をする時には,作成するファイルを開き,参照用に別のファイルを開きと,毎回 同じファイルを開くことがよくあります.こんな作業を Meadow の起動の度にするのは面 倒だし,無駄です.

そんな処理を簡単に自動でしてくれるのが desktop です.

これは,今開いているファイルの一覧を記憶しておき,次回起動時にすべてのファイルを 自動で開き直してくれる機能です.

インストール方法

標準で付属しています.

設定方法

以下を .emacs に追加します.

 
;; 保存しないファイルの正規表現
(setq desktop-files-not-to-save "\\(^/[^/:]*:\\|\\.diary$\\)")
(autoload 'desktop-save "desktop" nil t)
(autoload 'desktop-clear "desktop" nil t)
(autoload 'desktop-load-default "desktop" nil t)
(autoload 'desktop-remove "desktop" nil t)

詳しい使い方

使い方は簡単. まずは作業をして, 今の状態を保存したいと思ったら, M-x desktop-saveとして, ディレクトリを指定します.すると,そのデイレクトリに今どの ファイルを開いているかの情報が保存されます.

そのファイルの読み込みは, 保存したフォルダのファイルかフォルダを開いておいて M-x desktop-read で読み込みます. すると, 保存時に開いていたファイルやフォ ルダを開いてくれます.

一度 desktop-read で読み込むと, Meadow 終了時に自動的にその状況を更新してくれます

 
(desktop-load-default)

としておくと, 起動時にデフォルトの設定 (ホームディレクトリに保存された設定) を読 み込むことも可能です



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.9.3 ファイルをグループ化 ― filesets

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=filesets"
"MeadowMemo/ファイルをグループ化―filesets"へのコメント(無し)
検索全文Elisp

要約

ファイルをグループ化して,それらをまとめて開いたり,閉じたりできる.

何が問題なのか?

多数のファイルがある場合,それらを開いたり閉じたりするのは結構面倒なものです.

何ができるのか?

ファイルをグループ化して管理できます.

設定済みMeadowでは

Meadowに標準で付属しています.

設定方法

.emacsに以下を追加します

 
(filesets-init)

詳しい使い方

メニューにFilesetsが追加されます.まずはここから Filesets→Edit Filesetsと選びま す.

すると,カスタマイズの画面になりますので,「Filesets Data」をカスタマイズして, ファイルのグループを定義します.

下記のように,INSを押して,名前(Name)とデータ(Data)を指定します.例ではディレク トリとファイル名の正規表現(Pattern)を指定しています.「Value Menu」を押せば,他 にもファイル名を列挙する方法などを選択できます.

ファイルセットの設定

これで,設定をする(Set for Current Sessionを押すと設定するが,.emacsには保存され ない.Save for Future Sessionsを押せば .emacsに保存できる) とメニューにその項目 が追加されます.

このメニューで先頭の「Pattern: ~/www/soft/...」の行を選択すると,一致したファ イルをすべて開くことができます.「Colose all files」で一致したファイルを閉じるこ とができます.

「Run Command」で現在のグループに含まれているファイルを対象にgrepや置換もできます.

ファイルセットのメニュー

うまく動かない

手元ではgrepが動作しませんでした.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

23.10 ディレクトリを別ウィンドウで一覧 ― speedbar (2003/08/07)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=speedbar"
"MeadowMemo/ディレクトリを別ウィンドウで一覧―speedbar"へのコメント(無し)
検索全文Elisp

M-x speedbar をお試しあれ.別ウィンドウが開いてカレントディレクトリのファ イル一覧が表示されます.マウスをよく使う人向けかな

speedbar という割にはスピードが落ちてる気がするのは私だけか? キーボードの方が速 いでしょ

ただ,モードによっては, speedbar に関数を表示できるものもあって,そういう場合に は便利です.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]