ほとんど私は、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 するだけです。
最初の起動には少し時間が掛かります。
当然ながら、辞書にない語は検索できません。