xs-modeの設定

以前 List::UtilsBy::XSというモジュールを書いたとき、
c-modeだとなんか変だしということで xsのソースは頑張って
text-modeで書いていたけど、専用のがあるだろと思って調べて
みると xs-modeというものがあったので、その導入と設定に
ついて。

インストール

(install-elisp "http://www.emacswiki.org/emacs/download/xs-mode.el")

設定

基本的に c-modeなんで、c-modeのパラメータをいろいろといじれば、
好きなようにできると思います。個人的には勝手にインデントするような
ものを無効化しました。

;; for xs-mode
(require 'xs-mode)
(add-to-list 'auto-mode-alist '("\\.xs$" . xs-mode))

(add-hook 'xs-mode-hook
          (lambda ()
            (c-toggle-electric-state -1)
            (setq c-auto-newline nil)))

ドキュメントの設定

XS書くときに利用するドキュメントはほとんど決まっているので、
それを補完する関数を作って設定しました。

(defun xs-perldoc ()
  (interactive)
  (let* ((docs-alist '(("perlapi") ("perlxs") ("perlguts")
                 ("perlcall") ("perlclib") ("perlxstut")))
         (manual-program "perldoc")
         (input (completing-read "perldoc entry: " docs-alist)))
    (if input
        (manual-entry input)
      (error "no input"))))

これで Emacsから簡単に引けるようになります。名前もなんとなく
覚えづらいので、忘れたときでもあったなぁって感じになれるのでは
ないでしょうか。

おわりに

xs-modeの導入と設定について紹介しました。
ソースを見るとあまり長くないし、既存の言語と似たような文法のもの
であれば、そこまで苦労せずに新言語に対応できるのかもしれない
ですね。詳しいところはわからないですけど、ソースを見る限り、
そのあたりはうまく作られているという印象を持ちました。