top  Index  Search  Changes  RSS  Login

Windows

(↓どなたかよろしくおねがいします. 作者はふだん win を使っていません)

windows で howm を使うための手順

  1. 雑貨屋へ行く
  2. ランタンを買う
  3. モルゴスを倒す

※ xyzzy についてはhowm-wrapへ. 秀丸についてはHideMaruへ.

注意点

Tips

指定した拡張子のファイルへのリンクを関連付けで開く

(defun my-fiber-from-file-name (name)
  (interactive "fFiber File:")
  (if (file-accessible-directory-p name)
      (my-folder-open name)
    (if (file-exists-p name)
        (start-process "fiber" nil "fiber.exe" (expand-file-name name))
      (error "File does not exist."))))

(defun add-fiber-action-lock-rule ()
  (let ((rule
         (action-lock-general
          'my-fiber-from-file-name
          "^>>> \\(.+[.]\\(html\\|htm\\|exe\\|ps\\|gz\\chm\\|zip\\|rar\\|djvu\\|doc\\|xls\\|ppt\\|jpg\\|gif\\|bmp\\)\\)\\( +[0-9]+\\)?"
          1)))
    (if (not (member rule action-lock-default-rules))
        (progn
          (setq action-lock-default-rules
                (cons rule action-lock-default-rules))
          (action-lock-set-rules
           action-lock-default-rules)))))
(add-hook 'action-lock-mode-on-hook
          'add-fiber-action-lock-rule)

ImageCaptureの最後にあるドラッグ&ドロップの設定と併用すると 便利。

howm的には

(setq howm-view-external-viewer-assoc
      '(
        ("[.]\\(chm\\|djvu\\|html\\|exe\\|ps\\|gz\\|rar\\|zip\\|jpg\\|mp3\\|gif\\|png\\|pdf\\|doc\\|xls\\|ppt\\)$" . "fiber %s")
        ("[.]dvi$" . "dviout %s")
        ))

とするのが普通ですね。上と動作が違うので好みは分かれると思います。


Rast (2005-07-25 21:40:55)

  • 2005-07-19 (火) 13:26:57 Anonymous : Cygwinのgrepで、LANG=ja_JP.SJIS、.howmファイルをsjis-dosに変換して、howm-view-use-grep tでなんとかgrepを使うことに成功しました。全然早いです。しかし、howm-list-recentやhowm-list-allを打つと、
Spawning child process: exec format error

と出ます。これは何かgrepへの引数が間違っているのでしょうか。grepはgrep (GNU grep) 2.5.1 です。

  • 2005-07-20 (水) 00:00:35 Anonymous : まずは (setq debug-on-error t) してから発症させて, バックトレースを見てみるとか
  • 2005-07-20 (水) 00:00:45 Anonymous : ちなみに, エラーメッセージそのまま検索したら, 2ch2:584-585nなんて出てきました
  • 2005-07-20 (水) 00:02:34 Anonymous : 何にせよ, make test で表示されるバージョン一式 + cygwin のバージョンは書いといた方が, 後から見る人もうれしいんちゃいます? :-)
  • 2005-07-20 (水) 11:28:06 Anonymous : すみませんでした。howm-testやってみました。

[症状] menu画面で、howm-list-recentで、  Spawning child process: exec format error と表示されて、(setq howm-list-recent-title t)にしているにも かかわらず、タイトルが表示されない。

[テスト1] 以下をsample/dot.emacsに追加すると出る。

;; GNU grepを使用する
(setq howm-view-use-grep t)
(setq howm-view-grep-command "c:/cygwin/bin/grep")
(setq howm-view-fgrep-command "c:/cygwin/bin/grep")
(setq howm-view-grep-extended-option "-E")
(setq howm-view-grep-fixed-option "-F")
■ バージョン
howm: 1.3.0rc3 (compile: nil, make: nil, test: t)
Emacs: 21.4.1 (i386-mingw-nt5.0.2195) of 2005-04-05
system: windows-nt
window system: w32
Meadow: Meadow-2.10 (ASAGAO)
  • 2005-07-20 (水) 21:50:48 Anonymous : cygwin のバージョンと, 残りのコメント(00:00:35, 00:00:45)も確認お願いできます?
  • 2005-07-25 (月) 11:44:12 Anonymous : Cygwinのバージョンは、
$ cygcheck -V
cygcheck version 1.74
System Checker for Cygwin
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004,    2005 Red Hat, Inc.
Compiled on Jul  2 2005

です。(setq debug-on-error t)は、

Debugger entered--Lisp error: (file-error "Spawning child process"
"exec format error")
  call-process-region(1 1 "c:/cygwin/bin/grep"
"c:/DOCUME~1/boo/LOCALS~1/Temp/emg01104" (t nil) nil "-E" "-i" "-Hnr"
"-e" "^= +" "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
"o:/home/boo/.howm/2005/07/2005-07-00-000005.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-181300.howm" ...))
   howm-call-process-here("c:/cygwin/bin/grep" ("-E" "-i" "-Hnr" "-e"
 "^= +" "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-00-000005.howm"
 "o:/home/boo/.howm/2005/01/2005-01-05-094057.howm" ...) nil)
   howm-call-process("c:/cygwin/bin/grep" ("-E" "-i" "-Hnr" "-e" "^= +"
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/01/2005-01-05-094057.howm" ...))
   howm-real-grep-single(("^= +")
 ("o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-00-000005.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-153600.howm" ...) nil nil)
   howm-real-grep(("^= +")
 ("o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-153600.howm" ...) nil nil)
   howm-grep(("^= +")
 ("o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-153600.howm" ...) nil)
   howm-grep-items(("^= +")
 ("o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-00-000005.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-153600.howm" ...) nil)
   howm-folder-grep-internal:files((:files
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) ("^= +") nil)
   howm-folder-grep-internal:pages-files(("o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-153600.howm" ...) ("^= +") nil)
   #[(p) "@A・・\n\"A! \f

 棕+&髟阡; 梵 黼癇竏纈 鞳 h

 pages pattern reverse assoc fixed-p] 4]((:file
 . howm-folder-grep-internal:pages-files))
   mapcar(#[(p) "@A・・\n\"A! \f

 棕+&髟阡; 梵 黼癇竏纈

 type h pages pattern reverse assoc fixed-p] 4] ((:file
 . howm-folder-grep-internal:pages-files) (:buf
 . howm-folder-grep-internal:pages-buffers)))
   howm-folder-grep-internal:pages((:pages
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) ("^= +") nil)
   apply(howm-folder-grep-internal:pages ((:pages
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) ("^= +") nil))
   gfunc-call(howm-folder-grep-internal (howm-folder-type) ((:pages
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) ("^= +") nil))
   howm-folder-grep-internal((:pages
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) ("^= +") nil)
   howm-folder-grep((:pages
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...) "^= +" nil)
   howm-view-search-folder-items("^= +" (:pages
 "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"
 "o:/home/boo/.howm/2005/07/2005-07-20-155500.howm" ...))
   howm-view-list-title("^= +")
   howm-list-title()
   howm-list-normalize()
   howm-list-recent()
   apply(howm-list-recent nil)
   (save-current-buffer (set-buffer prev) (apply (function
 howm-list-recent) nil))
   (with-current-buffer prev (apply (function howm-list-recent) nil))
   (let ((a nil) (cur ...) (prev ...)) (with-current-buffer prev (apply
 ... nil)))
   (lambda (&optional howm-menu-action-arg-name) (let (... ... ...)
 (with-current-buffer prev ...)))(nil)
   action-lock-invoke(nil)
   (let ((case-fold-search nil)) (when (null ...)
 (action-lock-goto-next-link)) (action-lock-invoke arg))
   (save-excursion (goto-char pos) (let (...) (when ... ...)
 (action-lock-invoke arg)))
   (if nil (goto-char pos) (save-excursion (goto-char pos) (let
 ... ... ...)))
   (let ((pos #<marker at 98 in
 *howmM:o:/home/boo/.howm/0000-00-00-000000.howm*>)) (if nil (goto-char
 pos) (save-excursion ... ...)))
   (lambda (arg) (interactive "P") (let (...) (if nil ... ...)))(nil)
   call-interactively((lambda (arg) (interactive "P") (let (...) (if
 nil ... ...))))
   recursive-edit()
   byte-code("・!棹・ 棹∧
 !棹\n椒?

です。 2005-07-20 (水) 00:00:45 Anonymousさんへのコメントですが、既にfgrep, egrepはシェルスクリプトになっています。



  • 2005-07-25 (月) 21:42:07 名無しさん : thx. じゃあ↓はどないでしょう? win よくわからんから, ピンボケだったらごめんなさい.
    • (ア) (配布時のままの sample/dot.emacs で) make test して, *scratch* に以下を貼りつけて, M-x eval-buffer
(howm-call-process "c:/cygwin/bin/grep"
                   '("-E" "-i" "-Hnr" "-e" "^= +"
                     "o:/home/boo/.howm/2005/07/2005-07-22-165007.howm"))
    • (イ) 以下を sample/dot.emacs に追加して make test で起動し, 「C-c , l」して出たエラーのバックトレース(「Debugger entered」以下の表示内容)
(setq howm-view-use-grep t)
(setq howm-view-grep-command "c:/cygwin/bin/grep")
    • (ウ) cygwin で c:/cygwin/bin/grep -E -i -Hnr -e "^= +" o:/home/boo/.howm/2005/07/2005-07-22-165007.howm
    • (エ) cygwin で file c:/cygwin/bin/grep
    • (オ) win のコマンドプロンプトで c:/cygwin/bin/grep -E -i -Hnr -e "^= +" o:/home/boo/.howm/2005/07/2005-07-22-165007.howm
    • (カ) win のコマンドプロンプトで c:/cygwin/bin/grep -E -i -Hnr -e hoge o:/home/boo/.howm/2005/07/2005-07-22-165007.howm
    • (キ) cygwin でなく win 本体から見ての, c:/cygwin/bin/grep の正体. スクリプトか, バイナリか, ○○へのショートカットか, …
    • (ク) (イ) をやめて, かわりに↓で make test したらどうか?
(setq howm-view-use-grep t)
(setq howm-view-grep-command "c:/cygwin/bin/egrep") ;; path は環境にあわせて
(setq howm-view-fgrep-command "c:/cygwin/bin/fgrep") ;; path は環境にあわせて
(setq howm-view-grep-extended-option nil)
(setq howm-view-grep-fixed-option nil)
(setq howm-view-grep-file-stdin-option nil)  ;; パターンは引数で渡す
    • (ケ) (ク) の "c:/cygwin/bin/egrep" を単に "egrep" としてはだめか?
  • 2005-07-29 (金) 12:40:24 Anonymous : ろくにレポートだせずにすみません。最近現象が出なくなって、grepでもC-c,lでリストが出るようになっています。多分Cygwinのアップデートで直ったのだと思います。ところで、howm-view-use-grep tでも、たまにfake-grepが使用されて時間がかかることが多いですが、これはUNIXでは出ない現象でしょうか。
  • 2005-07-29 (金) 20:17:03 Anonymous : アップデートした cygwin のバージョンを書いておいたら, 後で見た人の参考になるかと :-). それから, もしお時間があれば, (エ)(キ) だけでも教えていただけたらうれしいです.
  • 2005-07-29 (金) 20:17:30 Anonymous : で, 聞いたことないですねえ… > fake-grep. 例によって, make test か test.bat で発症させる方法をみつけるのがデバッグの第一歩でしょうか. ちなみに, fake-grep が呼ばれたと判断した理由は何でしょう?
  • 2005-07-29 (金) 20:37:23 Anonymous : 時間がかかっている検索の場面で、C-gを押しても「C-gをもう一度押せ」というメッセージが表示されない場合があります。それがfake-grepが走っているのではと考えました。
  • 2005-07-29 (金) 22:22:14 Anonymous : fake-grep が呼ばれたか確認するには, M-x debug-on-entry RET howm-fake-grep RET しておくのが確実かな.
  • 2005-07-29 (金) 22:25:21 Anonymous : でも, 「fake-grep だろう」とかの原因を推測するより前に, 起こった事実をありのままに伝えてほしいです. バグレポート の「関連」に挙がっているリンク先を一度読んでもらえば, 同意いただけるんじゃないかと.
  • 2005-07-29 (金) 22:25:48 Anonymous : …と頭でわかっていても, 実際はうっかりしやすいから, テンプレートとして make test をおすすめしています.
  • 2005-11-14 (月) 00:22:34 taku : ちなみに、自分はMeadow3(2もOK)とCygwinのgrepで、平和なhowmの毎日を送っています。ちなみに*.howm(今は*.rdだけど)のfile-coding-system=japanese-shift-jis-dosです。
 ~/.emacs
 ; GNU grepを使用する
 (setq howm-view-use-grep t)
 (setq howm-view-grep-command "c:/cygwin/bin/grep")
 (setq howm-view-fgrep-command "c:/cygwin/bin/grep")
 (setq howm-view-grep-extended-option "-E")
 (setq howm-view-grep-fixed-option "-F")

win 使いの方に質問があります.

※ コメントはページ末尾のコメント欄へでもお願いします.

configure && make && make install でインストールする場合, 初期メニューファイル 0000-00-00-000000.howm の置き場所は, configure 時のオプション

--with-endir=DIR
--with-jadir=DIR

で指定することになっています.

現在は DIR には絶対パスしか指定できません. これを相対パスも指定できるよう改良したいと計画しています. (環境によっては相対パスの方が便利らしいです.)

  • --with-jadir=/usr/share/howm/ja のように絶対パスを指定したら, これまでどおり
  • --with-jadir=howm-ja のように相対パスを指定したら, $lispdir/howm-ja と解釈

このためには, configure.in 内で「絶対パスか否か」を判定しないといけません. unix なら安直に「先頭が / か」で済みそうなのですが, win では どうすれば良いでしょうか?

つまり, 次のコードが win でも OK か, だめならどう直せばよいか, を教えてください.

case "$tmpval" in
/*) ;;
 *) eninstdir='${lispdir}/${endir}' ;;
esac
  • 2005-11-28 (月) 10:13:52 taku : ご質問のconfigureオプションのWindowsパス指定の件ですが、私はCygwinでC:\Cygwinを/にマッピングさせています。--prefix=/usr/localでいつも入れています。相対パスの指定はしたことはありまあせん。大体Meadowを使う人はたいていCygwinは入れているので、絶対パスだけでもいいと思います。
  • 2005-11-28 (月) 13:23:52 KoRoN : こんなのがその後の処理を通るかはちょっと不明なのですが、--prefix=C:/mylocal/howmみたいなドライブを含む絶対パス指定が、相対パス扱いになっちゃいそうです。
  • thx > taku さん. 気になることが二点あります.
    • cygwin 使用者は, 皆さんその類の設定をしていると想定して OK でしょうか. つまり, 「howm の Makefile では c:\hoge\fuga も c:/hoge/fuga も非対応」という仕様で構わないでしょうか.
    • cygwin の「マッピング」に頼ると, emacs 側が困らないでしょうか. できたら, *scratch* に以下を貼って C-j した結果を教えていただけると助かります.
(list (file-exists-p "/usr/local") (file-exists-p howm-ja-dir) (howm-menu-skel) howm-ja-dir)
  • そうそう, それが心配で > KoRoN. 「じゃあどうしたらええねん?」を誰か教えてくれんかなあと. unix な人にはちょっとだけ妥協してもらって, これでお茶を濁す?
case "$tmpval" in
?:/*) ;;
/*) ;;
 *) eninstdir='${lispdir}/${endir}' ;;
esac
  • これとは別件で, 区切りが / じゃなく \ なせいではまった経験もあり. 「c:\hoge/fuga」って通るもの?
  • 2005-11-29 (火) 01:38:53 taku : こんなんがC-jで出ました。
(t t ("0000-00-00-000000.howm" /usr/local/share/howm/ja") "/usr/local/share/howm/ja")
  • む, meadow からでも cygwin の「マッピング」が見えてるみたいですね. 失礼しました.
  • 結局, 上記とは別の方針になりそうです(相対パスにするか否かを別オプションで指定 → howm-test051129). thx > お答えくださった皆様
(Please LogIn to post comments.)

Last modified:2008/11/10 22:39:25
Keyword(s):
References:[文字コード] [ExcludedFile] [Rast] [バグレポートFAQ] [BugReportPaste] [FAQ.0]