ラベル Emacs の投稿を表示しています。 すべての投稿を表示
ラベル Emacs の投稿を表示しています。 すべての投稿を表示

2011-03-13

Emacs 23.3 released

Emacs 23.3 がリリースされていました。Windows 用のバイナリーも公開されています。手元では 3/1 の RC1 のあとビルドしていませんが、ざっと diff を眺めた限りでは大丈夫そう。たぶん。

23.2 からの主な変更点をまとめてくださったかたがいるのでリンクだけ。

ぼくの Emacs watch はこれにてとうぶんお休みです。たぶん。

関連

2011-03-01

Emacs 23.3 release candidate 1

Emacs 23.3 rc1

Emacs 23.3 のリリース候補版 23.3 rc1 が出ています。

問題が無ければ、数日以内にこの tarball が正式なリリース版となるようです。23.3 は emacs-23 ブランチで EMACS_23_3 タグが付けられる予定です。

EMACS_PRETEST_23_2_94 からの修正は、ドキュメント類(info, man, doc string, comment)がほとんどですが、フォントの取り扱いや表示に関する修正も少し含まれています。

手元でのビルドも問題無し。Windows 用のバイナリーはまだ用意されていませんが、上記の通り 23.2.94 で問題が無ければ 23.3 rc1 も大丈夫と思われます。

追記@Wed Mar 02 15:19:20 2011

Windows 用のバイナリーが公開されました。

関連

2011-02-16

Emacs 23.2.94 pretest

Emacs 23.2.94

Emacs 23.3 リリースへ向けた 5回目の pretest、Emacs 23.2.94 が出ました。

emacs-devel には流れていないと思いますが、一応、Windows 用のバイナリーも公開されています。

barebin のみで info や el, elc ファイルは含まれていません。23.2.93 以降、info の加筆やセキュリティーにも関連する lisp ファイルの修正もあるのですが…。ちょっとどういうことか分かりませんけど、そのうち公開されるのかも知れません。
追記@Thu Feb 17 10:22:44 2011
まるごと入ったファイルが公開されました。

手元の Windows ビルドも問題無し。次かその次くらいでリリースですかね。

関連

2011-02-02

Emacs 23.2.93 pretest

Emacs 23.2.93

Emacs 23.3 リリースへ向けた 4回目の pretest、Emacs 23.2.93 が出ました。

数日前まで落ち着かない emacs-23 ブランチでしたが、pretest という区切りでみれば着実に不具合が修正されているようです。trunk が Gnulib 導入を進めていることもあってブランチを早く落ち着かせたい様子。この pretest で目立った問題が発見されなければ、ブランチは 23.2 に対するリグレッションとドキュメントの修正のみを受け付ける形に凍結されます。

Windows 用のバイナリーも公開されています。手元の Windows ビルドも問題無し。

関連

2011-01-21

fontset-standard を使ったフォント設定

Emacs 23 になってから、これまで Windows の Emacs では create-fontset-from-ascii-font で作ったフォントセットを使ってきた。default-fontset をいじる設定も試したことがあったが納得いかなかった。上記の EmacsWiki を見て standard-fontset をいじって使ってみたところ、これは良さそうだ。

…と言っても毎度代わり映えしない設定なわけですが。

基本的なアルファベットのところは Consolas を使い、日本語は(表示できればいいや、で) MS Gothic、残りはフォントリンク、default-fontset のフォールバック、Arial Unicode MS によしなにしてもらう設定です。

Emacs 23.2.92 HELLO
Emacs 23.2.92 での view-hello-file

この設定ではギリシャ文字やキリル文字の見た目の文字幅(プロポーショナルで幅 1 っぽい)と、Emacs が扱う char-width の文字幅 2 が異なる状態になるので、これが問題になるようなら、本当に文字幅を 1 にするなり、latin-jisx0201, cyrillic-iso8859-5, greek-iso8859-7 を MS Gothic で表示してちゃんと文字幅 2 で見えるようにする必要があると思います。

半角カナは Arial Unicode MS での表示。MS Gothic より少しは綺麗。

picopico
まぁ少々ぴこぴこするけど。まず使わないし

Emacs 23.2.92   emacs-w3m Wikipedia
十分十分。どうせ読めないし

以前の設定

いずれも古いので参考にしないほうが良いと思います…。

2011-01-17

Emacs 23.2.92 pretest

Emacs 23.2.92

Emacs 23.3 リリースへ向けた23.2.92 pretest が週末に出ました。

Windows 用のバイナリーも出ています。

ただし、現時点でいくつかの問題が出ているようです。

Windows の PNG サポートありの場合はビルドに失敗するので、tarball からビルドする場合には以下の修正が必要になります。

=== modified file 'src/ChangeLog'
--- src/ChangeLog       2011-01-15 02:55:58 +0000
+++ src/ChangeLog       2011-01-17 04:35:32 +0000
@@ -1,3 +1,11 @@
+2011-01-16  Stefan Monnier  <monnier@snip>
+
+       * image.c (syms_of_image): Don't access XSYMBOL's internals directly.
+
+2011-01-16  Eli Zaretskii  <eliz@snip>
+
+       * image.c (syms_of_image): Don't use SET_SYMBOL_VALUE.  (Bug#7848)
+
 2011-01-15  Martin Rudalics  <rudalics@snip>

        * window.c (inhibit_point_swap): New variable.

=== modified file 'src/image.c'
--- src/image.c 2011-01-03 19:32:41 +0000
+++ src/image.c 2011-01-17 04:35:32 +0000
@@ -8463,11 +8463,13 @@
 #ifdef HAVE_NTGUI
   Qlibpng_version = intern_c_string ("libpng-version");
   staticpro (&Qlibpng_version);
+  Fset (Qlibpng_version,
 #if HAVE_PNG
-  SET_SYMBOL_VAL (XSYMBOL (Qlibpng_version), make_number (PNG_LIBPNG_VER));
+       make_number (PNG_LIBPNG_VER)
 #else
-  SET_SYMBOL_VAL (XSYMBOL (Qlibpng_version), make_number (-1));
+       make_number (-1)
 #endif
+       );
 #endif

 #if defined (HAVE_XPM) || defined (HAVE_NS)

これは emacs-23 ブランチ先端では修正されています。

anything に関連して?上記のような不具合があるようです。が、ぼくはいま時間が取れなくて 23.2.91 のまま使っているので状況は良く分かりません。(anything も使っていないし…)

関連

2011-01-05

SKK-JISYO.L.yaskkserv を最新にする

ddskk / skkime から使っている Debian GNU/Linux squeeze の yaskkserv の辞書を最新の辞書ファイルで更新するメモ。

#!/bin/sh
# skk の辞書を更新して
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.L.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.jinmei.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.geo.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.propernoun.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.station.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.law.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.requested.gz
wget -N http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.edict.tar.gz
wget -N http://openlab.ring.gr.jp/skk/dic/zipcode.tar.gz

# 展開して
gunzip < SKK-JISYO.L.gz > SKK-JISYO.L
gunzip < SKK-JISYO.jinmei.gz > SKK-JISYO.jinmei
gunzip < SKK-JISYO.geo.gz > SKK-JISYO.geo
gunzip < SKK-JISYO.propernoun.gz > SKK-JISYO.propernoun
gunzip < SKK-JISYO.station.gz > SKK-JISYO.station
gunzip < SKK-JISYO.law.gz > SKK-JISYO.law
gunzip < SKK-JISYO.requested.gz > SKK-JISYO.requested
tar xafO zipcode.tar.gz ./zipcode/SKK-JISYO.zipcode > SKK-JISYO.zipcode
tar xaf SKK-JISYO.edict.tar.gz SKK-JISYO.edict

# yaskkserv 用の辞書を生成
yaskkserv_make_dictionary SKK-JISYO.L SKK-JISYO.L.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.jinmei SKK-JISYO.jinmei.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.geo SKK-JISYO.geo.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.propernoun SKK-JISYO.propernoun.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.station SKK-JISYO.station.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.law SKK-JISYO.law.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.requested SKK-JISYO.requested.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.zipcode SKK-JISYO.zipcode.yaskkserv
yaskkserv_make_dictionary SKK-JISYO.edict SKK-JISYO.edict.yaskkserv

 /usr/share/yaskkserv のファイルを上書きしちゃう(手動)
echo "sudo cp -f *.yaskkserv /usr/share/yaskkserv"

SKK-JISYO.edict は abbrev を使って英和変換できる辞書で、skkdic, skkdic-extra には含まれていないけど便利です。

2010-12-13

こっちで単語登録したら、あっちでも使いたい

これは SKK Advent Calendar 2010 の六日目 2010/12/13 の記事です。

五日目は tomoya さんによる、

です。 (setq skk-kakutei-when-unique-candidate t) は便利そうですね。実は単語登録したいとき困るのじゃないかと思っていたら、続けて skk-undo-kakutei すれば辞書登録モードになるという新発見もありました。

さて、SKK の特徴的な機能の一つには再帰的な辞書登録モードがあり、たとえ世界中のどの辞書にも載っていない単語だとしても、超簡単に単語を登録してあっというまに個人辞書を充実させていくことができます。

これは再帰していない

ぼくは普段 Windows のデスクトップで生活していて、Emacs では Daredevil SKK (ddskk) を使い、他のアプリケーションでは skkime を使って日本語を入力しています。ところが ddskk と skkime はそれぞれ別の個人辞書を使うので、どちらかで単語を登録してももう一方ではすぐにその単語が出てきません。これはちょっと悲しい。そこで今日は個人辞書育成を少しだけ楽しくする TIPS を紹介したいと思います。

skkime から ddskk の個人辞書を参照する

まずは skkime から ddskk の個人辞書を参照できるように設定します。

SKKIME1.5(build:20100719) Properties

skkime のプロパティを表示して、辞書設定のタブから、ファイル辞書として ddskk で使っている個人辞書のファイルを指定します。辞書ファイルのパスはお使いの環境に合わせてください。

ddskk の個人辞書はソートされていませんので、「この辞書はソートされている」のチェックは入れないようにしてください。

これで skkime の個人辞書にない単語を変換したときに、ddskk の個人辞書を参照して変換できるようになりました。

しかし、これだけでは、ddskk で単語登録した直後にはその単語を skkime で使うことができません。単語登録をしても、ディスク上の個人辞書ファイルがすぐに更新されるわけではないためです。

ですから、ddskk の設定にも少し手を入れます。以下のように .skk ファイルへ追記します。

(defvar my-skk-jisyo-updated
  nil
  "個人辞書の更新直後に保存するかどうかを示すフラグ")

(defadvice skk-henkan-in-minibuff (after my-skk-raise-jisyo-update-flag last
                                         activate compile)
  "単語登録された場合 my-skk-jisyo-updated をセットする"
  (if ad-return-value
      (setq my-skk-jisyo-updated t)))

(defadvice skk-update-jisyo (after my-skk-sync-private-jisyo last
                                   (word &optional purge)
                                   activate compile)
  "新たに単語が登録されたか削除された時、個人辞書を保存する"
  (if (or my-skk-jisyo-updated purge)
      (progn
        (skk-save-jisyo 'quiet)
        (setq my-skk-jisyo-updated nil))))

これで便利になりました!
ddskk で単語を登録して、すぐに skkime からもその単語を変換できるようになっていることを確認してみてください。

さて、続いてこんどは逆に ddskk から skkime の個人辞書を参照できるようにしましょう。

追記@Fri Dec 17 03:00:47 2010

2010/12/17 以降の CVS 版 ddskk をお使いの場合は、上記の代わりに以下のように書くだけで良くなりました。※コメント参照

(setq skk-save-jisyo-instantly t)

ddskk 開発者の北本さんが、同等の機能を ddskk 本体に取り込んでくださいました。
ありがとうございます!

ddskk から skkime の個人辞書を参照する

実はこれから紹介する方法はあまりスマートではありません。
と言うのも、前項のように辞書を更新する適切なトリガーが無い(あるいは、ぼくが知らない)ので、手動で更新するような形になってしまうのです。

まず、いくつかのツールが必要になるので、以下からダウンロードするなどして用意してください。

それぞれの実行可能ファイルを PATH の通ったディレクトリに置いて、以下のように .skk ファイルへ追記します。

(setq skk-extra-jisyo-file-list
      (list '("c:/Users/yu-ji/home/.skkime-jisyo_euc_sort" . euc-jp)))

(defun my-skk-update-skkime-jisyo ()
  "skkime の個人辞書を保存し、文字エンコーディングを変換し、ソートする
既に読み込まれていれば辞書バッファーを削除する"
  (interactive)
  (let* ((extra-jisyo-dir "c:/Users/yu-ji/home/")
         (extra-jisyo-name ".skkime-jisyo_euc_sort")
         (skkime-jisyo-dir "c:/Users/yu-ji/home/")
         (skkime-jisyo-name ".skkime-jisyo")
         (sync-command "syncskkiserv")
         (nkf-command "nkf -W16L -e -Lu -d")
         (buf (get-buffer (concat " *" extra-jisyo-name "*")))
         (command-line (concat sync-command
                               " && " nkf-command
                               " < " skkime-jisyo-dir skkime-jisyo-name
                               " | " "skkdic-sort"
                               " > " extra-jisyo-dir extra-jisyo-name)))
    (shell-command command-line)
    (if (buffer-live-p buf)
        (kill-buffer buf))))

辞書ファイルのパスはお使いの環境に合わせてください。既定では、

  • C:/Documents and Settings/ユーザー名/Application Data/skk/skki1_5
    あるいは、
  • C:/Users/ユーザー名/AppData/Roaming/skk/skki1_5

などになっていると思います。

このとき nkf に渡すオプションでは、skkime 用の辞書の文字エンコーディングが UTF-16-LE、ddskk 用の辞書は EUC-JP を想定しています。実際のところ様々なエンコーディングを使えるのですが、skkdic-sort のフィルターを通す前に EUC-JP へ変換する必要があります。

これで M-x my-skk-update-skkime-jisyo とすると、skkime 用の個人辞書を変換して ddskk で使えるようにしたファイルが用意され、このファイルを ddskk から参照して変換できるようになります。

理想的には、skkime で単語を登録したタイミングで個人辞書を保存したり、ddskk 側で(個人辞書以外にも)ソートされていない辞書ファイルを扱えれば良いのかなぁと考えています。

(add-hook 'skk-mode-hook
          (lambda () (my-skk-update-skkime-jisyo)))

いまのところはこのように C-x C-j したタイミングで更新するようにして使っています。

ということで

後半はかなり弱気になってしまいましたが、どうでしょうか。Advent Calendar 初参加の @yunh がお送りいたしました。

もしほかの上手い方法をご存知のかたがいらしたらぜひ教えてください。
そして可能ならブログしてその記事を SKK Advent Calendar 2010 で!

七日目となる明日は tyru さん Humanity が書いてくださいます。
よろしくお願いします!

追記@Wed Jan 05 00:35:29 2011

2010-12-12

Emacs 23.2.91 pretest

Emacs 23.2.91

土曜日の早朝に、Emacs 23.3 へ向けた 2回目の pretest が出ました。
ドキュメント類の拡充・修正をはじめ、多くの調整・不具合修正が含まれています。

Windows 用のバイナリーもすでに公開されています。手元のビルドも問題無し。

Emacs 23.2.91 HELLO

HELLO ファイルに ancient Greek が追加されてました。

関連

2010-11-10

Emacs 23.2.90 pretest

Emacs 23.2.90

Emacs 23.3 リリースへ向けた pretest が始まりました。

ブランチは emacs-23 で、Emacs 23.2 から続く系列のバグフィックスと小さな改良のバックポートがメインとなり、trunk で実施されているような大きな変更は含まれません。 ざっとですが、各種言語モード、vc モード、国際化文字エンコーディング、tramp などに関連する修正があります。(CEDET 関連もあるようですが良く分かりません…)

NEWS ファイル(etc/NEWS または F1 n または view-emacs-news)をはじめドキュメント類はこれから整備されていくようです。

Windows の Emacs 23.2.90 を使ってみていますが、ぼくの使い方ではいまのところ問題無いようです。

準公式?有志による Windows 用のバイナリはまだ公開されていませんが、いずれ近いうちに公開されると思われます。

なお、trunk の Windows 用バイナリは、不定期に作成して公開してくださっている方がいます。

追記@Fri Nov 12 09:14:06 2010

Windows 用のバイナリが公開されました

2010-07-17

windres: can't open icon file `icons\emacs.ico'

MinGW / MSYS の環境を作り直して、久しぶりに Emacs の emacs-23 ブランチをビルドしてみたら、make all や make bootstrap で emacs.exe を作るときに windres がコケるようになってた。

$ make bootstrap (的なコマンドライン)
(略)
windres -O coff --include-dir ../nt -o oo-spd/i386/emacs.res ../nt/emacs.rc
rm oo-spd/i386/temacs0.a
rm: cannot lstat `oo-spd/i386/temacs0.a': No such file or directory
make[2]: [oo-spd/i386/temacs0.a] Error 1 (ignored)
ar -rsc oo-spd/i386/temacs0.a oo-spd/i386/emacs.o
windres: can't open icon file `icons\emacs.ico': No such file or directory
make[2]: *** [oo-spd/i386/emacs.res] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/c/Users/yu-ji/home/src/wc/emacs/emacs-23/src'
make[1]: *** [bootstrap-temacs] Error 2
make[1]: Leaving directory `/c/Users/yu-ji/home/src/wc/emacs/emacs-23/src'
make: *** [bootstrap-gmake] Error 2

(並列に走ってる部分なので余計なメッセージも混ざってますが…)

使ったのは binutils-2.20.51-1-mingw32-bin.tar.lzma で、以前の環境で正常だったはずの binutils-2.20-1-mingw32-bin.tar.gz の windres に戻しても同様にコケる。

=== modified file 'nt/emacs.rc'
--- nt/emacs.rc 2010-05-08 04:46:44 +0000
+++ nt/emacs.rc 2010-07-17 07:33:02 +0000
@@ -1,5 +1,5 @@
-Emacs ICON   icons\emacs.ico
-32649 CURSOR icons\hand.cur
+Emacs ICON   icons/emacs.ico
+32649 CURSOR icons/hand.cur
 1 24 "emacs.manifest"

 #ifndef VS_VERSION_INFO

emacsclient.rc のほうは直さなくてもいいみたい。なんでしょうね…。MinGW / MSYS の環境作りでなにか忘れてるのかなぁ。

2010-05-14

zlib

こないだ zlib はオフィシャルから配布されてた DLL を使いましたが、新バージョン公開後すぐにバイナリーが上がるわけではないみたい。なので自分で make してみた。

win32/DLL_FAQ.txt によればオフィシャルの DLL を使うよう推奨しているのにね…。

## Cygwin で
$ cd ~/src
$ wget http://zlib.net/zlib-1.2.5.tar.bz2
$ tar xjf zlib-1.2.5.tar.bz2

## MinGW で
$ cd zlib-1.2.5
$ cp contrib/asm686/match.S ./match.S
$ make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o adler32.o adler32.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o compress.o compress.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o crc32.o crc32.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o deflate.o deflate.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzclose.o gzclose.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzlib.o gzlib.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzread.o gzread.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzwrite.o gzwrite.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o infback.o infback.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inffast.o inffast.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inflate.o inflate.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inftrees.o inftrees.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o trees.o trees.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o uncompr.o uncompr.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o zutil.o zutil.c
gcc -DASMV -Wall -c -o match.o match.S
ar rcs libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o match.o
windres --define GCC_WINDRES -o zlibrc.o win32/zlib1.rc
gcc -shared -Wl,--out-implib,libzdll.a -DASMV \
        -o zlib1.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o match.o zlibrc.o
Creating library file: libzdll.a
strip zlib1.dll
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o example.o example.c
gcc -DASMV -o example.exe example.o libz.a
strip example.exe
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o minigzip.o minigzip.c
gcc -DASMV -o minigzip.exe minigzip.o libz.a
strip minigzip.exe
gcc -DASMV -o example_d.exe example.o libzdll.a
strip example_d.exe
gcc -DASMV -o minigzip_d.exe minigzip.o libzdll.a
strip minigzip_d.exe

$ make test testdll -fwin32/Makefile.gcc
./example
zlib version 1.2.5 = 0x1250, compile flags = 0x255
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
echo hello world | ./minigzip | ./minigzip -d
hello world
./example_d
zlib version 1.2.5 = 0x1250, compile flags = 0x255
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
echo hello world | ./minigzip_d | ./minigzip_d -d
hello world

## Cygwin で
$ tar cvzf zlib-1.2.5-win32-x86-unofficial-uch.tar.gz \
> ./zlib-1.2.5/*.{exe,dll}
./zlib-1.2.5/example.exe
./zlib-1.2.5/example_d.exe
./zlib-1.2.5/minigzip.exe
./zlib-1.2.5/minigzip_d.exe
./zlib-1.2.5/zlib1.dll

いちおう置いてみます。オフィシャルの DLL が出たのに気づいたら消します。ダウンロード前に http://www.zlib.net/ をチェックしてみてください。

  • http://w4.hoso.net/files zlib-1.2.5-win32-x86-unofficial-uch.tar.gz

追記@Wed Aug 18 17:03:52 2010

オフィシャルの DLL がでています。

2010-05-10

Emacs 23.2 released

NTEmacs 23.2

週末に Emacs 23.2 がリリースされました。

23.1.97 からの変更は、Windows の nmake で make が通るよう nt/makefile.w32-in が修正されたくらいです。

Windows 用のバイナリーも公開されています。

それに伴い emacs-23 ブランチのバージョンは 23.2.50 となり 23.3 に向けたバグフィックスに開放されました。

## emacs-23 ブランチで 23.2 リリースの EMACS_23_2 タグをチェックアウト
$ bzr revert -r tag:EMACS_23_2
## emacs-23 ブランチ HEAD へ戻る
$ bzr revert

なんか用語が怪しいですが…。

2010-05-05

Emacs 23.1.97 pretest

NTEmacs 23.1.97

Emacs 23.2 リリースへ向けた 23.1.97 pretest が出ました。
特別な問題がなければこれが最後の pretest となり 23.2 がリリースされるようです。

Windows での NTEmacs のビルドに問題無し。

追記@Wed May 05 21:43:13 2010

Windows 用のバイナリーが公開されました。

2010-04-20

Emacs 23.1.96 pretest

NTEmacs 23.1.96

Emacs 23.2 リリースへ向けた 7回目の pretest、Emacs 23.1.96 が出ました。

今回は Windows の NTEmacs のビルドに問題は無さそう。

時間がないのでじっくり見ていませんが、ざっとログを流したところ、ドキュメントの追加・修正がほとんどのようです。リリースに向けてきちんとドキュメントを整備していくのって素晴しい@尊敬

新たなリリースブロックがなく順調にいけば、次が最後の pretest で Emacs 23.2 のリリース候補となるそうです。

追記@Wed Apr 21 09:33:28 2010

23.1.96 の Windows 用バイナリーが公開されました。

2010-04-18

libXpm, libjpeg, libpng

Windows の Emacs (NTEmacs) のイメージサポートに必要な DLL を作る。

現実逃避メモ。

libXpm

#
# XPM
#

$ cd ~/src/
$ wget http://alpha.gnu.org/gnu/emacs/pretest/windows/libxpm-3.5.7-w32-src.zip
$ unzip libxpm-3.5.7-w32-src.zip
$ cd libXpm-3.5.7/src

# MinGW で
$ make
$ cp -pf libXpm.dll /c/emacs/23/bin

# 後始末
$ rm -f *.{dll,o}

または、

$ wget http://ftp.gnu.org/pub/gnu/emacs/windows/libxpm-3.5.8-w32-src.zip
$ mkdir libXpm-3.5.8
$ cd libXpm-3.5.8
$ unzip ../libxpm-3.5.8-w32-src.zip
$ cd src
$ rm -f *.{dll,o}

# MinGW で
$ make

# 後始末
$ rm -f *.{dll,o}

この libxpm-3.5.8-w32-src.zip はたまたま置いてあるだけかも。バイナリもはいってるし。

libjpeg

#
# JPEG
#
# Independent JPEG Group
# http://www.ijg.org/
#

$ wget http://www.ijg.org/files/jpegsrc.v8a.tar.gz
$ tar xzf jpegsrc.v8a.tar.gz
$ cd jpeg-8a/

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native"
$ make
$ cp -pf .libs/libjpeg-8.dll /c/emacs/23/bin/libjpeg.dll

# 後始末
$ make distclean

zlib

オフィシャルバイナリありがたや。

#
# zlib
#
# zlib Home Site
# http://www.zlib.net/
#

$ wget http://zlib.net/zlib124-dll.zip
$ unzip zlib124-dll.zip
$ cp -pf zlib-1.2.4/zlib1.dll /cygdrive/c/emacs/23/bin

追記@Fri May 14 02:13:19 2010
その後やっぱり自分で作ってみた。

libpng

#
#PNG
#
# libpng Home Page
# http://www.libpng.org/pub/png/libpng.html
#
$ wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.4.1.tar.gz
$ tar xzf libpng-1.4.1.tar.gz
$ cd libpng-1.4.1
$ mkdir include
$ cp png.h pngconf.h include/

# MinGW で
$ cp scripts/makefile.mingw Makefile
$ make CFLAGS="-Ic:/Users/yu-ji/home/src/zlib-1.2.4"
$ cp -pf libpng14.dll /c/emacs/23/bin/libpng.dll

# 後始末
$ make clean

giflib

息抜きに…じゃ済まなさそうなので、またいずれ。

libtiff

#
# TIFF
#
# LibTIFF - TIFF Library and Utilities
# http://www.remotesensing.org/libtiff/

$ wget http://download.osgeo.org/libtiff/tiff-3.9.2.tar.gz
$ tar xzf tiff-3.9.2.tar.gz
$ cd tiff-3.9.2

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native" \
 --with-zlib-include-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-zlib-lib-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-jpeg-include-dir=c:/Users/yu-ji/home/src/jpeg-8a \
 --with-jpeg-lib-dir=c:/Users/yu-ji/home/src/jpeg-8a
$ make
# 途中でこけるけど
$ cp -pf libtiff/.libs/libtiff-3.dll /c/emacs/23/bin/libtiff.dll

# やっぱダメ

DLL できたけど、なんか変。なのでまたこんど。

configure.bat

emacs/nt/configure.bat

configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23 \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/include \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/src \
 --cflags -Ic:/Users/yu-ji/home/src/jpeg-8a \
 --cflags -Ic:/Users/yu-ji/home/src/zlib-1.2.4 \
 --cflags -Ic:/Users/yu-ji/home/src/libpng-1.4.1/include \
 --without-gif --without-tiff

目的

後先ですが…、セキュリティ絡みの修正がでても更新されない gnuwin32 の DLL を卒業したいと思った。

さっと息抜きに済ませるはずが、giflib が手強くって、gnuwin32 からソース落として patch を眺めたところで諦めた。libtiff も時間のあるときに延期。

gnuwin32 が更新されたら何も心配しないで済むんですが…。

2010-04-03

Emacs 23.1.95 pretest

NTEmacs 23.1.95

Emacs 23.2 リリースに向けた 6回目の pretest、Emacs 23.1.95 が出ました。前回の 23.1.94 から emacs-23 ブランチです。

pretest 直前 revno 99713 の影響で、Windows では movemail が壊れているため make が通りません。

revno 99713 は movemail の privilege escalation / race condition (CVE-2010-0825) の修正なので、movemail を使っているかた、これまでの Emacs pretest を使っているかたはアップデートが必要です。

tarball からの 23.1.95 pretest を Windows で使うひとは、以下の patch を使ってみてください。emacs-23 ブランチ HEAD では修正されています。

=== modified file 'lib-src/ChangeLog'
--- lib-src/ChangeLog	2010-04-02 15:24:16 +0000
+++ lib-src/ChangeLog	2010-04-03 02:45:22 +0000
@@ -1,3 +1,9 @@
+2010-04-03  Juanma Barranquero  <lekktu@snip>
+
+	Add stubs for Windows, required after CVE-2010-0825 change.
+	* ntlib.c (getgid, getegid, setegid): New stubs.
+	* ntlib.h (getgid, getegid, setegid): Declare them.
+
 2010-04-02  Dan Rosenberg  <dan.j.rosenberg@snip>  (tiny change)
 
 	* movemail.c (main): Check return values of setuid.  Avoid

=== modified file 'lib-src/ntlib.c'
--- lib-src/ntlib.c	2010-01-13 08:35:10 +0000
+++ lib-src/ntlib.c	2010-04-03 02:45:22 +0000
@@ -125,12 +125,30 @@
   return 0;
 }
 
+unsigned
+getgid ()
+{
+  return 0;
+}
+
+unsigned
+getegid ()
+{
+  return 0;
+}
+
 int
 setuid (unsigned uid)
 {
   return 0;
 }
 
+int
+setegid (unsigned gid)
+{
+  return 0;
+}
+
 struct passwd *
 getpwuid (unsigned uid)
 {

=== modified file 'lib-src/ntlib.h'
--- lib-src/ntlib.h	2010-01-13 08:35:10 +0000
+++ lib-src/ntlib.h	2010-04-03 02:45:22 +0000
@@ -36,7 +36,10 @@
 char * getlogin ();
 char * cuserid (char * s);
 unsigned getuid ();
+unsigned getegid ();
+unsigned getgid ();
 int setuid (unsigned uid);
+int setegid (unsigned gid);
 char * getpass (const char * prompt);
 int fchown (int fd, unsigned uid, unsigned gid);
 

23.1.94 pretest では、3/31 に Windows 用のバイナリが公開されました。23.1.95 では上記修正済みのバイナリ公開が期待できるかも?

追記@Tue Apr 06 01:37:50 2010

23.1.95 の Windows 用バイナリが公開されました。

2010-03-31

NTEmacs で Super / Hyper モディファイアを使う

右に Windows キーのあるキーボードを使うようになったので、右の Win キーを Super モディファイアに、App キーを Hyper モディファイアに使えるよう NTEmacs を設定してみた。

;; 右 Win キーを Super モディファイアキーに
(setq w32-pass-rwindow-to-system nil)
(setq w32-rwindow-modifier 'super)

;; 左 Win キーを Super モディファイアキーに
;;(setq w32-pass-lwindow-to-system nil)
;;(setq w32-lwindow-modifier 'super)

;; Super + Shift + s で「先生!お願いしますっ!」
(define-key global-map [(s S s)] 'doctor)

;; App キーを Hyper モディファイアキーに
(setq w32-apps-modifier 'hyper)

;; Hyper + なんちゃらでフレーム操作
(define-key global-map [(H f)]
  '(lambda (arg) (interactive "p") (other-frame (- arg))))
(define-key global-map [(H b)]
  '(lambda (arg) (interactive "p") (other-frame arg)))
(define-key global-map [(H o)] 'other-frame)
(define-key global-map (kbd "H-2") 'make-frame-command)
(define-key global-map (kbd "H-0") 'delete-frame)

Win キーとの組み合わせは Windows シェルの explorer でホットキーに使われているキーがけっこうあって、いまいち使いづらい感じです。Windows のホットキーはアプリケーションにキーが渡る前に処理されるので、NTEmacs 側ではどうにもならないんですね。

他のモディファイアキーと組み合わせたり、prefix キーにすればあるいは…でも、そこまでして使いたいバインディングがあるわけじゃなく…。ちょっと活用が思いつかないなぁ。

App キーはふつうに便利に使えそう。

2010-03-15

Emacs 23.1.94 pretest

NTEmacs 23.1.94

Emacs 23.2 リリースに向けた 5回目の pretest、Emacs 23.1.94 が金曜日に出ました。

今回は開発者有志による Windows バイナリが公開されそうな雰囲気だったのですが、現時点では出ていません。

今回からは Emacs 23 用に切られた emacs-23 ブランチが対象となります。これに伴ない trunk は Emacs 24 に向けて解放されたみたい。

ぼくは ~/src/wc/emacs を shared repository にしていて(emacswiki のどこかに書いてあった形)、以下のような感じで emacs-23 ブランチへ移行しました。

MSYS で:
$ cd ~/src/wc/emacs/trunk/nt
$ ../../../emacs.make.sh realclean && ../../../emacs.make.sh distclean
(emacs.make.sh は以前の記事 u-ch: Emacs pretest 23.1.92 で書いたシェルスクリプト)
Cygwin で:
$ cd ~/src/wc/emacs
$ bzr branch http://bzr.savannah.gnu.org/r/emacs/emacs-23 emacs-23
$ cd emacs-23
$ bzr bind http://bzr.savannah.gnu.org/r/emacs/emacs-23

これで trunk とはしばらくお別れです。

Windows 7 では日本語環境にデフォルトで選択されるフォントが適切ではないようです。たぶん Vista もかな。XP 日本語版では問題無いっぽい。うちの Win7 ではひらがなやカタカナには BatangChe(韓国語フォント) が選択されてしまってます。

ここらへん日本語を使う NTEmacs 入門者の為の調整があると良さそうですが、どうなるでしょうね。

追記@Wed Mar 31 01:38:36 2010

Windows 用のバイナリが公開されました。今週末、次の pretest が公開される予定です…。

2010-03-04

twittering-mode の短縮 URL に j.mp / bit.ly を使う設定

tweet 入力中に F4 キーで使える短縮 URL の生成に、TinyURL.comto.ly じゃなくて j.mp / bit.ly を使う設定。

(add-to-list 'twittering-tinyurl-services-map
      '(jmp . "http://api.j.mp/shorten?version=2.0.1&login=YOUR_LOGIN&apiKey=YOUR_API_KEY&format=text&longUrl="))
(setq twittering-tinyurl-service 'jmp)

試してないけど bit.ly のときは "j.mp" を "bit.ly" にすればいいんだと思う。

これは tweet に URL を含めるときに、長い URL でも短縮してくれる機能。
例えば http://supercalifragilisticexpialidocious.example.net/ みたいな文字数のかさむ URL でも http://j.mp/bdx9xe で使えるようにしてくれる。
http://twoallbeefpattiesspecialsaucelettucecheesepicklesonionsonasesameseedbun.example.net/ なんていうふつうじゃない URL でも http://j.mp/9UfeQU にしてくれる。ステキ。

追記@Tue Feb 01 03:29:24 2011

2011/01/29 の修正で bit.ly, goo.gl, is.gd, j.mp などが使えるようになった。
j.mp を使う場合には、

(setq twittering-tinyurl-service 'j.mp)
(setq twittering-bitly-login "YOUR_LOGIN")
(setq twittering-bitly-api-key "YOUR_API_KEY")

と設定。試してみたところ、最近は上記のビッグマックのような無茶な URL は短縮してくれなくなったようだ。