Aug 182008
 

EmacsのLisp処理にもガベッジコレクションという考えがありまして、その閾値はデフォルトで400,000バイトという値になっています。
この値を大きくすると、GCの頻度が減って、実行速度が向上する場合があります。増やしすぎても良くないとは思いますが。

とりあえず私は4MBの設定になるよう、以下を.emacs.elに書いてます。

(setq gc-cons-threshold 4194304)

参考:
Garbage Collection – GNU Emacs Lisp Reference Manual

 Posted by at 2:37 pm  Tagged with:

wl-envelope-fromを都度wl-fromから設定する

 article  Comments Off on wl-envelope-fromを都度wl-fromから設定する
Apr 302006
 

Wanderlustでは使用するメールアドレスを複数設定しておき、draftモード時に選択することができるようになってます。

(setq wl-template-alist
      '(("default"
	 (wl-from . "Someone <someone@example.org>")
	 ("From" . wl-from)
	 )
	("biz"
	 (wl-from . "Someone <someone@example.co.jp>")
	 ("From" . wl-from)
	 )
	))

といった具合になるのですが、wl-fromと”From”の両方を設定しないとけないのがやや面倒です。

wl-fromを変えないとEnvelope Fromの値が.wlに記述したwl-fromのままになってしまうため、やむなくそうするのですが、もっと簡単に解決する方法がari’s diaryさんのサイトにありました。
http://www.nijino.com/ari/diary/200305.shtml#200305120

(add-hook 'wl-draft-send-hook
	  (lambda ()
	    (set (make-local-variable 'wl-from) (std11-fetch-field "From"))))

これを記述しておくことでwl-fromが常にFromヘッダ値になり、結果Everlope FromもFromヘッダと同じにすることができます。

PGP memo

 article  Comments Off on PGP memo
Feb 262006
 

WanderlustでのPGPメールの取り扱い

メッセージに署名する リージョン指定してC-cC-mC-s
メッセージの暗号化 リージョン指定してC-cC-mC-e
メッセージの複合化 application/pgp-encryptedのパートで v
non-MIME PGP メッセージの検証 メッセージバッファでC-c:v
non-MIME PGP メッセージの複合 メッセージバッファでC-c:d

参考サイト

GnuPGの使い方

emacs-w3m-cvs.ebuild作成

 article  Comments Off on emacs-w3m-cvs.ebuild作成
Feb 132006
 

はじめに

Gentooのパッケージ管理システムPortageは、FreeBSDのportsやNetBSDのpkgsrcのようにソースからビルドする利用方法が一般的です。
通常使われるソースとしては、tar.bz2などのアーカイブされたものを利用しますが、Portageではcvsからcheckoutしたものを利用することができるようになってます。

emacs用のテキストブラウザであるemacs-w3mをcvsソースからビルドするためのパッケージを自作してみます。


Wanderlustでのcvs対応内容

通常版とcvs版があるWanderlust(Emacsenで動作するMUA)のebuildファイルを比較して、ポイントを確認してみます。

$ diff -u /usr/portage/app-emacs/wanderlust/wanderlust-2.14.0-r1.ebuild \
> app-emacs/wanderlust-cvs/wanderlust-cvs-2.15.ebuild
:
-inherit elisp eutils
+ECVS_SERVER="cvs.m17n.org:/cvs/root"
+ECVS_MODULE="wanderlust"
+ECVS_BRANCH="HEAD"

-MY_P="wl-${PV/_/}"
+inherit elisp cvs

 IUSE="ssl"

 DESCRIPTION="Wanderlust -- Yet Another Message Interface on Emacsen"
 HOMEPAGE="http://www.gohome.org/wl/"
-SRC_URI="ftp://ftp.gohome.org/wl/stable/${MY_P}.tar.gz
-       ftp://ftp.gohome.org/wl/beta/${MY_P}.tar.gz
-       http://dev.gentoo.org/~usata/distfiles/${MY_P}-20050405.diff"
+SRC_URI=""
:

ポイントは以下の3点になります。

  • inheritキーワードにcvsを追加
    これはcvs.eclassというものを使うための宣言です。
  • ECVS_SERVER、ECVS_MODULE、ECVS_BRANCHという3つの変数を定義
    これはcvsモジュールをcheckoutしてくるための情報になります。
    checkout先は/usr/portage/distfiles/cvs-src配下になります。
  • SRC_URIが空
    tar.bz2等アーカイブをダウンロードしてくる必要がなくなりますので、こちらの変数は空にします。未定義ではエラーになります。

emacs-w3m-cvs.ebuild作成

Wanderlustにならって、app-emacs/emacs-w3mのcvs版ebuildを作成してみました。

--- /usr/portage/app-emacs/emacs-w3m/emacs-w3m-1.4.4.ebuild     2005-08-04 04:05:18 +0900
+++ /usr/local/portage/app-emacs/emacs-w3m-cvs/emacs-w3m-cvs-1.5.ebuild    2005-11-23 23:46:38 +0900
@@ -2,15 +2,18 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Header$

-inherit elisp
+inherit elisp cvs
+
+ECVS_SERVER="cvs.namazu.org:/storage/cvsroot"
+ECVS_MODULE="emacs-w3m"
+ECVS_BRANCH="HEAD"

 IUSE=""
-MY_P="${P/_/}"
-S="${WORKDIR}/${MY_P}"
+S="${WORKDIR}/${ECVS_MODULE}"

 DESCRIPTION="emacs-w3m is an interface program of w3m on Emacs."
 HOMEPAGE="http://emacs-w3m.namazu.org"
-SRC_URI="http://emacs-w3m.namazu.org/${MY_P}.tar.gz"
+SRC_URI=""

 LICENSE="GPL-2"
 SLOT="0"
@@ -31,21 +34,22 @@
 }

 src_compile() {
+       autoconf || die "autoconf failed"
        ./configure --prefix=/usr \
-               --with-lispdir=${SITELISP}/${PN} \
-               --with-icondir=/usr/share/${PN}/icon
+               --with-lispdir=${SITELISP}/${ECVS_MODULE} \
+               --with-icondir=/usr/share/${ECVS_MODULE}/icon

        make || die
 }

 src_install () {
-       make lispdir=${D}/${SITELISP}/${PN} \
+       make lispdir=${D}/${SITELISP}/${ECVS_MODULE} \
                infodir=${D}/usr/share/info \
-               ICONDIR=${D}/usr/share/${PN}/icon \
+               ICONDIR=${D}/usr/share/${ECVS_MODULE}/icon \
                install-icons || die

-       make lispdir=${D}/${SITELISP}/${PN} \
-               ICONDIR=${D}/usr/share/${PN}/icon \
+       make lispdir=${D}/${SITELISP}/${ECVS_MODULE} \
+               ICONDIR=${D}/usr/share/${ECVS_MODULE}/icon \
                install-icons || die

        elisp-site-file-install ${FILESDIR}/70emacs-w3m-gentoo.el

オリジナルからの変更点は、Wanderlustで確認した3点とおおよそ同じです。

  1. inheritにcvsを追加
  2. ECVS_SERVER、ECVS_MODULE、ECVS_BRANCHを追加
  3. SRC_URIは空にする
  4. src_compile()の先頭でautoconfを実行してconfigureスクリプトを作るようにする
  5. インストール先ディレクトリがemacs-w3mになるよう、make時のパス指定を${ECVS_MODULE}を使う形に変更(${PN}のままだとemacs-w3m-cvsになってしまう)

ebuildファイルができあがったら、

# ebuild emacs-w3m-cvs-1.5.ebuild digest

を実行してdigestファイルを作成しておきます。


参考

Gentoo JP FAQ – 配布元がCVSのebuildを作成したいのですが。

emacs-w3mのcvs版ebuild作成

 article  Comments Off on emacs-w3mのcvs版ebuild作成
Nov 232005
 

emacs-w3mのcvs版ebuildを作ってみました。
Gentoo Portageではcvs.eclassを使うことでtar ballなアーカイブソース以外からでもパッケージをビルド、インストールできるので便利です。
cvsからcheckoutして直接make installする場合に比較して、何が便利かといいますと、

  • emerge hogehogeの1ステップで済む
  • 更新時に削除(廃止)されたファイルも消してくれる
  • パッケージ管理下にできるので依存関係をごまかす必要がない

といった点でしょうか。

Oct 202004
 

なんとなくmpg123をいれて、Emacsでも操作できるようにmpg123.elもいれてみました。
Gentoo LinuxではどちらもPortageに入っていますが、mpg123はalpha用はマスクされているので、ACCEPT_KEYWORDS=~x86でemergeすることになります。あ、aumixも必要なのでそちらも。

# emerge mpg123
# emerge aumix
# ACCEPT_KEYWORDS=~x86 emerge mpg123-el

本当は3行目だけで一気にいれてもいいのですが、mpg123とaumixはalpha stableなバージョンにしたかったので、個別にemergeしています。
ちなみにGentoo Linux Documentation — ソフトウェアのブランチを併用するにあるように/etc/portage/package.keywordsを書いてもOKです。

あとは、.emacs.elに

(autoload 'mpg123 "mpg123" "A Front-end to mpg123" t)

とでも入れておけばM-x mpg123でmpg123を起動できます。

あ、Gentooではsite-gentoo.elをautoloadしておくだけでもOKです。

Oct 202004
 

Meadow, Plink, Cygwinの組み合わせで、PCL-CVSを使ったupdateができません。チェックアウトはCygwinで直接おこなったのですが、

Cannot access /cvs^M/CVSROOT
No such file or directory

のようになってしまいます。改行コードの問題なのはなんとなくわかるものの、解決策がわかりません。

ググったらヒットしたのはこれ。まだ試してないけどポインタだけ書いておきます。
http://lists.gnu.org/archive/html/info-cvs/2004-09/msg00125.html

 Posted by at 2:53 am  Tagged with:

Meadowで円マークを入力

 article  Comments Off on Meadowで円マークを入力
Oct 092004
 

MeadowでBDFフォントを使っている場合、例えばメールなどで円マークとバックスラッシュを区別して表示できるようになっている。

長年「表示はできるけど入力はみんなどうやってるんだろう?」と思っていたのだが、Mew-Win32のメールでは以前話題にあがっていたようだ。

[Mew-Win32 01530] Re: non ISO-2022-JP (Re: fiber, movemail on meadow1.04a1)

(define-key global-map "C-x9" 'jisx0201-input)
(defun jisx0201-input (&optional string)
  (interactive "sInput(ASCII only) ")
  (let ((count (length string))
	(pos 0))
    (while (> count 0)
      (cond
       ((functionp 'char-to-int)
	(insert (make-char 'latin-jisx0201 (char-to-int (aref string pos)))))
       ((functionp 'make-char)
	(insert (make-char 'latin-jisx0201 (aref string pos))))
       (t
	(insert (make-character lc-roman (aref string pos)))))
      (setq count (1- count))
      (setq pos (1+ pos)))))