Favorite Softwares

xyzzy

SOFTWARE] - [SOFTWARE.favorite] - [ルートメニュー



1. xyzzy とは?

 xyzzy は、いわゆる「テキストエディタ」です。テキストデータを編集して、ファイルに読み書きするためのソフトウェアですね。Microsoft Word や一太郎などとは異なり、体裁を整えたりするパブリッシングに関係した機能は搭載されていません。というのも、テキストエディタというものは単にテキストデータを編集するためだけのソフトウェアなのですから。メモ帳を考えてくれればいいでしょう。xyzzy はあの類のソフトウェアといえます。
 ただ、xyzzy がメモ帳などと大きく異なっている点は、テキストエディタであると同時に Lisp インタプリタでもあるというところです。emacs というエディタを御存知でしょうか? アレを知っているのでしたら、xyzzy は emacs を真似たもの、と言えばすぐにわかるでしょう。知らない方は……えーと。まぁ、世の中に Lisp という名前のプログラミング言語がありまして、xyzzy はそのプログラムを走らせることができるんだなぁ、と理解してください。
 エディタでプログラムを走らせられる、というメリットを理解できる方は、迷わず xyzzy を使いましょう。フリーです。
 ちなみにこの xyzzy、使いこなすには「相当のスキル」がなければ無理です。いちおう Windows キーバインド (この言葉がわからない方は秀丸などを使いましょう…) にすることもできますけれど、やはり emacs バインドでしょう。というわけで、UNIX で emacs (Mule) を使い込んでいた方々、meadow (Windows 用 emacs) を使い込んでいた方々にお勧めです。
 emacs より数倍高速で、使いやすさや機能も引けを取りません。ただし、頻繁にバージョンアップしているので仕様 (主に Lisp の仕様ですけれども) がコロコロ変わったりしています。emacs のように幅広いテストが行われているわけでもありませんので、その辺りは了解して使うようにしてください。


2. 設定

 xyzzy の設定は三ヶ所で行われます。
 まずひとつはメニューの「ツール(T)」にある「共通設定(C)...」です。次は xyzzy をインストールしたディレクトリの下にある site-lisp/siteinit.l という Lisp プログラムファイルです。最後はホームディレクトリにある .xyzzy です。順番に説明していきましょう。
 まず共通設定の方から始めます。

 「フォント」タブでは、使用するフォントを設定できます。が、ここで早速躓くことが多いです。文字セット(H)というコンボボックスがありますけれども、ここで選んだ文字セットに対してフォントを設定することができます。ですから、ASCII が選択されているときにフォントを変更しても、日本語フォントは変更されないということになります。このコンボボックスの値を「日本語」にして、フォントを設定しましょう。逆に、アルファベットだけ違うフォントを使いたい場合は ASCII を選択した状態でフォントを設定します。
 で、下の方にあるASCII以外のサイズはおまかせ(R)もチェックしておきましょう。¥をバックスラッシュに変換(B)は好みに応じてチェックすればいいでしょう。わたしは

問答無用でチェック
しています。

 「表示」タブは画面表示に関する各種設定を行います。テキストの折り返しは「ウィンドウの幅(W)」に設定しています。が、これは使う人の環境に応じて設定してくださいね。あとはちゃんと反転する(Q)がチェックされていないと、インクリメンタルサーチなどでなにか表示がおかしくなることがあります。昔のバージョンで、の話だったので、今はもう直っているかもしれません。行番号は表示行(D)をチェックすると、折り返した部分で「一行」と数えるようになります。チェックされていなければ、改行までが「一行」です。その他は、見ればわかるものやら、何に使うのかわからないものやら。

 「バックアップファイル」では、わたしは無効にしています。バックアップファイルが無いと不安〜、っていう方はバックアップファイルをつくる(B)をチェックしてみましょう。(ファイル名)~ というバックアップファイルが作成されるようになります。ここら辺は emacs と同じ。

 「読み込み」「排他制御」「自動セーブ」「禁則処理」「ディレクトリ」は使う人だけ……。普通はそのままでオッケーでしょう。

 「いろいろ」は、ちょっといじります。何が起こるかよくわからない項目が多いので、あんまり触ってませんけど。まずは複数キーストロークのIME制御(I)からです。これをチェックすると、C-x C-f のような、複数ストローク入力を行うときでも IME を上手に制御してくれるそうです。……あとは、好みに応じて(笑)。

 「さまざま」もいじっておくと便利です。まずは起動時に〜終了時に〜のすべてをチェックしておきます。これで、二回目以降の起動時も前回使った位置から (最大化しているならば画面いっぱいの状態から) 編集作業を始めることができるようになります。いちいち音を鳴らすな(B)もチェックしておくとやかましくありません。キーボードマクロ実行中は戻って検索しない(M)をチェックしておくと、キーボードマクロを使うとき、きっと幸せになれるでしょう。

 次は site-lisp/siteinit.l です。
 これは xyzzy 起動時に読み込まれる Lisp ファイルです。自分の環境を構築するための初期化コードを書いておきます。また、ここで書かれた内容はバイトコンパイルされて xyzzy のコアイメージとなるので、大量の処理を書いておいても起動のたびに色々なモジュールがロードされたりするようなことはありません。一方の .xyzzy はバイトコンパイルされず、毎回その場でバイトコンパイルして実行されます。
 参考のために、わたしの設定をここに書いておきましょう。

site-lisp/siteinit.l:
;; キーバインド
(global-set-key  #\C-/   'undo)


;; インクリメンタルサーチ
(load-library  "isearch")


;; モードラインの設定
(setq-default  mode-line-format  "--%*- %b (%M) [%k:%l] %P %f [%i]")


;; Ruby-mode
(load-library "ruby")
(push '("\\.rb$" . ruby-mode) *auto-mode-alist*)
(setq *ruby-indent-column* 2) ; インデント量を変える
(load-library "ruby-lister")
;(setq *ruby-lister-rtags-path* "C:/ruby/rtags.rb") ; rtags.rbまでのパス
(load-library "ruby-debug")
(load-library "ruby-doc")


;; 括弧対応のハイライト
(load-library "paren")
(turn-on-global-paren)


;; 拡張fill
(load-library "flex-fill")


;; 自動タイムスタンプ埋め込み
(load-library "auto-time-stamp")
(define-key ctl-x-map #\C-s 'save-buffer-with-time-stamp)
  • 注意
    • 以下のライブラリは標準ではありません
      1. ruby
      2. paren
      3. flex-fill
      4. auto-time-stamp
.xyzzy:
;; C-mode indentation
(setq  c-indent-level                 4)
(setq  c-continued-statement-offset   4)
(setq  c-brace-imaginary-offset       0)
(setq  c-brace-offset                -4)
(setq  c-argdecl-indent               8)
(setq  c-label-offset                -4)


;; C++-mode indentation
(setq  c++-indent-level                 4)
(setq  c++-continued-statement-offset   4)
(setq  c++-brace-imaginary-offset       0)
(setq  c++-brace-offset                -4)
(setq  c++-argdecl-indent               8)
(setq  c++-label-offset                -4)


;; LaTeX mode
(require "LaTeX")
(add-hook '*LaTeX-mode-hook*
          '(lambda ()
            (setq *LaTeX-ime-control* nil)
           )
)


;; fill column
(setq-default  fill-column  70)


;; 'paren' library switch setting
(setq-default  *paren-highlight-only-paren*  t)


;; (user-defined command)
;;   insert header ID
(require "timestmp")
(export '(insert-header-ID))
(defun insert-header-ID ( id )
  (interactive "sID : ")
  (with-output-to-selected-buffer
    (princ (concat "_" (concat id (format-date-string "_%Y%m%d%a_%H%M%S_"))))
  )
)

3. メーリングリスト

 xyzzy にも情報交換のためのメーリングリストがあります。
 作者の亀井氏もちゃんと見てくださっており、バグレポートや「こうしてくれー」要望などが飛び交っています。


4. ライブラリ

 たくさんの方々が xyzzy 用のライブラリを作っておられます。
 ということで、わたしが使っているライブラリやそれに対する個人的なパッチなどを公開していきたいと思います。

 まずは ruby-mode から。服部さん作で、こちら[ruby-mode]からダウンロードできます。
 動作面ではとりあえず問題ないのですけれども、キーワードファイルがちょっと整っておらず、色つけできないキーワードが多くあります。そこでわたしが勝手にキーワードを増やしてみました。キーワードファイルのみをアップしておきますので、スクリプト本体は上記のリンクからダウンロードしてきてください。また、ここで提供しているキーワードファイルに関して作者の服部さんへ問い合わせするのは 絶対に やめてください。他の人に迷惑かけちゃダメよ。
 というわけで、xyzzy Ruby-mode 用キーワードファイルです。


5. TIPS

 xyzzy メーリングリストや、ほかの WWW ページで発見したいろいろなテクニック、lisp コードなどを掲載していきます。




SOFTWARE] - [SOFTWARE.favorite] - [ルートメニュー