Sponsored Link
[Since: <2001/08/26 --:--:-- +0900>]
[Last updated: <2006/11/03 06:51:47 +0900>]

[Top]  [xyzzy 関連の覚え書き]  [*scratch*]

xyzzy 関連

xyzzy は、00README.html によると、

xyzzyはWindows NT 4.0、Windows 2000、Windows XP、Windows 95、Windows 98、Windows Me(たぶん。見たこともないけど)、およびWindows NT 3.51(一部機能に制限あり。最近試してないので動くかどうか不明)で動作する日本語テキストエディタのようなものです。

らしい、亀井さん作の、Common Lisp によって拡張可能なフリーのテキストエディタです。

とても便利で、かなりお世話になっています。

ここにおいてあるものはあまり行儀がよくなく力技で書かれていることが多いので、それなりに動作させるためには byte-compile が必須です。多分。


NetInstaller 用パッケージリストはこちら。→ [ packages.l ]

ツール

outline-tree2

[ダウンロード]

[outline-tree2] (2006/10/25)

[インストール]

treeview ライブラリと buf2html が事前に導入されていなければなりません。
不明な場合は、導入されていないものについて以下のリストを上から順番にインストールしてください。

  1. TreeView.dll (ver. 1.03 以降) (kazu.y さん)
  2. color (ここから直接ダウンロード)
  3. win-window
  4. treeview (ここから直接ダウンロード)
  5. buf2html
  6. outline-tree2

[説明]

kazu.y さんの TreeView.dll を用いて、バッファリストのツリー表示、バッファ内のアウトライン表示を行います。

出来ること:

  • 基本機能
    • バッファリストのツリー表示
      • バッファの選択
      • フォルダを閉じる
    • バッファ内アウトライン表示
      • バッファ内ノード位置への移動
  • Treeview設定・操作
    • TreeView の各種設定
    • TreeView ウィンドウ位置の変更
    • TreeView ウィンドウの開閉
    • TreeView ウィンドウ上キーバインドの設定 (Alt キー使用不可)
    • 大体の操作が TreeView 上右クリックから可能
  • 編集
    • 「範囲ノード」の上下入替え
  • その他
    • アウトライン作成関数の半自動生成
    • ファイル先頭部分への記述による outline 種類自動選択

[デモ]

outline-tree2

[ChangeLog]

  • (2006/10/25)
    • 「アウトラインツリー設定」のプロパティシートのタイトルに、outline-tree のバージョン番号を表示するように。
    • outline-tree 起動時に、バッファの編集状態を反映するように。
    • バッファノード削除時のタイトルバー、バッファの再描画を廃止。
  • (2006/10/21)
    • バッファ編集時、バッファノード名に "* " を追加するように。
    • バッファノード選択時、タイトルバー、バッファバーを更新するように。
    • 「カーソル追従」時、カーソル移動先バッファが非表示バッファであっても、ファイルに関連づいているバッファの場合は追従するように。
    • 「アウトラインタイプ説明」メニューに「一覧」を追加。
    • 「アウトラインタイプ説明」での説明出力の順番を変更。
    • 「カテゴリを閉じる」を追加。
      • *outline-tree-delete-category-buffers-except-regexp-list* 追加。
      • outline-tree-delete-category-buffers 追加。
      • outline-tree-menu-gen 更新。
    • メニューバーのメニューで「アウトラインタイプ選択」「アウトラインタイプ説明」が動作しない現象への対処。
    • アウトラインタイプを明示的に選択していない場合でのメニューの表示の高速化。
    • outline-tree-create-outline-lisp で lisp のアウトラインを作成すると、その後で、シンボルの衝突が起こる問題を修正。(thanks. XyzzyWiki)
    • outline-tree-create-outline-lisp で lisp のアウトライン作成時に「'(defmacro ...)」というようなリストが存在してもエラーが発生しないように更新。(thanks. XyzzyWiki)
    • 表示バッファ、非表示バッファのカテゴリノード名に任意の文字列を設定しても outline-tree 起動時に「非表示バッファのカテゴリノード」が「表示バッファのカテゴリノード」よりも上にくるように対応。
    • *outline-tree-visible-buffer-category-node-name* のデフォルト値を "=== 表示バッファ ===" に変更。
    • *outline-tree-invisible-buffer-category-node-name* のデフォルト値を "=== 非表示バッファ ===" に変更。
    • outline-tree 起動時に、選択バッファに対するノードを確実に選択するために、outline-tree-create の中で outline-tree-select-node するように。
    • 「ライン・ボタンをルートから表示」をデフォルト非設定に。
      • *outline-tree-style-linesatroot* の初期値を nil に変更。
  • (2006/04/04)
    • フォルダノード名の表示幅を設定可能に。
    • [アウトラインツリー設定]-[基本設定]に、「フォルダ名表示幅」オプションを追加。
  • (2006/04/03)
    • NetInstaller 上でインストール (i) した直後にアンインストール (d) しても「パッケージが存在しません: "outline-tree2"」と出力されないように。
    • 未保存バッファがある状態で kill-xyzzy を実行したが xyzzy の終了を中断した場合、outline-tree2 のバッファノードが全て削除されてしまう問題に対処。
  • (2006/03/30)
    • アウトラインタイプ名を「TAG」から「タグ (HTML,XML)」に変更。
    • outline-tree-detect-category-name 関数更新。
    • 存在しないファイルをショートパス名で開いた場合、フォルダノードがショートパス名で表示・管理されてしまう問題を修正。
    • [アウトラインツリー設定]-[基本設定]に、「xyzzy 起動時はアウトラインツリーを起動しない」オプションを追加。
    • ed::build-summary-function の関数を元に関数一覧を作成する List Function を追加。
    • その他。
  • (2006/02/26)
    • Grep 結果用アウトライン作成関数追加。
    • LISP 用アウトライン作成関数で変数の docstring を取得できていなかったのを修正。
    • バッファのカテゴリ分類のデフォルトに rss-mode 用の分類を追加。
    • メニューにバッファバーのメニューも表示するように。
  • (2006/01/29)
    • RFC 用アウトライン作成関数追加。
    • Lisp 用アウトライン作成関数更新。
    • その他。
  • (2006/01/15)
    • Perl 用アウトライン作成関数更新。
    • Visual Basic ライクな言語用アウトライン作成関数追加。
    • ASP (VBScript) 用アウトライン作成関数追加。
  • (2005/12/28)
    • app-menu 追加。
    • 矩形選択の表示問題回避方法を変更。
    • その他。
  • (2005/12/24)
    • 「ノード追従」設定の状態でバッファノードを明示的に実行した場合は、「アウトラインの作成/更新」動作をするように。
    • outline-tree 上の Delete キーでアウトラインを削除するように。
    • outline-tree-create-outline-java 更新。
  • (2005/12/23)
    • folder-node からのファイラ起動動作を変更。
    • outline-tree-create-outline-and-select-node の動作を変更。
    • NetInstaller の (ni-autoload) 用ファイル更新。
    • その他。
  • (2005/12/18)
    • セレクションがある場合の動作調整。
  • (2005/12/15)
    • ツールバーを追加。
  • (2005/12/10)
    • 公開。

browserex

[ダウンロード]

[browserex] (2005/10/08)

[説明]

山本泰三さんの html+-mode 等で s.oowada さんの browser.dll、 いまいたけをさんの browser.dll 拡張版 を便利に使わせてもらう。

browser.l と同様に browser.dll を使用するためのサンプル Lisp ファイルです。主に HTML ファイルのプレビューアとして browser.dll を利用することを想定しています。

出来ること:

  • 入力された URL の内容の表示
  • 表示内容の再描画
  • 開いているかどうかの判定
  • 閉じる
  • 表示開始時(開くとき)のみ有効な表示位置(上下左右、高さ or 幅)指定
  • xyzzy 上の表示位置(上下左右)の変更とその位置の自動保存
  • カレントバッファのファイル内容表示
  • ファイル名を持たないカレントバッファの内容を文字コード・改行コードを保ったままテンポラリファイルに出力し、HTML ファイルとして表示
  • カレントバッファのファイルのディレクトリ表示
  • (ディレクトリ表示時のスタイル指定)
  • ツールバーからの操作
  • マウスで指定した URL、ローカルファイルパスの内容の表示
  • スクロール
  • (進む、戻る、ホームへ移動、開いている URI の表示)

下に設定例として記載している内容(の一部)。

  • M-F9,M-F12 で browser.dll 使用の on/off。
  • M-F10 でフォルダ表示。
  • M-F11 で browser.dll の表示領域を変更。
  • 右クリックの動作の変更。
  • html+-mode では C-x C-s で保存と同時に画面更新。
    (喜多さんの auto-time-stamp.l を使用させて頂いているため、save-buffer-with-time-stamp が定義されている場合はそちらを使用するようになっています)。
  • 一例として Another HTML-lint を使う設定。
    (AN HTTP ServerActivePerl を用いてローカルで動かしており、確認の際には cygwin 上での w3m での表示も確認している。)

[browserex]

[browserex-syslistview]

[browserex-htmllint]

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/04/16)
    • browserex-uninstall を interactive でない関数に変更。
    • xyzzy 0.2.2.234 対応
      • 半角カナを全角カナに変更。
    • メニュー指定修正。
      • *browserex-menu-position* をヒストリ変数でなくした。
        ⇒ (bx::browserex-uninstall) を評価後再起動することで反映されます。
      • *browserex-menu-position* の初期値変更。
      • *browserex-menu-name* の初期値変更。
      • プロパティーシートでの menu 追加位置指定廃止。
  • (2004/03/03)
    • navigate に対して ~/ で開始する文字列を渡した場合展開するように。
    • navigate での interactive 入力で補完可能に。
    • *browserex-history* の追加。
    • *browserex-scheme-list* 追加。
    • *browser-start-page* のデフォルト値を nil に。
  • (2004/01/20)
    • insert-browserex-focus-menu-items 拡張。
    • メニュー関連修正。
    • 稲原さんに指摘いただいたコメント内 typo 修正。
    • win-window.l がない場合でも一部機能が使用できないだけで動作するように修正。
    • uninstall-browserex を修正とともに browserex-uninstall に名称変更。
  • (2003/05/06)
    • ローカルファイル参照時の変換
    • browserex-mouse-menu-popup 修正。(複数行選択時に右クリックでメニューが表示されない事象)
    • メニューの「ツール>共通設定」にプロパティシート追加。(win-window.l 必須)
    • 山本泰三さんの Gecko 版 browser dll に仮対応。伴い change-browser 追加。
    • メニュー追加。設定はプロパティーシートから。
    • uninstall-browserex 修正。
    • NetInstaller 対応。
    • 「初期化されていないメニューです」とエラーがでる場合があったのを修正。
    • メニュー関連コード修正。
    • コード整理。
    • その他。
  • (2002/07/26)
    • 他の lisp ファイルで winapi パッケージに SetFocus が定義されており、かつ export されていない場合に byte-compile できなくなっていた点を修正。
    • Win32API について中途半端に winapi パッケージで定義していたのを、browserex パッケージで定義するように変更。
  • (2002/07/02)
  • (2002/01/17)
    • ~/etc に browser.dll を置いておき siteinit.l に browserex.l の記述をしていると browser.dll をロードできないのを修正。
    • 使用する browser.dll を xyzzy 起動中に変更できるようにした。
    • 現在使用している dll のパスは (bx:browser-dll-pathname) で。
  • (2002/01/13)
    • マウスで指定した URL、ローカルファイルパスの内容の表示。試す場合は下の設定の様に各自で #\RBtnUp に設定して下さい。画像の表示に使ったり。
  • (2002/01/08)
    • navigate-current-buffer-directory の動作を少し変更。
    • フォルダを開く場合、どうも詳細表示へのスタイル変更は他にも増して危険なようなので、LVS_REPORT は export しないようにしました。 詳細表示のカラム幅が全部 0 になってしまうようなんですが、一度列幅を直せばそれなりに動いてくれてるような気がします。(詳細表示の)スタイル変更はとても危険なようなので自己責任でお願いします。既に迷惑をかけてしまった方、本当にすみません。
  • (2002/01/07)
    • 細かいとこ。
  • (2002/01/06)
    • browser.dll の検索パスを増やしてみた。 初期設定のままなら xyzzy/, xyzzy/etc/, xyzzy/site-lisp/ 以下に置いておけば大丈夫だと思います。
  • (2002/01/04)
    • 無理やり SysListView32 のスタイル変更を行えるようにしてみた。 試す場合は bx:*browser-syslistview-style* に bx:LVS_SMALLICON, bx:LVS_LIST, bx:LVS_REPORT のどれかを代入しといてみてください。 タイミングでうまく動かない場合があります。
  • (2002/01/01)
    • browser-wrap.l を単体で browser.dll の使用方法サンプルとなるようにし browserex.l に名称変更。
      browser-wrap から移行する場合は設定ファイルから browser-wrap に関する記述を削除した上で、ダンプファイルやヒストリーファイルから余分な情報を削除するために、
      (delete '*browser-position* ed::*history-variable-list* :test #'eq)
      (delete-command-bar 'browser-tool-bar)
      
      を評価してから xyzzy を再ダンプ、再起動しておいてください。

[設定例]

(require "browserex")
(setq bx:*browser-width* 300)
(setq bx:*browser-height* 200)
(setq bx:*browser-start-page* "http://www.google.com/search?hl=ja&lr=lang_ja&num=100&q=")
(setq bx:*browser-temp-file* (merge-pathnames "tmp/browser-temp.html" (si:system-root)))
;(setq bx:*browser-syslistview-style* bx:LVS_LIST)
;(setq bx:*browser-use-refresh* t)

(global-set-key #\M-F9 'bx:navigate-current-buffer)
(set-function-bar-label #\M-F9 "OpenBrowser")
(global-set-key #\M-F10 'bx:navigate-current-buffer-directory)
(set-function-bar-label #\M-F10 "OpenDir")
(global-set-key #\M-F11 'bx:rotate-browser)
(set-function-bar-label #\M-F11 "RotateBrowser")
(global-set-key #\M-F12 'bx:close-browser)
(set-function-bar-label #\M-F12 "CloseBrowser")
;(global-set-key #\RBtnUp 'bx:browserex-mouse-menu-popup)
;(global-set-key #\Apps 'bx:browserex-apps-popup)

;; ndiary-mode から拝借。
(require "wip/winapi")
(defun toggle-navigate-current-buffer ()
  (interactive)
  (cond
   ((bx:browser-open-p)
    (bx:close-browser)
    (winapi:ShowWindow (get-window-handle) 9))
   (t
    (winapi:ShowWindow (get-window-handle) 3)
    (bx:navigate-current-buffer :position bx:XPIS_LEFT
                                :size 480))))
(global-set-key #\M-F8 'toggle-navigate-current-buffer)
(set-function-bar-label #\M-F8 "ToggleBrowser")

(global-set-key #\M-Up 'bx:browserex-scroll-up)
(global-set-key #\M-Down 'bx:browserex-scroll-down)
(global-set-key #\M-Left 'bx:browserex-scroll-left)
(global-set-key #\M-Right 'bx:browserex-scroll-right)
(global-set-key #\M-PageUp #'(lambda () (interactive) (bx:browserex-scroll-up :unit :page)))
(global-set-key #\M-PageDown #'(lambda () (interactive) (bx:browserex-scroll-down :unit :page)))
(global-set-key #\M-Home #'(lambda () (interactive) (bx:browserex-scroll-up :unit :all)))
(global-set-key #\M-End #'(lambda () (interactive) (bx:browserex-scroll-down :unit :all)))

;; いまいたけを さん拡張版
(global-set-key #\M-F7 'bx:show-location-browser)
(set-function-bar-label #\M-F7 "ShowLocation")
(global-set-key #\S-M-Left 'bx:go-back-browser)
(global-set-key #\S-M-Right 'bx:go-forward-browser)
(global-set-key #\S-M-Home 'bx:go-home-browser)

;; browser.l もどき設定。
(defun navigate (url)
  (interactive "sURL: ")
  (bx:navigate url))
(defun refresh-browser ()
  (interactive)
  (bx:refresh-browser))
(defun close-browser ()
  (interactive)
  (bx:close-browser))

(defun my-html+-mode-hook ()
  ; ------------------------------------------------------------
  ;; browser が開いていたら現在のファイルを表示
  (bx:navigate-current-buffer-if-open)

  ;; 保存と同時に navigate
  ;; auto-time-stamp.l の save-buffer-with-time-stamp を使っている場合に対応
  (define-key ed::*html+-mode-map* '(#\C-x #\C-s)
              #'(lambda ()
                  (interactive)
                  (if (fboundp 'save-buffer-with-time-stamp)
                      (save-buffer-with-time-stamp)
                    (save-buffer))
                  (bx:navigate-current-buffer-if-open)))

  ; ------------------------------------------------------------
  ; html+-mode で htmllint を使って構文チェック (CGI)
  (defvar *htmllint-url* "http://localhost/htmllint/htmllint.cgi?V;X=w3m;URL=")
  (defun htmllint-cgi ()
    (interactive)
    (let ((file (get-buffer-file-name)))
      (when file
        (bx:close-browser)
        (bx:navigate (concat *htmllint-url* file)))))
  (define-key ed::*html+-mode-map* '(#\C-c #\C-l) 'htmllint-cgi)
  (define-key ed::*html+-mode-map* #\M-F7 'htmllint-cgi)
  (set-function-bar-label #\M-F7 "htmllint")

  ; ------------------------------------------------------------
  ; html+-mode で htmllint を使って構文チェック
  (defvar *htmllint-file* "C:/httpd/htdocs/htmllint/htmllint")
  (defun htmllint-exec ()
    (interactive)
    (let ((file (get-buffer-file-name)))
      (when file
        (pipe-command
         (format nil "perl \"~A\" \"~A\""
                 (map-slash-to-backslash *htmllint-file*)
                 (map-slash-to-backslash file))))))
  (define-key ed::*html+-mode-map* '(#\C-c #\l) 'htmllint-exec))
(add-hook 'ed::*html+-mode-hook* 'my-html+-mode-hook)

topmost

[ダウンロード]

[topmost] (2005/10/08)

[説明]

xyzzy の最前面表示の設定・解除を行います。

[topmost-top]

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2004/06/12)
    • 画像ファイル変更。
    • 画像ファイル名変更。
    • NetInstaller 対応。
  • (2001/12/25)
    • ツールバーをつけたりして Tips から格上げさせてみた。

explorer

[ダウンロード]

[explorer] (2005/10/08)

[説明]

explorer を起動します。

[explorer]

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/07/24)
    • アイコン修正。
  • (2004/09/24)
    • ファイルが存在しない場合、フォルダを対象にコマンドを実行するように修正。
  • (2004/02/05)
    • 初版作成。

toggle-gates

[ダウンロード]

[toggle-gates] (2005/10/08)

[説明]

標準キーバインドと Windows キーバインドを切り替えます。

[toggle-gates]

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2004/06/13)
    • uninstall-toggle-gates を toggle-gates-uninstall に名称変更し interactive でない関数に変更。
    • toggle-gates.bmp を toolbar-toggle-gates.bmp と名称変更するとともに、配置場所を $XYZZY/etc 以下に変更。
    • 画像ファイル配置場所の変更とともに標準インストールパスを変更。
    • NetInstaller 対応。
  • (2002/09/19)
    • *extended-key-translate-table* も保存するように。
    • selection-keymap を戻し損ねていたのを修正。
  • (2002/09/18)
    • 必要になったので以前書いたものを少し修正。

chini

[ダウンロード]

[chini] (2005/10/08)

[説明]

xyzzy.ini を直接操作し設定を変更します。
・印刷設定の保存/読込(切替)
・ファイラ設定の保存/読込(切替)
・バッファセレクタ設定の保存/読込(切替)
・Misc設定の保存/読込(切替)

・フォント設定の保存/読込(切替)
・色設定の保存/読込(切替)

[chini]

[chini-2]

[Usage]

以下「印刷」の設定変更方法。他も同様。
  • [ミニバッファ]
    1. M-x chini-save-print-setting で印刷設定を保存する。
    2. M-x chini-load-print-setting で印刷設定を読み込む。
  • [ダイアログ]
    1. メニューの [ファイル]-[印刷設定の保存] で印刷設定を保存する。
    2. メニューの [ファイル]-[印刷設定の読み込み] もしくは、[ファイル]-[最近使った印刷設定] で印刷設定を読み込む。

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/04/13)
    • xyzzy 0.2.2.234 対応
      • 半角カナを全角カナに変更。
      • chini-insert-menu-items 更新。
        「xyzzy.ini 設定変更」メニューを追加する位置のデフォルトを「(>_<)」の下に。
      • chini-*-insert-menu-items 更新。
        メニュー追加位置の指定を :pre-tag でも指定できるように。
  • (2004/07/07)
    • フォント/印刷/ファイラ/バッファセレクタ/Misc についての設定切り替えを追加。
    • 各関数を一括生成するように変更(ed::chini-generate-function)。
      関数生成時に compile するかは ed::*chini-compile-function-p* 変数で制御する。
    • *chini-directory* の初期値を (user-homedir-pathname) から (user-config-path) に変更。
    • *chini-popup-menu* 追加。(chini-insert-menu-items) ではデフォルトでは "ツール" メニューに追加する。
    • chini-*-insert-menu-items で access-key を指定できるように。
  • (2004/07/05)
    • ダンプファイル内に chini.l の処理が含まれた場合にエラーが発生するのを修正。
      (create-popup-menu を行うタイミングの修正)
  • (2004/06/28)
    • 初版作成。

[使用例]

(require "chini")
(setq *chini-directory*
      (append-trail-slash (merge-pathnames ".chini" (user-config-path))))
(setq *chini-font-directory*
      (append-trail-slash (merge-pathnames "font" *chini-directory*)))
(setq *chini-color-directory*
      (append-trail-slash (merge-pathnames "color" *chini-directory*)))
(setq *chini-print-directory*
      (append-trail-slash (merge-pathnames "print" *chini-directory*)))
(setq *chini-filer-directory*
      (append-trail-slash (merge-pathnames "filer" *chini-directory*)))
(setq *chini-bufselector-directory*
      (append-trail-slash (merge-pathnames "buffer-selector" *chini-directory*)))
(setq *chini-misc-directory*
      (append-trail-slash (merge-pathnames "misc" *chini-directory*)))
(setq *chini-backup-config-file-directory*
      (append-trail-slash (merge-pathnames "backup" *chini-directory*)))
(add-hook '*init-app-menus-hook*
          #'(lambda ()
              ;; フォント
              ;(chini-font-insert-menu-items :head-sep t)
              ;; 色
              ;(chini-color-insert-menu-items :head-sep t)
              ;; 印刷
              (chini-print-insert-menu-items :pre-tag 'ed::print-selected-buffer-dialog)
              ;; ファイラ
              ;(chini-filer-insert-menu-items :head-sep t)
              ;; バッファセレクタ
              ;(chini-bufselector-insert-menu-items :head-sep t)
              ;; Misc
              ;(chini-misc-insert-menu-items :head-sep t)
              ;; *chini-popup-menu*
              (chini-insert-menu-items :head-sep t)) t)

buf2html

[ダウンロード]

[buf2html-0.0.0.15] (2006/01/29)

[説明]

なるべくバッファの表示を再現するような HTML を生成します。
ソースコードの印刷にでも。

一行反転表示以外の、キーワード・正規表現キーワード・text-attribute に対応しています。

ただしほどほどの出来なので、xyzzy とは異なりキーワードを正規表現キーワードよりも必ず優先してしまいます。ご注意を。

(古いかもしれない)buf2html.l 自身を buf2html した結果。

(古いかもしれない)buf2html.l 自身を buf2html-with-number した結果。に少し付加。

www-mode での表示を HTML 化。

某 part7 を 2ch-mode で表示した状態を HTML 化。

[buf2html]

[ChangeLog]

  • [Version 0.0.0.15] (2006/01/29)
    • 変換後、出力バッファをカレントバッファとして動作する *buf2html-post-convert-buffer-hook* 追加。
    • 明示的に出力バッファのエンコーディングを設定するための *buf2html-encoding* 及び、改行コードを設定するための *buf2html-eol-code* を追加。無指定時は変換元バッファの設定を用いる。
    • 出力バッファのエンコーディングと HTML ヘッダの整合がとれるように、エンコーディングと改行コードの指定位置を変更。
  • [Version 0.0.0.14] (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • [Version 0.0.0.13] (2005/04/09)
    • 各種関数に nomsg 引数を追加。
    • buf2html-set-buffer を修正。
    • コメントの修正。
    • xyzzy 0.2.2.234 対応
      • 半角カナを全角カナに変更。
      • buf2html-insert-menu-items 更新。
        「HTML形式で名前を付けて保存」メニューを追加する位置のデフォルトを「名前を付けて保存」の下に。
  • [Version 0.0.0.12] (2004/06/13)
    • 部分(region, selection)を対象に buf2html を行った場合、進捗ステータスがバッファ全体に対しての値となっていたのを修正。
    • ini2css-buffer での出力にタブ文字を含めないように変更。
    • *buf2html-buffer-tmp* バッファを非表示バッファに変更。
    • buf2html-get-ini2css-string 追加。
    • *buf2html-internal-xyzzy-css* 追加。
      HTML ファイル内に xyzzy.ini から生成した CSS を含めるか否か。
    • buf2html, buf2html-print-header に、internal-css-p 引数追加。
    • buf2html-get-region-string 時のバッファを非表示に。
    • buf2html-save-as-dialog (HTML形式で名前を付けて保存) 追加。
    • buf2html-set-app-menu 追加。
      HTML形式で名前を付けて保存 をメニューに追加する。
  • [Version 0.0.0.11] (2003/02/19)
    • URL らしきところに <A> タグをつける設定 *buf2html-anchor-url* 設定追加。
      アンカータグのクラスは buf2html。<A class="buf2html" href="...">。
    • 内部 CSS 指定連想配列 *buf2html-internal-css-alist* 追加。
    • その他。
  • [Version 0.0.0.10] (2003/02/16)
    • buf2html-copy-region-as-kill, buf2html-copy-region-to-clipboard, buf2html-copy-selection, buf2html-copy-selection-to-clipboard 追加。
    • buf2html-set-app-popup-menu 追加。 右クリックメニューへの追加。
  • [Version 0.0.0.9] (2002/11/24)
    • editor パッケージに入れた。
    • buf2html-region, buf2html-region-complete を追加。
    • *buf2html-ignore-paren-highlight* で喜多さんの paren.l の 効果を一時的に無効化して変換できるように。
    • *buf2html-lower-case* の指定でタグを小文字にできるように。 ただ、モノグサしたので出力先を無理やり string に変更した場合は 多分動作しません。
    • 出力 CSS ファイルリスト *buf2html-css-list*
    • リージョン指定変換時の pre タグのクラスリスト *buf2html-region-css-class-list*
    • 出力バッファのモード指定 *buf2html-mode-function*
    • その他。
  • [Version 0.0.0.8] (2002/05/06)
    • buf2html を (interactive "p") にしてみた。
    • ini2css-file での xyzzy の INI ファイルのデフォルトパスを修正。
    • ini2css-buffer で ctlColor も変換するように。
  • [Version 0.0.0.7] (2002/01/09)
    • キーワードを使用していないモードのバッファでエラーがでるのを修正。
  • [Version 0.0.0.6] (2001/12/18)
    • うっかりミスでエラーがでて変換できない場合があったのを修正。
    • やっぱりまだまだまともではありませんでした。
      buf2html ではキーワードを正規表現キーワードよりも必ず優先していますが、開始位置が早いほうが優先されるようです。同じ開始位置ならキーワードの方が優先されるみたい。門田さん、情報ありがとうございます。(まだ対応していません)
  • [Version 0.0.0.5] (2001/12/15)
    • ML で亀井さんに教えていただいたことを反映。 いろいろまともになったと思います。 ありがとうございました。
      一行反転表示以外はまともに変換できるようになっていることを期待。
  • [Version 0.0.0.4] (2001/12/14)
    • tag のあるモードかどうかの判定を正確に。
  • [Version 0.0.0.3] (2001/12/10)
    • 行番号付き出力 buf2html-with-number 追加。
  • [Version 0.0.0.2] (2001/12/08)
    • キーワードが大文字小文字を区別するかの判定。
    • tag 文字 (syntax-open-tag-p, syntax-close-tag-p) をキーワードより優先させるように修正。
    • その他。
  • [Version 0.0.0.1] (2001/12/07)

[設定例]

;; http://ohkubo.s53.xrea.com/xyzzy/index.html#buf2html
(require "buf2html")
(buf2html-set-app-menu)
(buf2html-set-app-popup-menu)
(setq *buf2html-auto-mode-parameter-string* "Mode: html+")
(setq *buf2html-date-format* "%a, %d %b %Y %H:%M:%S %Z")
(setq *buf2html-time-stamp-start* "Time-stamp: &lt;")
(setq *buf2html-time-stamp-end* "&gt;")
(setq *buf2html-css-list* '("xyzzy.css" "konata.css"))
(setq *buf2html-region-css-class-list* '("bgcolor" "border"))
(setq *buf2html-ignore-paren-highlight* t)
(setq *buf2html-anchor-url* t)
(setq *buf2html-lower-case* t)
(setq *buf2html-internal-css-alist*
      '(("A.buf2html" . ("text-decoration: none"
                         "background: #ffe0e0"))
        ("A.buf2html:active" . ("background: #ffaaaa"))
        ("A.buf2html:hover" . ("background: #ffaaaa"))))
; symbol の衝突を回避できない場合は (require "html+-mode") を行った後に
(setq *buf2html-mode-function* 'ed::html+-mode)

re-builder

[ダウンロード]

[re-builder-20050608] (2005/06/08)

[説明]

正規表現の作成・確認を行います。
emacs 用の re-builder.el を xyzzy に移植しました。

使用するシンタックスに応じて [lisp-re] [sregex] [rx] を require します。

[使用方法]

M-x re-builder

[キーバインド]

キー説明
C-c C-q終了
C-c C-s次の一致項目へ
C-c C-r前の一致項目へ
C-c C-c大文字小文字の区別を切り替え
C-c C-w正規表現を kill-ring へコピー
C-c C-isyntax の切り替え
C-c C-e各グループ別に検索結果を表示
C-c C-u検索結果の再表示
C-c C-bターゲットバッファの変更

[re-builder]

[ChangeLog]

  • (2005/05/27)
    • 大文字小文字の区別切り替え時に :smart も考慮するように。
      • reb-rotate-case 関数追加。
      • reb-update-modestring 更新。
      • C-c C-c のキーバインドを reb-rotate-case に変更。
  • (2005/05/24)
    • rx.el の rx.l への移植に伴い、`rx' syntax へ対応。
  • (2005/05/20)
    • sregex.el の sregex.l への移植に伴い、`sregex' syntaxへ対応。
  • (2005/05/19)
    • Meadow 2.20 付属の re-builder.el を元に移植し直し。
    • *reb-re-syntax* の初期値を re-builder.el に合わせ 'read に戻した。
    • lisp-re.el の lisp-re.l への移植に伴い、`lisp-re' syntax へ対応。
  • (2005/05/17)
    • 動く程度に移植終了
    • window-configuration を直近だけでなく履歴で持つように
    • その他多少修正
  • (2005/05/16)
    • 移植開始

[設定例]

(require "re-builder")
(setq *reb-re-syntax* 'ed::string)
(setq *reb-match-attributes*
  '((:bold t :foreground 1 :background 2)
    (:bold t :foreground 1 :background 3)
    (:bold t :foreground 1 :background 4)
    (:bold t :foreground 1 :background 5)
    (:bold t :foreground 1 :background 6)
    (:bold t :foreground 1 :background 7)
    (:bold t :foreground 1 :background 8)
    (:bold t :foreground 1 :background 9)
    (:bold t :foreground 1 :background 10)
    (:bold t :foreground 1 :background 11))
(define-key ed::*reb-mode-map* #\F5 'ed::reb-next-match)
(define-key ed::*reb-mode-map* #\S-F5 'ed::reb-prev-match)
(define-key ed::*reb-subexp-mode-map* #\F5 'ed::reb-next-match)
(define-key ed::*reb-subexp-mode-map* #\S-F5 'ed::reb-prev-match)

popup-mode-memo

[ダウンロード]

[popup-mode-memo-0.0.0.3] (2005/10/08)

[説明]

モード毎のキーバインディングや自分で設定したメモを popup 表示します。
モード毎のキーバインディングをちょっと調べたい貴方に。
(メモの桁揃えをしたい場合は TAB 文字が便利です)

[popup-mode-memo]

[ChangeLog]

  • [Version 0.0.0.3] (2005/10/08)
    • 内部関数名変更。(join-string-list を popup-mode-memo-join-string-list に)
    • 内部変数名変更。(popup-mode-memo-list を *popup-mode-memo-list* に)
    • ライセンス条項(修正BSDライセンス)を記載。
    • NetInstaller 対応。
  • [Version 0.0.0.2] (2001/08/17)
    • *popup-mode-memo-one-side-local* 変数の追加。 t だとメモがある場合 *popup-mode-memo-view-local-bindings* が t でも binding を表示しない。 minor mode のことを考えていなかったりと適当。
  • [Version 0.0.0.1] (2001/08/17)
    • 物忘れの激しい自分のために作成したものを少しまともにして公開。

[設定例]

(require "popup-mode-memo")
; C-F12 で表示
(global-set-key #\C-F12 'popup-mode-memo)
(set-function-bar-label #\C-F12 "memo")

; minor mode の binding を表示
(setq *popup-mode-memo-view-minormode-bindings* t)
; local mode の binding を表示
(setq *popup-mode-memo-view-local-bindings* t)
; global な binding を表示
(setq *popup-mode-memo-view-global-bindings* nil)
; t だとメモがある場合 *popup-mode-memo-view-local-bindings* が t でも
; local mode の binding を表示しない
(setq *popup-mode-memo-one-side-local* nil)

(popup-mode-memo-add-new
 'lisp-interaction-mode         ; buffer-mode で指定 (ESC ESC buffer-mode)
 "F1:           info-modoki"
 "F5:           開いているファイルを byte-compile"
 "F10:          load-library 等の上で押すと対象ファイルを開く"
 "C-c b:        siteinit.l をコンパイルし、ダンプファイルを消す"
 "C-x C-e:      最後のセンテンスを評価 (eval-last-sexp)"
)

(popup-mode-memo-add-new
 'editor::diff-mode             ; buffer-mode で指定 (ESC ESC buffer-mode)
 "n:            diff-forward"
 "ESC Down:     diff-forward"
 "p:            diff-backward"
 "ESC Up:       diff-backward"
 "m:            diff-merge              (新を旧にマージ)"
 "r:            diff-merge-reverse      (旧を新にマージ)"
 "u:            diff-undo"
 "q:            diff-quit"
)

(popup-mode-memo-add-new
 "Lisp"                         ; mode-name で指定 (ESC ESC mode-name)
 "F1:           info-modoki"
 "C-x C-e:      最後のセンテンスを評価 (eval-last-sexp)"
)

検索・編集

clickable-uri (旧 clickable-url)

[ダウンロード]

[clickable-uri] (2005/10/08)

[説明]

左ダブルクリックによる WEB ブラウザ、メーラー等の起動を可能にします。
URI (Uniform Resource Identifier) 強調表示も行います。

[clickable-uri]

[ChangeLog]

  • (2005/10/08)
    • file: の場合そのまま shell-execute に渡すように変更。
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/02/05)
    • 内部コードの変更により *clickable-url-emphasis-deny-mode-list* 指定の意味がほぼなくなっていたため、指定自体を削除。
  • (2005/01/08)
    • clickable-uri-mouse-left-press 修正。(clickable-uri-open) 処理に成功した場合は (mouse-left-press) 処理を行わないように。
    • コメント修正。
  • (2004/10/26)
    • clickable-uri として書き直し。file:... 等も open 可能に。
    • スキームの typo を修正。
    • 何回の左クリックで URI を open するかを指定する *clickable-uri-click-count* 追加。
    • clickable-uri-emphasis-any-mode を clickable-uri-emphasis-force に名称変更。
    • clickable-uri-emphasis-threshold を clickable-uri-emphasis に統合し、削除。
    • *clickable-uri-open-command* を廃止し、*clickable-uri-open-command-alist* を追加。
    • 期待通りに動いていないこともあり、*clickable-uri-keep-focus* の初期値を nil に変更。
    • clickable-uri-set-regexp 追加
    • *clickable-uri-modify-uri-alist* 追加
  • (2004/09/26)
    • *clickable-url-attribute* 廃止。
    • *clickable-url-selection-attribute* を *clickable-url-open-attribute* に名称変更。
    • *clickable-url-selection-timeout* を *clickable-url-open-attribute-timeout* に名称変更。
    • set-text-attribute を用いなくなったため、*-set-attribute-* を *-emphasis-* に名称変更。
    • URI を強調表示するモードを指定するのではなく、強調表示しないモードを指定するように変更。
      具体的には、*clickable-url-set-attribute-mode-list* を廃止し、*clickable-url-emphasis-deny-mode-list* を追加。 強調表示しないモードのリストを設定する。
    • *clickable-url-threshold* を *clickable-url-emphasis-threshold* に名称変更。
    • clickable-url-emphasis-threshold の閾値判定をファイルサイズではなくバッファサイズ (buffer-size) を元に行うように変更。
  • (2004/09/25)
    • 根本的に書き換えるのはおいておき、強調表示を set-text-attribute でなく regexp-keyword で行うように変更。 keyword に対する color 設定は *clickable-url-keyword-color* で。
  • (2004/09/24)
    • 「xyzzyの使い方が分からぬやし 励ましあえ その5」の 528 での不具合「background=http://xyzzy.xyzzy/... の "background" 部分のダブルクリックでブラウザが立ち上がる」に対処。
  • (2004/06/18)
    • 同一ファイル内別パッケージ(winapi)で *define したシンボル foo を winapi:foo として指定していると byte-compile できない問題に対して対応。
  • (2004/06/12)
    • clickable-url-open でメッセージを表示するように。
    • xyzzy のフォーカスを維持するように。してみたつもりがうまくいかない。
    • *clickable-url-open-command* 追加。
    • ファイルサイズで閾値判定するコマンドを追加。*find-file-hooks* では本コマンドを実行。
      clickable-url-set-attribute-threshold
      *clickable-url-threshold*
    • long-operation に。
    • 実行中 message 表示追加。
    • NetInstaller 対応。
  • (2002/02/23)
    • 選択文字列の強調表示後、既存の text-attribute を復元するように。
  • (2002/02/19)
    • clickable-url-open を少し賢く。
    • 選択文字列をシェルに渡す前に強調できるように。
  • (2002/01/25)
    • ttp:// でもいいように。
  • (2002/01/24)
    • とりあえず書いてみました。

[設定例]

(require "clickable-uri")
;; 強調表示は「文字色4(青)」+「アンダーライン」
(setq *clickable-uri-keyword-color* '(:color 4 0 :underline))
;; オープン時の強調表示は「文字色4(青)」「アンダーライン」「ボールド」
(setq *clickable-uri-open-attribute* '(:foreground 4 :underline t :bold t))
;; オープン時の強調表示時間は 0.2 秒
(setq *clickable-uri-open-attribute-timeout* 0.2)
;; URI 構成文字と見なす文字を拡張
(setq *clickable-uri-chars*
      "-a-zA-Z0-9_/~.@?&=;+(),'$!*:#%|0-9A-Za-zぁ-んァ-ヶ亜-熙")

;; http: https: scheme をオープンするコマンドを指定
(push '("^https?:" . "D:/utils/sleipnir/Sleipnir.exe")
      *clickable-uri-open-command-alist*)
;; Nami2000, kie
;; <file@...>
(push "<file@.+>" *clickable-uri-special-regexp-list*)
(push (cons "^<file@.+>$"
            #'(lambda (uri)
                (string-matchp "<file@\\(.+\\)>$" uri)
                (ed::clickable-uri-find-file (match-string 1))))
      *clickable-uri-open-command-alist*)
;; <node@...> で階層化テキストのタイトルに飛ぶ
(push "<node@.+>" *clickable-uri-special-regexp-list*)
(push (cons "^<node@.+>$"
            #'(lambda (uri)
                (let (goto-point node-str)
                  (string-matchp "<node@\\(.+\\)>$" uri)
                  (setq node-str (regexp-quote (match-string 1)))
                  (save-excursion
                    (goto-char (point-min))
                    (when (scan-buffer (concat "^\\.+" node-str " *$") :regexp t)
                      (setq goto-point (point))))
                  (when goto-point
                    (goto-char goto-point)))))
      *clickable-uri-open-command-alist*)

(defvar *my-isbn-url*
  "http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-ISBN=")
;; urn:isbn:
(push "urn:isbn" *clickable-uri-scheme-list*)
(push (cons "^urn:isbn:"
            #'(lambda (uri)
                (string-matchp "^urn:isbn:\\(.*\\)" uri)
                (concat *my-isbn-url* (match-string 1))))
      *clickable-uri-modify-uri-alist*)
;; <%=isbn_image "isbn" "comment" %>
(push "<%=isbn_image +\"[0-9A-Za-z]+\".+?%>"
      *clickable-uri-special-regexp-list*)
(push (cons "^<%=isbn[_a-zA-Z]+ +\"\\([0-9A-Za-z]+\\)"
            #'(lambda (uri)
                (string-matchp "<%=isbn[_a-zA-Z]+ +\"\\([0-9A-Za-z]+\\)" uri)
                (concat *my-isbn-url* (match-string 1))))
      *clickable-uri-modify-uri-alist*)
;; wnet#://host/dir
(push "wnet#" *clickable-uri-scheme-list*)
(push (cons "^wnet#:"
            #'(lambda (uri)
                (string-matchp "^wnet#:\\(.+\\)" uri)
                (ed::clickable-uri-find-file (match-string 1))))
      *clickable-uri-open-command-alist*)

;; 設定変更を反映
(clickable-uri-set-regexp)

(global-set-key #\C-l 'clickable-uri-recenter)
(global-set-key '(#\C-c #\C-l) 'clickable-uri-emphasis-force)
(global-set-key '(#\C-c #\C-o) 'clickable-uri-open)

pickup-pattern

[ダウンロード]

[pickup-pattern-0.0.0.6] (2005/10/08)

[説明]

検索文字列/指定したパターンを強調表示します。
選択パターン/全パターンの強調表示の解除、再描画が可能です。

たくさん公開されている文字列色づけ lisp の一つです。
関連 lisp は Yamamoto Shinji さんによる [xyzzy:05281] の colorstring.l, strcolor, Toy さんによる toy-color.l などがあります。

[pickup-pattern]

[ChangeLog]

  • [Version 0.0.0.6] (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • [Version 0.0.0.5] (2004/06/14)
    • コメントを修正。
    • *pickup-pattern-list* を history 変数に変更。
    • pickup-pattern-uninstall 追加。
    • NetInstaller 対応。
  • [Version 0.0.0.4] (2002/01/09)
    • pickup-pattern-set-input-detail で未入力、または不正な入力の場合 pickup-pattern のデフォルト設定に従っていたのを nil に変更。
  • (2001/11/27)
    • 一行 (require "struct") を追加したものと差し替え。 byte-compile に関する問題はなくなったと思います。 亀井さんありがとうございました。
  • [Version 0.0.0.3] (2001/11/20)
    • byte-compile はしても大丈夫だが pickup-pattern.l の作りが変のようで 構造体が入っている変数 *pickup-pattern-list* を (define-history-variable) した状態で byte-compile すると 2 度目の xyzzy の起動からおかしくなる。 (define-history-variable) したい。
    • hook とか、editor::*show-match-hook* に引っかけるための関数とかを追加。
    • pickup-pattern-list-show。
    • その他いろいろ。
  • [Version 0.0.0.2] (2001/11/17)
    • defstruct を使ったら、ilogic と同じくバイトコンパイルするとまともに動かなくなりました。macro への理解が圧倒的に足りません。誰か。
    • デフォルトの配色などの設定を変えた。
    • 前景色・背景色などをパターン毎に設定することもできるように。
    • 正規表現で pickup するパターンがグループ化されていたら、一番目のグループにマッチした文字列のみ pickup するように変更。
  • [Version 0.0.0.1] (2001/11/14)
    • 初版作成。Tips から昇格させてみた。

[設定例]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; pickup-pattern
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; --- 基本設定 ---
(require "pickup-pattern")
(global-set-key '(#\C-c #\p #\s) 'pickup-pattern-set-input)
(global-set-key '(#\C-c #\p #\C-s) 'pickup-pattern-set-input-detail)
(global-set-key '(#\C-c #\p #\r) 'pickup-pattern-refresh-select)
(global-set-key '(#\C-c #\p #\C-r) 'pickup-pattern-refresh-all)
(global-set-key '(#\C-c #\p #\u) 'pickup-pattern-unset-select)
(global-set-key '(#\C-c #\p #\C-u) 'pickup-pattern-unset-all)
(global-set-key '(#\C-c #\p #\d) 'pickup-pattern-delete-select)
(global-set-key '(#\C-c #\p #\C-d) 'pickup-pattern-delete-all)
(global-set-key '(#\C-c #\p #\l) 'pickup-pattern-list-show)
;; pickup したパターンの表示方法
(setq *pickup-pattern-fg* 1)
(setq *pickup-pattern-bg* 3)
(setq *pickup-pattern-bold* t)
(setq *pickup-pattern-underline* nil)
(setq *pickup-pattern-strike-out* nil)
;; pickup するパターンの検索方法
;; re-search-forward-pickup, re-search-backward-pickup では無視されます
(setq *pickup-pattern-regexp* t)
(setq *pickup-pattern-overlap* nil)

;;; --- 検索設定 ---
;;; 検索文字列を pickup (消去は pickup-pattern-unset-all 等で)
;; 検索前に pickup 表示を全て解除
(setq *pickup-pattern-pre-search-unset* t)
;; 検索文字列をリストに追加
(setq *pickup-pattern-search-pattern-add* nil)

;; (正規表現)検索文字列入力時のみ色づけしたい場合はこっちの関数を
(global-set-key #\M-s 're-search-forward-pickup)
(global-set-key #\M-C-s 're-search-backward-pickup)
;; repeat-forward-search, repeat-backward-search 等、どの検索時にも色づけしたい
;; 場合は上のでなく、既存の関数の hook に引っかける。(毎回色づけするので遅いかも)
;(add-hook '*show-match-hook* 'pickup-pattern-last-search)

;;; --- フック設定 ---
;; pickup 時は paren を括弧のみに (喜多さん paren.l)
(add-hook '*pickup-pattern-set-hook*
          #'(lambda () (setq *paren-highlight-only-paren* t)))
(add-hook '*pickup-pattern-unset-all-hook*
          #'(lambda () (setq *paren-highlight-only-paren* nil)))

ggrep

[ダウンロード]

[ggrep] (2005/10/08)

[説明]

Grep 類似の行指向検索を行います。
  • 検索方法
    • 複数検索パターン指定 AND/OR 検索
    • 一致/不一致検索
    • バッファ/ファイル単位絞込み検索
      • 前回マッチしたバッファ/ファイルが再検索の対象
    • 行単位絞込み検索
      • 前回マッチした行が再検索の対象
      • 検索パターンが複数行に渡ってマッチする場合でも絞込み検索可能
    • エンコード指定検索 (ファイル)
    • シンタックス指定検索 (バッファ)
  • 検索対象
    • カレントバッファ指定検索
    • 全表示バッファ指定検索
    • 複数ディレクトリ指定検索
    • 複数ファイル指定検索
    • 正規表現での複数バッファ指定検索
  • 出力方法
    • バッファ/ファイル名、行番号なしの出力
    • バッファ/ファイル名のみの出力
    • フルパス名での出力
  • 検索設定の保存
    • 検索条件設定の保存、読込、削除(ダイアログ使用時)

[ggrep]

[提供コマンド]

┏━━━━━━━┯━━━━┯━━━━━━━━━┯━━━━━━━━┓
┃コマンド名    │パターン│対象              │対象(C-u)       ┃
┃              ├────┴─────────┴────────┨
┃              │説明                                          ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep         │正規表現│バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │AND/OR 検索                                   ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃fggrep        │文字列  │バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │AND/OR 検索                                   ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-and     │正規表現│バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │AND 検索                                      ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃fggrep-and    │文字列  │バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │AND 検索                                      ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-or      │正規表現│バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │OR 検索                                       ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃fggrep-or     │文字列  │バッファリスト    │カレントバッファ┃
┃              ├────┴─────────┴────────┨
┃              │OR 検索                                       ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-narrow  │正規表現│grep 結果バッファ │                ┃
┃              ├────┴─────────┴────────┨
┃              │絞込み検索(バッファからは行番号情報のみ取得)  ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃fggrep-narrow │文字列  │grep 結果バッファ │                ┃
┃              ├────┴─────────┴────────┨
┃              │絞込み検索(バッファからは行番号情報のみ取得)  ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃xggrep        │正規表現│ディレクトリ      │                ┃
┃              ├────┴─────────┴────────┨
┃              │複数ディレクトリ指定検索                      ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃zggrep        │正規表現│ファイル          │                ┃
┃              ├────┴─────────┴────────┨
┃              │複数ファイル指定検索                          ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-contents│正規表現│カレントバッファ  │指定バッファ    ┃
┃              ├────┴─────────┴────────┨
┃              │絞込み検索(指定バッファ内コンテンツのみで検索)┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-buffer  │正規表現│カレントバッファ  │指定バッファ    ┃
┃              ├────┴─────────┴────────┨
┃              │ggrep / ggrep-narrow / ggrep-contents         ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-detail  │        │                  │                ┃
┃              ├────┴─────────┴────────┨
┃              │minibuffer から全てを指定して検索             ┃
┣━━━━━━━┿━━━━┯━━━━━━━━━┯━━━━━━━━┫
┃ggrep-dialog  │        │                  │                ┃
┃              ├────┴─────────┴────────┨
┃              │dialog から全てを指定して検索                 ┃
┗━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━┛
 Usage:

      A: バッファ全体を正規表現で検索
        1. M-x ggrep

      B: バッファ全体を文字列で検索
        1. M-x fggrep

      C: 現在のバッファだけを検索
        1. C-u M-x ggrep

      D: 指定ディレクトリ以下のファイルを検索
        1. M-x xggrep

      E: 指定ファイルを検索
        1. M-x zggrep

      F: 絞込み検索 1
        1. A〜E で検索
        2. A〜E の検索に検索条件を追加して、新たに検索

      G: 絞込み検索 2
        1. A〜E で検索
        2. 1. の結果を元に M-x ggrep-narrow で絞込み検索

      H: 絞込み検索 3
        1. M-x ggrep-contents でバッファを検索
        2. 1. の結果バッファ上で再度 M-x ggrep-contents で検索

      I: バッファに合わせた方法で検索
        1. M-x ggrep-buffer で検索
           - 通常バッファ上ならば C-u M-x ggrep と同様の方法で検索
           - ggrep-contents 結果バッファ上ならば、再度
             M-x ggrep-contents と同様の方法で検索
           - その他 ggrep 結果バッファ上ならば、M-x ggrep-narrow と
             同様の方法で検索
        2. 1. の結果バッファ上で再度 M-x ggrep-buffer で検索

      J: minibuffer から細かく指定して検索
        1. M-x ggrep-detail

      K: ダイアログから検索
        a. ダイアログの表示
          - [検索]-[GGrep] を選択
          - [表示]-[ツールバー]-[GGrep] でツールバーを表示した上で、
             ggrep ツールバー(ボタン) を選択
          - M-x ggrep-dialog を実行

        b. 検索実行
          1. 検索方法をダイアログで設定する
          2. 「検索」ボタンを押す

        c. 検索設定の保存
          1. 「設定」フィールドに設定名を入力する
          2. 「保存」ボタンを押す

        d. 検索設定の読込
          1. 「設定」フィールドで設定名を選択/入力する
          2. 「読込」ボタンを押す

        e. 検索設定の削除
          1. 「設定」フィールドで設定名を選択/入力する
          2. 「削除」ボタンを押す

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/04/17)
    • xyzzy 0.2.2.234 対応
      • "MS Pゴシック" ⇒ "MS UI Gothic"
      • 半角カナを全角カナに変更。
        ⇒「ディレクトリ」「検索バッファ」「絞込みバッファ」に <...> (... は半角カナ) を指定していた場合は、対応する全角カナの項目を選び直す必要がある。
      • ggrep-insert-menu-items 更新。
        「GGrep」メニューを追加する位置のデフォルトを「Grep」の下に。
    • コメント修正。
  • (2004/12/14)
    • ggrep-scan-buffer の検索効率を syntax 指定時多少安定して検索できるように。
  • (2004/12/13)
    • ggrep-scanner コメント追加。コード変更。
    • バッファ検索の場合は、マッチ開始位置の syntax を指定できるように拡張。
      • ggrep-scan-buffer 追加。
      • ggrep-dialog, ggrep1, ggrep-scanner 拡張。
      • ggrep-internal, ggrep-detail 拡張。
    • 内部使用関数 ggrep-buffer-list を ggrep-narrow-buffer-list に名称変更。
    • ggrep-dialog の[ファイル/バッファ/絞込み]を指定する入力フィールドをそれぞれ独立に。
    • ggrep-dialog の「絞込み」で「カレントバッファ」を選択できるように。
    • ggrep-dialog の「設定」名が入力されていない状態で「保存」をした場合、その時点の日時から設定名を決定するように拡張。
    • ggrep-detail での「絞込み(narrow)」検索が動作しないバグを修正。
    • コメント typo 修正。
    • その他。
  • (2004/08/04)
    • 行単位絞込み検索追加。
    • ggrep-narrow, fggrep-narrow 追加。
    • ggrep-dialog で各種操作時に「設定」名を引き継ぐように。引き継ぐだけで設定保存は「保存」を押下時。
    • method を ed::and ed::or から :and :or に変更。
    • ggrep, fggrep で指定する method を文字列から :and, :or に変更。
    • *last-ggrep-method* の持つ値を method を判別する文字列 ("and", "or") から method シンボル (:and, :or) に変更。
    • ディレクトリ指定 xggrep、ファイル指定 zggrep 追加。
    • ggrep1 の最後の hook を *ggrep-hook* 固定に変更。
    • ggrep-dialog に「クリア」ボタン追加。
    • 「コンテンツのみ出力」オプションを追加。
    • " " から始まるバッファ名のバッファでも、明示的に指定された場合は検索対象とするように変更。(grep とは異なる)
    • 一行一レコードの DB を検索する用途に用いることを想定した ggrep-contents を追加。追加にあたり、ggrep1 修正。
    • 対象バッファにより ggrep, ggrep-narrow, ggrep-contents を切り替える ggrep-buffer を追加。
  • (2004/05/23)
    • ファイルリスト(フルパス)指定検索追加。
    • バッファリスト(正規表現)指定検索追加。
  • (2004/05/17)
    • 絞込み検索対象バッファがない場合は選択コンボボックスを無効に。
  • (2004/05/16)
    • AND 検索が 2004/2/17 以降動作していなかったのを修正。
    • 絞込み検索追加。
    • ggrep-scan-files-async の typo 修正。
  • (2004/03/03)
    • ツールバー追加。
    • ggrep-find-error-scanner の追加。
    • OR 検索などの性能を多少改善。(scanner 仕様の拡張)
    • encoding を指定しての検索を可能に。
    • *ggrep-patterns*, *ggrep-directories* の初期値を修正。
    • 存在しない設定名で「読込」した際、設定をクリアするように変更。
  • (2003/07/28)
    • 初版作成。
    • ggrep-dirs-normalization 修正。

multiple-replace

[ダウンロード]

[multiple-replace] (2005/04/13)

[説明]

複数文字列の置換を行います。
  • multiple-replace-string
  • query-multiple-replace
  • multiple-replace-regexp
  • query-multiple-replace-regexp
  • multiple-replace-dialog

[multiple-replace]

[ChangeLog]

  • (2005/04/13)
    • multiple-replace-dialog の「設定」名が入力されていない状態で「保存」をした場合、その時点の日時から設定名を決定するように拡張。
  • (2005/04/11)
    • xyzzy 0.2.2.234 対応
      • "MS Pゴシック" ⇒ "MS UI Gothic"
      • 半角カナを全角カナに変更。
      • multiple-replace-insert-menu-items 更新。
        「複数文字列置換」メニューを追加する位置のデフォルトを「置換」の下に。
    • コメント修正。
  • (2003/12/21)
    • 一行目に検索文字列を入力しなかった場合、履歴変更ができない点を修正。
    • menu 関連を修正。
    • uninstall 関連追加。
  • (2003/10/04)
    • 履歴管理追加。
      ともない設定の変数に multiple-replace 独自のものを用いるように。
  • (2003/04/14)
    • 初版作成。

diff-detail

[ダウンロード]

[diff-detail] (2006/03/30)

[説明]

diff の更新行を、正規表現または関数で指定したトークン単位で再度比較します。
;;
;;      1. 実行
;;          1.1 diff または diff-detail を実行
;;              M-x diff
;;                or
;;              M-x diff-detail
;;
;;          1.2. 詳細表示 (token とする正規表現の変更)
;;              "." キー (M-x diff-detail-change-grain)
;;
;;      2. 移動
;;              n: diff-mode の n と同等
;;              p: diff-mdoe の p と同等
;;
;;              N: 次の変更位置へ移動
;;              P: 前の変更位置へ移動
;;
;;            TAB: 比較バッファの対応する変更位置へ移動
;;
;;      3. 差分編集
;;              m: diff-mode の m と同等
;;              r: diff-mode の r と同等
;;              u: diff-mode の u と同等
;;
;;              M: diff-detail 部分を merge
;;              R: diff-detail 部分を merge-reverse
;;              U: diff-detail 部分を undo
;;
;;      4. その他
;;              c: diff 画面の縦横分割の切り替え
;;            SPC: 比較バッファの対応する変更範囲を強調表示
;;              v: HTML に変換した結果を表示
;;        C-c C-h: HTML に変換
;;        C-c RET: 真鵺道(Manued)に変換
;;

[diff-detail]

[ChangeLog]

  • (2006/03/30)
    • diff-detail-change-grain-default 追加。
    • 比較ファイルに違いがない場合、diff-detail がエラーとなるのを修正。
  • (2005/12/05)
    • diff-detail 関数の引数 token-regexp の初期値を *diff-detail-token-regexp* に。
  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/01/22)
    • Manued 変換の修正/拡張。
      • 各種制御文字を設定可能に。( [/|;]~ からの変更)
      • older-first/last newer-first/last を設定可能に。
      • defcommand 出力追加。
  • (2005/01/19)
    • DocDiff <http://www.kt.rim.or.jp/~hisashim/docdiff/> を参考にし HTML 出力追加。
      • diff-detail-convert-to-html 追加。
      • diff-detail-view-html 追加。
      • *diff-detail-temp-html-file* 追加。
    • 真鵺道 (Manued) 出力追加。
      • diff-detail-convert-to-manued 追加。
    • 文字列の token 分解に正規表現以外に関数を用いれるように拡張。
      • diff-detail-char, diff-detail-word は正規表現でなく、forward-char, forward-word を用いるように変更。
      • その他各種関数拡張。
      • diff-detail-change-grain-char, diff-detail-change-grain-word を追加。
    • diff-detail 状態から diff 状態への復帰方法を変更。
      • diff-text-attributes 追加。
      • diff-text-attributes-buffer-modified-count 追加。
      • diff-detail-save-attributes 追加。
      • diff-detail-restore-attributes 変更。
    • diff-detail-find-text-attribute のバグ修正。
      • from と to の値が等しい tag が存在した場合にループに至ることがあった。
  • (2004/03/08)
    • diff-detail, diff-detail-change-grain での token 正規表現入力用に hisotry (*diff-detail-token-regexp-history*) を追加。
    • hisotry 追加に伴い diff-detail-uninstall 追加。
    • diff-detail-blink 追加。
    • *diff-detail-forward-interactive-hook* 追加。
    • diff-merge-ex, diff-merge-reverse-ex, diff-undo-ex 追加。
    • その他。
  • (2004/03/07)
    • $XYZZY/lisp/diff.l 中 diff-set-modified の不具合と同様の diff-detail-set-modified の不具合を修正。
    • *diff-detail-merge-attributes* 追加。
    • diff-detail-forward, diff-detail-backward で merge 状態の +, - 行に移動できなかった点を修正。
  • (2003/12/01)
    • 以下を追加。
      • diff-forward-ex
      • diff-backward-ex
      • diff-detail-merge
      • diff-detail-merge-reverse
      • diff-detail-undo
    • キーバインド変更
  • (2003/11/28)
    • diff-detail-change-grain 追加
  • (2003/11/23)
    • diff-detail-forward, diff-detail-backward 追加
  • (2003/10/27)
    • token 単位での比較に拡張
  • (2003/10/22)
    • 作成
  • (2003/10/21)
    • 作成開始

sort-line

[ダウンロード]

[sort-line] (2005/10/08)

[説明]

任意のカラム以降をキーとして、バッファ全体/選択範囲の行のソートを行います。

選択範囲の先頭行については、カーソルが矩形選択の右上の場合を除き、行全体が含まれていなくともソート範囲とみなします。選択範囲の末尾行については、カーソルが行頭の場合、矩形選択の左下の場合を除きソート範囲とみなします。

これを使わないで普通にソートする場合は、対象範囲を region 指定して

C-x | sort
とタイプして外部コマンドでソートします。

[sort-line]

[ChangeLog]

  • (2005/10/08)
    • ライセンス条項(修正BSDライセンス)を記載。
  • (2005/04/15)
    • コメント修正。
    • xyzzy 0.2.2.234 対応
      • 半角カナを全角カナに変更。
    • sort-line-uninstall を interactive でない関数に変更。
  • (2004/03/03)
    • キーのカラム指定を可能に。
    • NetInstaller 対応。
    • その他。
  • (2001/12/29)
    • なんとなく公開。

モード

csv-mode

[ダウンロード]

[csv-0.0.3.0] (2006/10/21)

[説明]

CSV, TSV ファイル (*.csv, *.tsv) 用モードです。
あまり大きなファイルの編集には適していません。

[キーバインド]

ESC TAB他行同列からの補完入力
C-c C-e編集ダイアログ
C-c M-C-e選択編集ダイアログ
C-u C-c C-e同上
C-c C-v現在行内容の表示
C-c C-w現在行内容を window 表示
C-c C-s列と方法を選択してソート
 
C-c C-i列の挿入/追加
C-c C-d列の削除
C-c C-c列の入換
 
C-c C-o列幅を最小に
C-c C-a列幅を揃える
 
C-c C-x行と列の入替
 
C-c C-b罫線囲みに変換
C-c C-hHTML 書式に変換
 
C-c C-t一行目をヘッダとするかどうかのトグル
C-c C-,セパレータの変更
C-c C-;改行表示文字の変更
 
C-n次行に移動。行表示用ウィンドウに内容を表示。
C-p前行に移動。行表示用ウィンドウに内容を表示。
M-n次行の同じ列に移動
C-Down同上
M-p前行の同じ列に移動
C-Up同上
TAB次の列に移動
M-f同上
C-Right同上
M-b前の列に移動
C-Left同上

[csv-mode-select] [csv-mode-dialog] [csv-mode-menu] [csv-mode-record]

[ChangeLog]

  • [Version 0.0.3.0] (2006/10/21)
    • xyzzy 0.2.2.234 対応。
    • ライセンス条項(修正BSDライセンス)を記載。
    • C-c C-x での「行と列の入換」(csv-change-row-column) 追加。
    • C-c C-w での「現在行内容のウィンドウ表示」で表示したウィンドウで編集できるように。
    • 罫線囲み表示時のモード csv-box-mode 作成。
    • 整数ソートの際、"," が含まれてもよいように変更。
    • 通貨記号 \ $ が含まれていてもマッチするように *csv-number-regexp* を更新。
    • csv-edit-dialog 更新。
      • next-line-add-newlines の考慮をやめ、必要ならば常に新規行を追加するように。
      • 一行編集することに、undo 境界を設定するように。
    • csv-max-column-number 関数で、全行を調べた際の値のキャッシュを持つように更新。
    • 値が数の場合、各種変換関数で右寄せするように、関数を更新。
      csv-adjust-column, csv-convert-to-box, csv-convert-to-html
    • メニュー周りのコードを修正。
    • 全行が同じ列数でないと csv-convert-to-box がエラーを返していたのを修正。
    • csv-join-string-list の str-list に nil が渡された場合、エラーが発生するのを修正。
    • ナローイング時に正常動作するように、各種関数更新。
    • defvar-local で定義する変数のシンボル名を *xxx* から xxx に変更。
    • *csv-mode-local-map* を csv-mode-local-map に変更。
    • その他、各種関数名、関数定義、変数名、変数定義変更
    • コメント、DOCSTRING 追加、修正。
    • その他。
  • [Version 0.0.2.1] (2003/05/19)
    • menu 周りのコードを修正。 (M-x csv-mode を行うたびにメニューが増加するのを修正。)
  • [Version 0.0.2.0] (2003/04/27)
    • *csv-buffer-convert* を "*CSV: Convert*" に。
    • nconc の副作用を都合よく期待したコードだったのを修正。
    • csv-next-line, csv-previous-line の名称を csv-next-line-keep-column, csv-previous-line-keep-column に変更。
    • xyzzy Part8 704 さんのアイデアをいただき csv-view-line-on-window, csv-change-newline, csv-next-line, csv-previous-line を新たに追加。
    • NetInstaller 対応
    • その他。
  • [Version 0.0.0.13] (2003/03/07)
    • menu の tag の間違いを修正。
    • csv-toggle-local-line-number, csv-toggle-local-cursor-line 追加。
    • *csv-line-number*, *csv-cursor-line*, *csv-buffer-fold-width* 指定追加。
  • [Version 0.0.0.12] (2003/03/03)
    • csv-menu-update 更新。 menu 非表示状態を考慮するように。
  • [Version 0.0.0.11] (2002/09/18)
    • tdict ファイル編集のために tsv-mode 追加。 伴い、*csv-tsv-separator-char* 廃止。
  • [Version 0.0.0.10] (2002/05/27)
    • csv-edit-dialog の移動処理を修正。
    • 共通設定の「終了時の状態を保存する」にチェックをいれていると buffer-local メニューが生成されない点を修正。(thanks YMTZ さん)
    • *csv-mode-hook* で *csv-mode-map* を変更しても反映されない点をとりあえず修正。 csv-set-separator を csv-update-keymap に名称変更。それに伴う名称変更。 *csv-mode-map* を変更した後は csv-update-keymap を呼ぶ必要があります。
  • [Version 0.0.0.9] (2002/02/17)
    • ダイアログで編集。
    • *csv-header-flag-default* *csv-max-column-number-strict-default* *csv-separator-char-default* 廃止。
    • *csv-header-flag* *csv-max-column-number-strict* *csv-separator-char* を buffer local な変数に。
    • next-line-add-newlines を考慮するように。
    • その他。
  • [Version 0.0.0.8] (2002/01/19)
    • メニューをつけた。
    • キーバインドを変えた。
    • 罫線付き書式への変換、HTML 書式変換。
    • その他。
  • [Version 0.0.0.7] (2001/10/31)
    • ファイル名のないバッファを csv-mode に出来なかったバグを修正。
  • [Version 0.0.0.6] (2001/10/23)
    • 変数名の変更 *csv-max-column-strict-default* を *csv-max-column-number-strict-default* に
    • csv-convert-to-box
  • [Version 0.0.0.5] (2001/10/19)
    • ソートの修正
  • [Version 0.0.0.4] (2001/10/19)
    • ソート方法を追加しやすいように修正。
    • *csv-header-flag* を *csv-header-flag-default* に変更。
    • *csv-separator-char* を *csv-separator-char-default* に変更。
    • *csv-tsv-separator-char*。 拡張子が tsv の場合の separator character。 character が指定してある場合 separator をその character に。
    • *csv-max-column-number-strict-default* (ver 0.0.0.6)。t, nil, その他の値。
  • [Version 0.0.0.3] (2001/10/18)
    • ソートを修正。
    • デフォルトで一行目をヘッダと認識するように変更。
    • ヘッダありの場合は補完入力にヘッダを含まないように。
  • [Version 0.0.0.2] (2001/10/18)
    • 列の挿入/追加・削除・入換。
    • 列と方法を選択してソート。
    • 一行目をヘッダとしているかどうかをmode-lineに表示(C-c h でトグル)。
  • [Version 0.0.0.1] (2001/10/17)
    • 初版作成。

[設定例]

(export 'ed::csv-mode "ed")
(autoload 'csv-mode "csv-mode" t)
(autoload 'tsv-mode "csv-mode" t)
(pushnew '("\\.csv$" . csv-mode) *auto-mode-alist* :test 'equal)
(pushnew '("\\.tsv$" . csv-mode) *auto-mode-alist* :test 'equal)
;; ソート方法の追加
(defun my-csv-mode-hook ()
  (pushnew (list "文字数の少ない順"
                 #'(lambda (str-a str-b)
                     (let ((len-a (length str-a))
                           (len-b (length str-b)))
                       (cond
                        ((< len-a len-b) -1)
                        ((= len-a len-b)  0)
                        (t 1)))))
           ed::*csv-sort-method-list*
           :test #'(lambda (a b) (