ほとんど私は、Elisp のことはわかりません。
そんな私でもなんとか使っている (使いこなせているかどうかは別ですが) Elisp を紹介します。
このページでは、Meadow 1.1x で動いたものを記載しています。
また、NTEmacs には最初から入っているものもあります。
電子メールツールです。最近のバージョンでは、Perl script で書かれた IM を使わないので、Perl をインストールする必要がありません。
一部 C を使っているので、自分でコンパイルするには C コンパイラ (VC とか Cygwin など) が必要です。
C コンパイラを入れてない人は、Mew-Win32 にインストーラがありますので、 そちらを使えばいいでしょう。
また、IM を使わないバージョンは、現状では、冒険家バージョンですので、それなりの覚悟が必要です。
バージョンは忘れましたが、2001/02/11 現在では、βバージョンに移行しています。
日々、機能追加されてますので、ML を参照しましょう。
と思いましたが、それじゃ不親切なので、私の設定例を置いておきます。(1.95b バージョン用です。2.1rc でも 3.0.X でもいけます。)
全部 .emacs に書いてもいいのですが、.mew に分けられます。
起動に関するものは下記で、.emacs に設定します。
(autoload 'mew "mew" nil t) (autoload 'mew-send "mew" nil t) (autoload 'mew-user-agent-compose "mew" nil t) (global-set-key "\C-xm" 'mew) ;C-x m で Mew を起動しますそれ以外は .mew に設定します。
と言っても、更新頻度が早いので、ML を購読することをお薦めします。
Mew に付属の info を読みましょう。
ただ、更新速度に info が追い付いていません。記載されていないもので、
重要な機能はスレッド表示です。
t t でスレッド表示をトグルします。
他は、コマンドの説明を調べてください。
default では X-Mailer の表示が
X-Mailer: Mew version 1.95b103 on Emacs 20.7 / Mule 4.1 (AOI)
となって、Meadow を使っているぞというアピールが足りないので、
Gnus や Wanderlust のように自己主張しましょう。
# でも、やたらと長くなるのもいやなので、括弧の中身は削ってます。
X-Mailer に Mew のバージョンを、User-Agent に Emacs 情報等をつけるようにしました。
Meadow 1.13b2 だと、こんな感じになります。
X-Mailer: Mew version 1.95b103
User-Agent: Emacs/20.7.1 Mule/4.1 (AOI) Meadow/1.13 Beta2 (UKIHASHI:61) OS/i386-*-windows95.1111
.mew に下記を記入してください。
(setq mew-x-mailer (concat mew-version "\nUser-Agent: Emacs/" emacs-version (if (featurep 'mule) (concat " Mule/" mule-version)) (if (featurep 'meadow) (let ((mver (Meadow-version))) (if (string-match "^Meadow-\\(.*\\)$" mver) (concat " Meadow/" (substring mver (match-beginning 1) (match-end 1)))))) (concat " OS/" system-configuration)))
User-Agent の括弧の中身を削りたい人は、こちらをどうぞ。
(setq mew-x-mailer (concat mew-version "\nUser-Agent: Emacs/" emacs-version (if (featurep 'mule) (if (string-match "\\([0-9].*\\)[ \t\n](" mule-version) (concat " Mule/" (substring mule-version (match-beginning 1) (match-end 1))))) (if (featurep 'meadow) (let ((mver (Meadow-version))) (if (string-match "^Meadow-\\(.*\\)[ \t\n](" mver) (concat " Meadow/" (substring mver (match-beginning 1) (match-end 1)))))) (concat " OS/" system-configuration)))
Mule/4.1 (葵) Meadow/1.13 Beta2 (浮橋:61) のように code-name を漢字にする
場合は、
拙作のmm-version.el
を使って、
.mew に下記を記入してください。
(setq mew-x-mailer (concat mew-version "\nUser-Agent: Emacs/" emacs-version (if (featurep 'mule) (concat " Mule/" mule-version)) (if (featurep 'meadow) (let ((mver meadow-version)) (if (string-match "^Meadow-\\(.*\\)$" mver) (concat " Meadow/" (substring mver (match-beginning 1) (match-end 1)))))) (concat " OS/" system-configuration)))
ML から配送されてくるメールの多くは、Subject に [**** 12345] と表示されます。 それはそれで、分かりやすいのですが、メールを振り分けてしまうと、 いちいち表示されるのは、ちょっとうざったいです。
ということで、振り分けた先のディレクトリでは、 Subject の [**** 12345] を表示しないようにしてみました。 メールのデータ自体は、いじりませんのでご安心を。
ML によっては、 [**** 12345]こんにちは のように、 [**** 12345] と こんにちは の間にスペースが入らないものもあるので、それにも対応するように しました。
.mew に下記を設定します。message モードで、s all して、表示を 作り直します。
;; 扱うヘッダを指定。Folder Filename この順で必須 (setq mew-scan-fields '("Folder:" "Filename:" "Subject:" "Date:" "From:" "To:" "Content-Type:" "Message-Id:" "X-Mew-UIDL:" "In-Reply-To:" "References:" "X-Ml-Name:" "X-Mail-Count:" "X-ML-COUNT:" "X-Seqno:" )) ;; 対応する alias を設定 (setq mew-scan-fields-alias '("FLD" "NUM" "SUBJ" "DATE" "FROM" "TO" "CT" "ID" "UIDL" ; 開発版の 3.0.54 以降は UIDL → UID "IRT" "REF" "MLNAME" "MAILCOUNT" "MLCOUNT" "SEQNO")) (defun mew-scan-form-mailcount () (let ((mailcount (MEW-MAILCOUNT))) mailcount)) (defun mew-scan-form-mlcount () (let ((mlcount (MEW-MLCOUNT))) mlcount)) (defun mew-scan-form-seqno () (let ((seqno (MEW-SEQNO))) seqno)) (defun mew-scan-form-mlname () (let ((mlname (MEW-MLNAME))) mlname)) (defun mew-scan-form-mlsubj () "A function to return Subject:. Unnecessary white spaces are removed." ;; The beginning white spaces have been removed in mew-scan-header ;; (mew-keyval). (let ((mlsubj (MEW-SUBJ))) (if (string= mlsubj "") (setq mlsubj mew-error-no-subject)) (if (string-match "\\(\\[.*\\][ \t\n]*\\)\\(.*\\)$" (mew-replace-white-space mlsubj)) (substring (mew-replace-white-space mlsubj) (match-beginning 2) (match-end 2)) (mew-replace-white-space mlsubj)))) ;; ディレクトリ名の指定方法を正規表現にする (setq mew-scan-form-list-list-type 'regex);or 'recursive 'string. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 最初に type が必須 ;; default は (type (5 date) " " (14 from) " " (0 subj)) ;; 配送されるメールのヘッダをから、ML 名、Count 数を調べて、適切に ;; 指定してください。 ;; 書式は (表示する行数 表示するヘッダ) ;; ;; X-Ml-Name: → mlname ;; X-Mail-Count: → mailcount ;; X-ML-COUNT: → mlcount ;; X-Seqno: → seqno ;; に対応しています。 ;; mlsubj が [**** 12345] を削除した subjectです。 (setq mew-scan-form-list '( (("[+/]mail[+/]meadow" "[+/]mail[+/]semi-gnus") ( type (5 date) " " (14 from) " " (5 mlcount) " " (0 subj))) (("[+/]mail[+/]mule") ( type (5 date) " " (14 from) " " (5 seqno) " " (0 subj))) (("[+/]mail[+/]mew") ( type (5 date) " " (14 from) " " (5 mailcount) " " (0 mlsubj))) (("[+/]mail[+/]script-cgi") ( type (5 date) " " (14 from) " " (5 mlcount) " " (0 mlsubj))) (t ;; 残りは default 値に ( type (5 date) " " (14 from) " " (0 subj))) ))
メールの From ヘッダの位置に xbm 画像を表示/挿入します。百聞は一見にしかずなので、 これ を見てください。
Emacs21 でも何とか表示できます。
ただ、その場合は、BITMAP-MULE 8.4 以降を使わないとだめなようです。
解凍したものをパスの通っているところにコピーするだけ
$ make EMACS=Meadow95
$ make install EMACS=Meadow95
です。
Mew 用の設定で、C-c C-f とすると ~/x-faces/myface.xbm が挿入されるようにしてます。
下記を .emacs または .mew に記述します。
.mew に記述します。.emacs に書くと、キーマップが有効になりません。
BITMAP-MULE 8.4 から x-face-decode-message-header に変わっています。
注意書が NEWS にありますので、読みましょう。
(setq mew-use-highlight-x-face t) (setq mew-use-highlight-x-face-function (function (lambda (beg end) (x-face-decode-message-header beg end)))) ;; BITMAP-MULE 8.3 なら下記 ;; (x-face-mule-x-face-decode-message-header beg end)))) (require 'x-face-mule) (autoload 'x-face-encode "x-face" "Generate X-Face string(s) from xbm file." t) (autoload 'x-face-insert "x-face" "Insert X-Face fields." t) (autoload 'x-face-save "x-face" "Save X-Face fields to files." t) (autoload 'x-face-view "x-face" "View X-Face fields." t) (autoload 'x-face-ascii-view "x-face" "View X-Face fields as ascii pictures." t) ; イメージファイルを通常置いておくディレクトリの指定です。 (setq x-face-image-file-directory "~/x-faces") ; イメージファイルをセーブするためのディレクトリ名の指定です。 (setq x-face-image-file-directory-for-save "~/x-faces") (setq x-face-default-xbm-file "myface.xbm") (add-hook 'mew-draft-mode-hook (function (lambda () (define-key mew-draft-mode-map "\C-c\C-f" 'x-face-insert)))) (setq x-face-compressor 'nil)
色の設定は、.emacsに設定します。
(custom-set-faces '(x-face-mule-highlight-x-face-face ((((class color) (background light)) (:foreground "snow" :background "black")))))
Windows 環境で、xbm ファイルを作るのはちと大変です。ということで、私は paint tool で bmp を作っておいて、 変換ツール で変換してます。
X-Face 用の画像サイズは 48x48 dot です。
Mew でメールを作成する時に(draft mode)、ヘッダ部分以外にカーソルを置いて、C-c C-f とすると、ヘッダに myface.xbm が挿入されます。
キー割当ては、当初 C-c C-x でしたが、xcite と重なるので、C-c C-f にしました。
select-xface.el を (バイトコンパイルすれば、それも) load-path の通ったディレクトリにコピーするだけです。
下記を .emacs または .mew に記述します。
.mew に記述します。.emacs に書くと、キーマップが有効になりません。
~/x-faces に xbm ファイルを置くようにしています。
(require 'select-xface) (add-hook 'mew-draft-mode-hook (lambda () (define-key (current-local-map) "\C-c\C-s" 'select-xface))) (setq select-xface-directory "~/x-faces") (setq x-face-add-x-face-version-header "x-face-1.3.6.17");値は何でもいいですが、 ;設定しないとエラーが出ます。
Mew でメールを作成する時に(draft mode)、ヘッダ部分以外にカーソルを置いて、C-c C-s とすると、挿入候補が表示されます。
そこで、n または p で選択して、RET で挿入です。
C-c C-i に挿入をキーバインドしてます。
バックアップファイル、送信先と署名の関連を作成しないようにしてます。
(autoload 'add-signature "c-sig" "c-sig" t) (autoload 'delete-signature "c-sig" "c-sig" t) (autoload 'insert-signature-eref "c-sig" "c-sig" t) (autoload 'insert-signature-automatically "c-sig" "c-sig" t) (autoload 'insert-signature-randomly "c-sig" "c-sig" t) (add-hook 'mew-draft-mode-hook (function (lambda () (define-key mew-draft-mode-map "\C-c\C-i" 'insert-signature-eref)))) (setq sig-save-to-sig-name-alist nil) (setq sig-make-backup-files nil)
メールを返信する時に、引用タグをカスタマイズするツールです。 メールツールとは独立して使えるようですが、他の使い方を私は知りません。
xcite.el に書かれている設定では、最新の Mew ではうまく動かないので、(hookが原因?)以下のようにします。
(autoload 'xcite "xcite" "Exciting cite" t) (autoload 'xcite-yank-cur-msg "xcite" "Exciting cite" t) (global-set-key "\C-c\C-x" 'xcite) (global-set-key "\C-c\C-y" 'xcite-yank-cur-msg) (add-hook 'mew-draft-mode-hook (function (lambda () (define-key mew-draft-mode-map "\C-c\C-y" 'xcite-yank-cur-msg)))) (add-hook 'mew-init-hook (function (lambda () (define-key mew-summary-mode-map "A" '(lambda () (interactive) (mew-summary-reply) (xcite-yank-cur-msg))))))
default では、メーリングリスト名や記事番号が引用するヘッダに含まれていません。 と言うことで、私なりの変更を加えてみました。差分は以下の通りですので、参考にしてください。
*** xcite.el.orig Sun Feb 17 14:20:16 2002 --- xcite.el Sun Feb 17 14:09:40 2002 *************** *** 392,397 **** --- 392,399 ---- (defvar xcite:inet-msgid "^Message-Id: \\(<.*>\\)") (defvar xcite:inet-subject "^Subject: \\(.+\\)$") (defvar xcite:inet-ng "^Newsgroups: \\(.+\\)$") + (defvar xcite:inet-mlname "^X-ML-NAME: \\(.+\\)$");;add by te-kun + (defvar xcite:inet-mlcount "^X-Ma?i?L-COUNT: \\(.+\\)$");;add by te-kun (defvar xcite:author-regexp (concat *************** *** 426,432 **** その関数中では id, author, date, time, year, month, day, hour, minute, ampm, tag という変数を利用することができる。ただし、Internet での Mail では date, id(e-mail アドレス), handle(実名フィールド), msgid(Message-ID), ! subject, tag(引用タグ), ng(NetNewsの場合のNewsgroups)が利用可能.") (defvar xcite:default-user-prefix-alist '(("yuuji@ae.keio.ac.jp" "ゆ" "広") --- 428,435 ---- その関数中では id, author, date, time, year, month, day, hour, minute, ampm, tag という変数を利用することができる。ただし、Internet での Mail では date, id(e-mail アドレス), handle(実名フィールド), msgid(Message-ID), ! subject, tag(引用タグ), ng(NetNewsの場合のNewsgroups)が利用可能. ! それと mlname(メーリングリスト名),mlcount(メーリングリストの記事番号)") (defvar xcite:default-user-prefix-alist '(("yuuji@ae.keio.ac.jp" "ゆ" "広") *************** *** 703,709 **** (let ((sw (selected-window)) (b (make-marker)) (e (make-marker)) (cb (current-buffer)) (p (point)) mesg n id handle date time year month day hour minute ampm msgid tag ! subject ng peoh x-cite-me zmacs-regions (tmpbuf " *xcite tmp*")) (save-excursion (cond --- 706,712 ---- (let ((sw (selected-window)) (b (make-marker)) (e (make-marker)) (cb (current-buffer)) (p (point)) mesg n id handle date time year month day hour minute ampm msgid tag ! subject ng peoh x-cite-me zmacs-regions mlname mlcount (tmpbuf " *xcite tmp*")) (save-excursion (cond *************** *** 774,779 **** --- 777,788 ---- (goto-char peoh) (if (re-search-backward xcite:inet-ng nil 1) (setq ng (xcite-match-string 1))) + (goto-char peoh) + (if (re-search-backward xcite:inet-mlname nil 1);add by te-kun + (setq mlname (xcite-match-string 1))) + (goto-char peoh) + (if (re-search-backward xcite:inet-mlcount nil 1);add by te-kun + (setq mlcount (xcite-match-string 1))) (goto-char peoh) (if (re-search-backward xcite:inet-subject nil t) (setq subject (xcite-match-string 1))))
3.1.5.3 設定の後に以下を追加します。
(setq xcite:insert-header-function 'my-xcite-header) (defun my-xcite-header () (if mlname (format ">>>>>%s%sさん曰く\n>>>>>%s\n>>>>>at %s\n>>>>>%s\n" id (if handle (concat "(" handle ")" " " "==" "'" tag "'") (concat " " "==" "'" tag "'")) subject date (concat "[" mlname ":" " " mlcount "]")) (format ">>>>>%s%sさん曰く\n>>>>>%s\n>>>>>at %s\n" id (if handle (concat "(" handle ")" " " "==" "'" tag "'") (concat " " "==" "'" tag "'")) subject date)))私はメーリングリスト名と記事番号を
(setq xcite:insert-header-function 'my-xcite-header) (defun my-xcite-header () (if mlname (format "From: %sさん曰く\nSubject: %s\nDate: %s\nMessage-Id: %s\nML-Name: %s\n" (if handle (concat handle " " "<" id ">" " -->" "\"" tag "\"") (concat id " -->" "\"" tag "\"")) subject date msgid (concat "[" mlname ":" " " mlcount "]")) (format "From: %sさん曰く\nSubject: %s\nDate: %s\nMessage-Id: %s\n" (if handle (concat handle " " "<" id ">" " -->" "\"" tag "\"") (concat id " -->" "\"" tag "\"")) subject date msgid)))
メールツールと連動したスケジュール管理ツール (MHC 単体では動きません)
(setq mhc-mailer-package 'mew) (autoload 'mhc-mode "mhc" nil t) (add-hook 'mew-summary-mode-hook 'mhc-mode) (add-hook 'mew-virtual-mode-hook 'mhc-mode) (setq mhc-base-folder "+schedule")
(autoload 'mhc-mew-setup "mhc-mew") (add-hook 'mew-init-hook 'mhc-mew-setup) (setq mhc-base-folder "+schedule")
HTML 文書の編集サポートモードです。
*** yahtml.el.orig Mon Feb 18 23:38:02 2002 --- yahtml.el Mon Feb 18 23:38:26 2002 *************** *** 2302,2308 **** (if (string-match "^[A-Za-z]:/" file) (progn ;; (aset file 1 ?|) ;これは要らないらしい… ! (setq file (concat "///" file)))) (while list (if (string-match (concat "^" (regexp-quote (car (car list)))) file) (setq url (cdr (car list)) --- 2302,2309 ---- (if (string-match "^[A-Za-z]:/" file) (progn ;; (aset file 1 ?|) ;これは要らないらしい… ! (setq file (concat "//" file)))) ;fixed by te-kun ! ; (setq file (concat "///" file)))) (while list (if (string-match (concat "^" (regexp-quote (car (car list)))) file) (setq url (cdr (car list))cygwin-1.3.9-1 にしてから上記の対応をしないといけなくなってしまいました。
.emacsに下記を記入してください。
yatex1.69 から font-lock に対応しています。
(setq auto-mode-alist (cons '("\\.html?$" . yahtml-mode) auto-mode-alist)) (autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t) (setq yahtml-www-browser "fiber");;;fiber経由でブラウザの立ち上げ (setq yahtml-image-viewer "fiber") (setq yahtml-directory-index "index.html") (setq yahtml-kanji-code 1);;;1=sjis 2=jis 3=euc (setq yahtml-prefer-upcases t);; HTML のタグを大文字にする (setq yahtml-prefer-upcase-attributes t);; 属性指定子を大文字にする ;; yahtml モードの起動が遅い場合に次の設定を有効にする ;; アクセス制限ファイル .htaccess を参照しないようにする ;;(setq yahtml-server-type nil) ;; yahtml-mode 初期化時の設定 (add-hook 'yahtml-mode-hook (function (lambda () ;; outline-minor-mode の設定(使用しない場合は不要) (outline-minor-mode t) ; outline-minor-mode を起動 ;; 見出しの正規表現 (make-local-variable 'outline-regexp) (setq outline-regexp "^.*<[Hh][1-6]\\>") ;; 見出し終わりの正規表現 (make-local-variable 'outline-heading-end-regexp) (setq outline-heading-end-regexp "[Hh][1-6]>") ;; 見出しレベルの計算式 (make-local-variable 'outline-level) (setq outline-level (function (lambda () (char-after (1- (match-end 0))))))))) ;; yahtml ロード時の設定 (add-hook 'yahtml-load-hook (function (lambda () ;; メニュー選択時に IME をオフにする (wrap-function-to-control-ime 'yahtml-browse-menu t nil))))
ftp://ftp.math.ohio-state.edu/pub/users/ilya/perl/cperl-mode/ からもらってきます。
.emacs に下記を記入します。
(autoload 'perl-mode "cperl-mode" "alternate mode for editing Perl programs" t) (setq cperl-indent-level 4) (setq cperl-continued-statement-offset 4) (setq cperl-comment-column 40) (setq cperl-hairy t) (setq interpreter-mode-alist (append interpreter-mode-alist '(("miniperl" . cperl-mode)))) (define-key global-map [S-down-mouse-2] 'imenu)
http://www.gentei.org/~yuuji/software/ からもらってきます。
.emacs に下記を記入します。
(add-hook 'cperl-mode-hook '(lambda () (require 'perlplus) (define-key cperl-mode-map "\C-xt" 'perlplus-complete-symbol) (perlplus-setup)) )
CVS によるバージョン管理を容易にしてくれます。CVS 自体は Cygwin 等を使います。
おっと、CVS って何?っていわれるとつらいですが、簡単に言うと、開発のためのバージョン管理です。テキストファイルの変更内容を差分で保存して、いつでも過去の内容を復元できるほか、複数による開発をサポートするものです。多くのプログラムが CVS により開発されています。一度使い始めると、手放せなくなりますし、助かること必至です。
Makefile を編集して、make; make install です。
編集箇所は、--- Makefile.orig Mon Dec 11 09:50:56 1995 +++ Makefile Tue Jan 16 22:36:32 2001 @@ -24,7 +24,7 @@ prefix = /usr/local datadir = $(prefix)/share -locallisppath = $(datadir)/emacs/site-lisp +locallisppath = /Meadow/1.13b1/site-lisp # This will fail if locallisppath is anything but a single directory. # That is all right, since that is the default behaviour of Emacs; those # that know how to change it, should know how to change this file. And @@ -33,7 +33,7 @@ ELIBDIR = $(locallisppath)/elib infodir = $(prefix)/info -EMACS = emacs +EMACS = Meadow95 MAKEINFO = makeinfo TEXI2DVI = texi2dvi SHELL = /bin/sh @@ -53,12 +53,14 @@ elib-node.elc bintree.elc avltree.elc string.elc read.elc cookie.elc dll.elc \ dll-debug.elc -all: elcfiles elib-startup.el info +all: elcfiles elib-startup.el +#all: elcfiles elib-startup.el info elib-startup.el: startup-template.el Makefile sed s,ELIB_PATH,\"$(ELIBDIR)\", < startup-template.el > elib-startup.el -install: all installdirs install-info +install: all installdirs +#install: all installdirs install-info $(INSTALL_DATA) $(ELFILES) $(ELIBDIR) $(INSTALL_DATA) $(ELCFILES) $(ELIBDIR) @echo Please merge elib-startup.el into $(locallisppath)/default.el
Makefile を編集して、make; make install です。
編集箇所は、--- Makefile.orig Mon Mar 6 06:32:20 2000 +++ makefile Tue Jan 16 15:26:20 2001 @@ -40,13 +40,13 @@ # the directory where you installed the elib .elc files. # This is only needed if your site-start.el (or default.el) does not # set up elib correctly. -elibdir = $(lispdir)/elib +# elibdir = $(lispdir)/elib # the directory where you install the info doc infodir = $(prefix)/info docdir = $(prefix)/doc -EMACS = emacs +EMACS = Meadow95 MAKEINFO= makeinfo TEXI2DVI= texi2dvi SHELL = /bin/sh @@ -130,7 +130,8 @@ $(MKDIR) $(docdir) $(CP) *.dvi $(docdir)/ -install: install_elc install_info install_startup # install_el +install: install_elc install_startup # install_el +#install: install_elc install_info install_startup # install_el clean: $(RM) *~ core .\#* $(TEXEXTS)
diff-mode-1.8.el を diff-mode.el にリネームして (バイトコンパイルしたならそれも) load-path の通ったディレクトリにコピーするだけです。
.emacs に下記を記入します。
;; NTEmacs(Emacs21) では、下記の 4行はいらない。 (load-library "pcl-cvs-startup") (add-hook 'cvs-mode-hook (lambda () (collection-set-goal-column cvs-buffer-name 38))) ;; 文字コードを統一しないと、悲惨な目にあいます。 (modify-coding-system-alist 'process "cvs" '(undecided . sjis)) ;; diff-mode-1.8.el (autoload 'diff-mode "diff-mode" "Diff major mode" t) (add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)) ;; diff 形式の設定 (setq diff-switches "-u"); or "-c"
SJIS の他に JIS や EUC を使う人は .emacs の (set-language-environment "Japanese") のあとに、
(setq default-process-coding-system '(undecided . japanese-shift-jis-dos))を書いておかないと文字が化けます。
NTEmacs(Emacs21) には、pcvs として pcl-cvs が始めから入っていますので、
設定をするだけで使えます。
SKK とは、日本語入力プログラムです。Meadow を使う場合、MS-IME が使えるので、
無理に SKK を使うことはないと思いますが、サイズも小さいし、変換も早いので、
どんどん Emacs に染まる私です。
私は、MS-IME の変換は気に入らないので、AI-SOFT の WXG を常用しており、
MS-IME は、真っ先に消しちゃいましたが。
まあ冗談はさておき、SKK では括弧などの対になる文字列の一括入力ができるので、便利です。
つまり、"「(,{," を入力すると、自動的に対応する "})」"が入力されます。
SKK を知るまで、自分でマイナーモードを作ってましたが、SKK を使い始めてから、
それは、お蔵入りになってしまいました。
(require 'skk-setup)を書けばいいだけですが、
;; 辞書ファイル、チュートリアルを明示的に指定 (setq skk-large-jisyo "c:/usr/local/share/skk/dic/SKK-JISYO.L") (setq skk-tut-file "c:/usr/local/share/skk/SKK.tut") ;; 対になる文字列の一括入力 (setq skk-auto-insert-paren t) ;; ▼モードで RET を入力したときに確定のみ行い、改行はしません (setq skk-egg-like-newline t)です。
チュートリアル (M-x skk-tutorial) で、何度も練習しましょう。
案外、慣れるものです。
SKK に染まってくると、Windows でも使いたくなるものです。
やはり、先人は素晴しくて、skkime98 なるものがあります。
Windows98 用ですが、何故か、Windows95 でも動いています。
辞書(主に英和・和英)閲覧モードです。結構、便利です。
辞書には、他に英辞郎などがありますが、英辞郎はサイズが大きいので、
使っていません。
巨大なファイルの検索用にSUFARY があり、Emacs 用に
sufary.el
なるものを作りました。
尚、英辞郎を取ってくるには、Nifty のアカウントが必要です。
Meadow 用のインストール手順が INSTALL に書いてありますので、それを参照してください。
(autoload 'sdic-describe-word "sdic" "英単語の意味を調べる" t nil) (global-set-key "\C-cw" 'sdic-describe-word) (autoload 'sdic-describe-word-at-point "sdic" "カーソルの位置の英単語の意味を調べる" t nil) (global-set-key "\C-cW" 'sdic-describe-word-at-point)とすればいいだけですが、
(setq sdic-default-coding-system 'euc-japan-dos)
info が充実していますので、それを見て下さい。
LaTeX(Tex) の編集サポートモードです。
LaTeX(TeX) とは組版のことで、別途インストールする必要があります。
Windows 用には、pLaTeXεがあり、
http://www.fsci.fuk.kindai.ac.jp/~kakuto/win32-ptex/
から入手できます。
これはファイルサイズが大きいので、
書籍の 海上 忍 黒川弘章 著 『これだけでできる LaTeX 実践活用ガイド』
技術評論社 2000年
に 添付されている CD-ROM を使う方がいいでしょう。
また、pLaTeXεについては、 http://www.nara-edu.ac.jp/~asait/ latex/tex.htm を参考にして下さい。
使用例は下記の通りです。
ちなみに、上の問題は、高校1年生用に作ったもので、3分もあれば解けるのですが、
某有名大学の現役学生に解かせたところ、全滅でした。
学生の学力低下は深刻です。
解説は、こちら
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) ;; 拡張子が .tex のファイルを開くときに yatex-mode にする (setq auto-mode-alist (cons '("\\.tex$" . yatex-mode) auto-mode-alist)) ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc) (setq YaTeX-kanji-code 1) ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述) (setq tex-command "platex") (setq dvi2-command "dviout") (setq bibtex-command "jbibtex") ;; yatex-mode 初期化時の設定 (add-hook 'yatex-mode-hook (function (lambda () ;; outline-minor-mode の設定(使用しない場合は不要) (outline-minor-mode t) ; outline-minor-mode を起動 (make-local-variable 'outline-regexp) (setq outline-regexp ; 見出しの正規表現 (concat "[ \t]*\\\\" "\\(appendix\\|documentstyle\\|part\\|chapter\\|" "section\\|subsection\\|subsubsection\\|" "paragraph\\|subparagraph\\)" "\\*?[ \t]*[[{]"))))) ;; yatex ロード時の設定 (add-hook 'yatex-mode-load-hook (function (lambda () ;; メニュー選択時に IME をオフにする (wrap-function-to-control-ime 'YaTeX-typeset-menu t "P"))))
テキストブラウザの w3m を Emacs 上で動作させるインターフェイスです。
XEmacs や X 上の Emacs21 では画像をインライン表示できます。
ただ、Meadow はインライン表示に対応していません。待ち遠しいですね。
% ./configure CYGWIN_95-4.0 1 3 10s(0 /i586 at PORTEGE % % Hello te-kun. Let's start configuration process for w3m. % Please answer some questions. % Which directory do you want to put the binary? (default: /usr/local/bin) Which directory do you want to put the support binary files? (default: /usr/local/lib/w3m) Which directory do you want to put the helpfile? (default: /usr/local/share/w3m) Which directory do you want to put the system wide w3m configuration file? (default: /usr/local/etc/w3m) Which language do you prefer? 1 .. Japanese (charset ISO-2022-JP, EUC-JP, Shift_JIS) (LANG=JA) 2 .. English (charset US_ASCII, ISO-8859-1, etc) (LANG=EN) [12]? 1 ← Japanese を選択 You select Japanese (charset ISO-2022-JP, EUC-JP, Shift_JIS) LANG=JA What is your display kanji code? S .. Shift JIS (DISPLAY_CODE=S) E .. EUC-JP (DISPLAY_CODE=E) j .. JIS: ESC $@ - ESC (J (DISPLAY_CODE=j) N .. JIS: ESC $B - ESC (J (DISPLAY_CODE=N) n .. JIS: ESC $B - ESC (B (DISPLAY_CODE=n) m .. JIS: ESC $@ - ESC (B (DISPLAY_CODE=m) [SEjNnm]? S ← Shift JIS を選択 You select Shift JIS DISPLAY_CODE=S Use 2-byte character for table border, item, etc. [y]? Use Lynx-like key binding as default [n]? Let's do some configurations. Choose config option among the list. 1 - Baby model (no color, no menu, no mouse, no cookie, no SSL) 2 - Little model (color, menu, no mouse, no cookie, no SSL) 3 - Mouse model (color, menu, mouse, no cookie, no SSL) 4 - Cookie model (color, menu, mouse, cookie, no SSL) 5 - Monster model (with everything; you need openSSL library) 6 - Customize Which? 4 ← 私は Cookie model を選択してます Use color ESC sequence for kterm/pxvt .... yes Use mouse (requires xterm/kterm/gpm/sysmouse) .... yes Use popup menu .... yes Use cookie .... yes Use SSL (need OpenSSL library; Please see http://www.openssl.org/) .... no Inline image support (you need Imlib library) [n]? ANSI color escape sequences support [n]? Use Migemo (Roma-ji search; Please see http://migemo.namazu.org/) [n]? External URI loader support [y]? Use w3mmail.cgi [y]? NNTP support [y]? Gopher support [y]? Use alarm support code [y]? Use mark operation [y]? Input your favorite editor program. (Default: vi) Input your favorite external browser program. (Default: netscape) Input your favorite C-compiler. (Default: gcc) Input your favorite C flags. (Default: -O) Terminal library -ltermcap found at /lib, and it seems to work. Terminal library -ltermcap found at /usr/lib, and it seems to work. Terminal library -lcurses found at /lib, and it seems to work. Terminal library -lcurses found at /usr/lib, and it seems to work. Terminal library -lncurses found at /lib, and it seems to work. Terminal library -lncurses found at /usr/lib, and it seems to work. Which terminal library do you want to use? (type "none" if you do not need one) (default: -lncurses) /lib/libz found /usr/include/zlib.h found Input additional LD flags other than listed above, if any: : ← 単にリターン Checking machine dependency. -- 省略 -- ------------ Configuration done ------------ Current w3m version is 0.3. Extracting config.h config.h is created. See config.h for further configuration. Configuration done. Just type "make". %
;;; 全般の設定 (autoload 'w3m "w3m" "Interface for w3m on Emacs." t) (autoload 'w3m-find-file "w3m" "w3m interface function for local file." t) (autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t) (autoload 'w3m-search "w3m-search" "Search QUERY using SEARCH-ENGINE." t) (autoload 'w3m-weather "w3m-weather" "Display weather report." t) (autoload 'w3m-antenna "w3m-antenna" "Report chenge of WEB sites." t) ;;; browse-url ; 以下のように設定しておくと、URI に類似した文字列がある場所で C-x w と ; 入力すれば、w3m で表示されるようになる。 (setq browse-url-browser-function 'w3m-browse-url) (autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t) (global-set-key "\C-xw" 'browse-url-at-point) ;;; dired ; 以下のように設定しておくと、dired-mode のバッファでファイルを選択して ; いる状態で C-x w と入力すれば、該当ファイルが w3m で表示されるように ; なる。 (add-hook 'dired-mode-hook (lambda () (define-key dired-mode-map "\C-xw" 'dired-w3m-find-file))) (defun dired-w3m-find-file () (interactive) (require 'w3m) (let ((file (dired-get-filename))) (if (y-or-n-p (format "Open 'w3m' %s " (file-name-nondirectory file))) (w3m-find-file file)))) ;;; yahtml-mode ; 以下のように設定しておくと、yahtml-mode で編集中のファイルを preview ; する時に emacs-w3m を利用することができる。 (autoload 'w3m-goto-url "w3m") (defadvice yahtml-browse-html (around w3m-yahtml-browse-html activate compile) (w3m-goto-url (ad-get-arg 0) t))
RET カーソル位置の URL を閲覧 R リロード C 文字コードを指定してリロード TAB 次のアンカーにジャンプ M-TAB 前のアンカーにジャンプ ] 次のフォームにジャンプ [ 前のフォームにジャンプ } 次の画像にジャンプ { 前の画像にジャンプ B 前のページに戻る ^ 親のページに昇る g URL 指定でジャンプ d カーソル位置の URL をダウンロード u カーソル位置の URL をミニバッファに表示 I 画像を閲覧 M-i 画像を保存 c 現在の URL をミニバッファに表示 \ 現在のページのソースを表示 = 現在のページのヘッダを表示 SPC スクロールアップ または 次の URL へ DEL スクロールダウン または 前の URL へ > 左へスクロール < 右へスクロール j 次の行へ k 前の行へ l 次の文字へ h 前の文字へ v ブックマークを閲覧 a 現在のページをブックマークへ追加 M-a カーソル位置のリンクをブックマークへ追加 q w3m ウィンドウを閉じる Q URL リストを更新して、w3m を終了
ローマ字のまま日本語をインクリメンタルサーチします。
かな漢字変換してから検索する手間が省けます。
migemo の version 0.22 までは perl 5.005 以上が必要で、version 0.3 以降は Ruby 1.6 以降が必要です。私の migemo はまだ Perl のままです。(^^;
まず、migemo-0.22.tar.gz を展開し Lingua-Romkan ディレクトリで、
$ perl Makefile.PL
$ make
$ make install
で、Lingua::Romkan モジュールをインストールするのですが、
私の環境は、ActivePerl + Cygwin で、Visual C がないので、これでは make できませんでした。
そこで、私のような変(?)な環境用の
Makefile を作りました。
Perl が C:\appli\perl にインストールしているという前提なので、ご自身の環境
に合わせて下さい。
Lingua-Romkan ディレクトリにコピーして、
$ make
$ make install
です。
白井さんに教えてもらいましたが、ActivePerl に対する Perl Module は
nmake じゃないと作れないので、
ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
を使えば 以下のように Module をインストールできるそうです。
$ tar zxvf migemo-0.22.tar.gz
$ cd migemo-0.22/Lingua-Romkan
$ perl Makefile.PL
$ nmake
$ nmake install
次に、1つ上のディレクトリに戻り、SKK-JISYO.L をカレントディレクトリにコピーし
$ ./configure --with-emacs=Meadow95
$ make
$ make install
で migemo をインストールします。
これは、ActivePerl + Cygwin な環境でも、うまくいきます。
ちょっと時間が掛かるので、コーヒーでも飲んで待ちましょう。
(require 'migemo) ;;; migemo.pl migemo-cache.pl migemo-dict のあるディレクトリ (setq migemo-directory "c:/usr/local/share/migemo") ;;; 改行コードを DOS形式(CR+LF)にしないと Windows では動かないでしょう。 (setq migemo-coding-system 'euc-japan-dos) ;;; default では、migemo を使いません。 ;;; M-x migemo-toggle-isearch-enable で、migemo の ON/OFF を切り換えます。 (setq migemo-isearch-enable-p nil);; t にすると、default で migemo を利用
通常のインクリメンタルサーチと同様に、C-s、C-r するだけです。
最初の起動には少し時間が掛かります。
当然ながら、辞書にない語は検索できません。