2009年12月27日日曜日

Macのターミナル上でscreen

screen+zshな環境を作るためにurxvtをインストールしたりする人もいるようですが,
とりあえずはMac10.6付属のターミナルでscreenを動かしてみました.

以下の点が問題になったので,それの解決メモ.
・screenのタブ(?)とターミナルのタブが独立して動作しない
・ファンクションキーが効かない

2つ目の問題点は,自分がscreenのタブをファンクションキーで切り替える設定をしているのですが,
ファンクションキーがscreenに送られていないようで,タブが切り替わらなかったのです.

以下,解決法
1.ターミナルの環境設定を開く
2.設定 -> 起動 の「開くシェル」はデフォルトか,sh,bash,zshなどのシェルを指定する.screenは指定しない(1つ目の問題点)
3.設定 -> シェル の「コマンドを実行」に screen と書く(1つ目の問題)
4.設定 -> 詳細 の「ターミナルの宣言方法」に xterm を選ぶ(2つ目の問題)

これで,ターミナルの各タブで「開くシェル」で指定したシェルが走り,
そのシェルの上でscreenが走ります.
また,開くシェルのTERM環境変数にxtermが設定されることでファンクションキーが効くようになります.デフォルトのxterm-colorでは効かない様子.

2009年12月22日火曜日

NTEmacs23.1 + IME.patch をビルドする

いろんなところに同じような記事があるが、自分用覚え書き。

注意点はmake-3.80を使わなければならないところ。
Cygwinでは3.81しか準備されていないので、自分でmakeをインストールする必要がある。

1. 必要なパッケージの準備

以下のようなパッケージ群をsetup.exeを使ってインストールしておく
$ cygcheck -s | egrep '^(gcc|mingw|make)'
gcc 3.4.4-999
gcc-core 3.4.4-999
gcc-g++ 3.4.4-999
gcc-mingw 20040810-1
gcc-mingw-core 20050522-1
gcc-mingw-g++ 20050522-1
make 3.81-2
mingw-bzip2 1.0.5-3
mingw-libbz2-devel 1.0.5-3
mingw-libbz2_1 1.0.5-3
mingw-runtime 3.17-1
mingw-zlib 1.2.3-3
mingw-zlib-devel 1.2.3-3
mingw-zlib0 1.2.3-3

2. make-3.80のインストール

make-3.80を自前インストールする
$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2
$ tar jxvf make-3.80.tar.bz2
$ cd make-3.80
$ ./configure --prefix=/usr --program-suffix=-3.80
$ make
$ make install
$ ls /usr/bin/make-3.80
/usr/bin/make-3.80

3. 画像サポートのための準備

まず、画像サポートを有効にするための準備。

GnuWin32から以下のようなDLLとヘッダーファイルを用意する。
以下のようなzipファイルをダウンロードして展開し、中から.dllや.hファイルだけを抜き出す。
\ls -Rgo
.:
合計 3528
drwx------+ 3 0 Nov 29 22:10 DLL
-rwx------+ 1 1793 Nov 29 22:06 get.sh
-rw-r--r-- 1 189242 May 15 2005 jpeg-6b-4-bin.zip
-rw-r--r-- 1 38186 May 15 2005 jpeg-6b-4-lib.zip
-rw-r--r-- 1 401037 Jun 5 05:53 libpng-1.2.37-bin.zip
-rw-r--r-- 1 134939 Jun 5 05:55 libpng-1.2.37-lib.zip
-rw-r--r-- 1 285963 Mar 2 2007 libungif-4.1.4-1-bin.zip
-rw-r--r-- 1 12272 Mar 2 2007 libungif-4.1.4-1-lib.zip
-rw-r--r-- 1 928480 Mar 2 2007 libungif-4.1.4-1-src.zip
-rw-r--r-- 1 687244 Mar 31 2006 tiff-3.8.2-1-bin.zip
-rw-r--r-- 1 38372 Mar 31 2006 tiff-3.8.2-1-lib.zip
-rw-r--r-- 1 35884 Feb 15 2005 xpm-3.5.1-1-bin.zip
-rw-r--r-- 1 42484 Feb 15 2005 xpm-3.5.1-1-lib.zip
-rw-r--r-- 1 622191 Feb 15 2005 xpm-3.5.1-1-src.zip
-rw-r--r-- 1 99777 Jul 26 2005 zlib-1.2.3-bin.zip
-rw-r--r-- 1 71569 Jul 26 2005 zlib-1.2.3-lib.zip

./DLL:
合計 1613
drwx------+ 2 0 Nov 29 22:09 X11
-rwx------+ 1 16189 Oct 25 2005 gif_lib.h
-rwx------+ 1 1800 May 15 2005 jconfig.h
-rwx------+ 1 14488 May 15 2005 jerror.h
-rwx------+ 1 14567 May 15 2005 jmorecfg.h
-rwx------+ 1 127488 May 15 2005 jpeg62.dll
-rwx------+ 1 46359 May 15 2005 jpeglib.h
-rwx------+ 1 260096 Jun 5 05:48 libpng12.dll
-rwx------+ 1 260096 Jun 5 05:48 libpng3.dll
-rwx------+ 1 376832 Mar 28 2006 libtiff3.dll
-rwx------+ 1 31232 Mar 2 2007 libungif4.dll
-rwx------+ 1 153839 Jun 5 05:40 png.h
-rwx------+ 1 45382 Jun 5 05:40 pngconf.h
-rwx------+ 1 33725 Dec 27 2005 tiff.h
-rwx------+ 1 2968 Mar 24 2006 tiffconf.h
-rwx------+ 1 23216 Mar 28 2006 tiffio.h
-rwx------+ 1 410 Mar 23 2006 tiffvers.h
-rwx------+ 1 52224 Feb 14 2005 xpm4.dll
-rwx------+ 1 9544 Jul 21 2005 zconf.h
-rwx------+ 1 66188 Jul 18 2005 zlib.h
-rwx------+ 1 75264 Jul 21 2005 zlib1.dll

./DLL/X11:
合計 16
-rwx------+ 1 16286 Jan 25 2004 xpm.h

4. NTEmacs-23.1のインストール

まずemacs-23.1のソースコードを公式ページからダウンロードします。
$ mkdir ~/usr
$ cd ~/usr
$ wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.bz2

つぎに、TaijiからIMEパッチをダウンロードし展開、パッチを当て、コンパイルする。

$ wget
$ tar jxvf emacs-23.1.tar.bz2
$ cd emacs-23.1
$ patch -p1 < ../Emacs-23.1-IME.patch




Gygwinの/usr/bin/gccがシンボリックリンクなのでコマンドが見つからない問題を回避するため、
configure.batファイルでgccを参照しているところをgcc-3に書き換える。
以下のパッチを当ててもOK.(参考サイト
--- ../emacs-23.1.org/nt/configure.bat 2009-08-06 13:29:05.061912900 +0900
+++ nt/configure.bat 2009-08-06 13:30:23.116085200 +0900
@@ -141,7 +141,7 @@
goto again
rem ----------------------------------------------------------------------
:withgcc
-set COMPILER=gcc
+set COMPILER=gcc-3
shift
goto again
rem ----------------------------------------------------------------------
@@ -293,11 +293,11 @@
rem Auto-detect compiler if not specified, and validate GCC if chosen.
:checkcompiler
if (%COMPILER%)==(cl) goto compilercheckdone
-if (%COMPILER%)==(gcc) goto checkgcc
+if (%COMPILER%)==(gcc-3) goto checkgcc

echo Checking whether 'gcc' is available...
echo main(){} >junk.c
-gcc -c junk.c
+gcc-3 -c junk.c
if exist junk.o goto checkgcc

echo Checking whether 'cl' is available...
@@ -316,10 +316,10 @@
echo #include "cygwin/version.h" >junk.c
echo main(){} >>junk.c
echo gcc -c junk.c >>config.log
-gcc -c junk.c >>config.log 2>&1
+gcc-3 -c junk.c >>config.log 2>&1
if not exist junk.o goto chkapi
echo gcc -mno-cygwin -c junk.c >>config.log
-gcc -mno-cygwin -c junk.c >>config.log 2>&1
+gcc-3 -mno-cygwin -c junk.c >>config.log 2>&1
if exist junk.o set nocygwin=Y

:chkapi
@@ -348,10 +348,10 @@
set cf=%usercflags% -mno-cygwin
:chkapi2
echo on
-gcc %cf% -c junk.c
+gcc-3 %cf% -c junk.c
@echo off
@echo gcc %cf% -c junk.c >>config.log
-gcc %cf% -c junk.c >>config.log 2>&1
+gcc-3 %cf% -c junk.c >>config.log 2>&1
set cf=
if exist junk.o goto gccOk
echo The failed program was: >>config.log
@@ -367,14 +367,14 @@
goto end

:gccOk
-set COMPILER=gcc
+set COMPILER=gcc-3
echo Using 'gcc'
rm -f junk.c junk.o
Rem It is not clear what GCC version began supporting -mtune
Rem and pentium4 on x86, so check this explicitly.
echo main(){} >junk.c
echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
-gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
+gcc-3 -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccMtuneOk
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -389,7 +389,7 @@
rem Check for DWARF-2 debug info support, else default to stabs
echo main(){} >junk.c
echo gcc -c -gdwarf-2 -g3 junk.c >>config.log
-gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
+gcc-3 -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccdwarf
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -588,7 +588,7 @@
rem ----------------------------------------------------------------------
:genmakefiles
echo Generating makefiles
-if %COMPILER% == gcc set MAKECMD=gmake
+if %COMPILER% == gcc-3 set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake

rem Pass on chosen settings to makefiles.

上のパッチを当てる
$ patch -p1 < ../emacs-23.1-gcc3.patch




ビルド、インストールを行う。
cygwinのターミナルから
$ LANG=C ./configure.bat --enable-w32-ime --with-gcc --no-cygwin --no-debug --cflags -D_UNICODE --cflags -DRECONVERSION --cflags=-I/usr/local/include --cflags=-I~/src/dlls --prefix=c:/path/to/install
$ make bootstrap
$ make install
$ cp =/src/dlls/*.dll c:/path/to/install/bin

参考サイト
プログラム番長のヲボエガキ
u-ch

2009年12月15日火曜日

バッファの文字コードに従ってplatexに-kanjiオプションを渡す

ここで書かれていたコードが非常に便利だったので紹介です.

自分はWindows, Ubuntu, Solaris, Macな人間なので,.texファイルをマシン間でコピーした際に,platexが「文字コードが不明!」とかってエラーを吐きます.
platexに -kanji=eucjp のようにオプションを渡せばいいのですが,いちいち設定するのがめんどくさい.
Auctexを使ってるんだから,C-c C-cしただけでちゃんとコンパイルしてほしい.

そんなときに見つけたのが上記のコードです.
そのままだと,バッファの文字コード認識部分が正常に動かなかったのでちょっと修正してます.

(add-hook 'LaTeX-mode-hook
      '(lambda ()
         (let*
             ((kcode (symbol-name buffer-file-coding-system))
              (opt (cond
                    ((string-match "^utf-8" kcode) " -kanji=utf8")
                    ((string-match "^shift_jis" kcode) " -kanji=sjis")
                    ((string-match "shift-jis" kcode) " -kanji=sjis")
                    ((string-match "^euc-jp" kcode) " -kanji=euc")
                    ((string-match "^japanese-iso-8bit" kcode) " -kanji=euc")
                    ((string-match "^iso-2022-jp" kcode) " -kanji=jis")
                    (t ""))))
           (if (boundp 'japanese-TeX-command-list)
               (progn
                 (message "pLaTeX %s inserted" opt)
   (setcar (cdr (assoc "pLaTeX" japanese-TeX-command-list))
                         (concat "%(PDF)platex" opt " %`%S%(PDFout)%(mode)%' %t"))
                 (setcar (cdr (assoc "jBibTeX" japanese-TeX-command-list))
                         (concat "%(PDF)jbibtex" opt " %s"))
                 (message "pLaTeX UTF-8 flag enabled"))
             (message "pLaTeX UTF-8 flag disabled")))))

2009年12月13日日曜日

macでドットファイルを表示する

windowsでいう隠しファイルのこと。ファイルに隠し設定を施すのではなく、ドットから始まるファイル名にすれば勝手に隠しファイルになる。

で、Windowsなら「隠しファイルを表示する」オプションがあるけど、Macにはない。。。
調べたら以下の方法が見つかりました。

コンソールで以下のコマンドを入力
$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder
Finderが再起動されて、隠しファイルが表示される。

非表示に戻す場合は
$ defaults write com.apple.finder AppleShowAllFiles FALSE
$ killall Finder
とすればよい。

ほかにも、AutomasterとかTinkerTook(Mac版窓の手)を使う方法とかあるようです。

2009年12月7日月曜日

/dev/dsp1の再生

vlcで普通に/dev/dsp1を開こうとするとエラーになる。
とりあえずコンソールから開くには
$ vlc oss:///dev/dsp1
でできる。
これでvlcでラジオが聞けるぞ~

2009年12月2日水曜日

tscreen 0.9.4 on Cygwin

GNU Screenは古いの?
に書かれているように,screenの開発が滞っているため,カッとなってforkさせたtscreenというものがあるらしい.
とりあえず何も考えずにCygwinにインストールしてみるが,configureエラーとコンパイルエラーが発生するので,
screen-4.0.2へのCygwinパッチを参考にパッチを作成してみた.

参考ページ
cygwinのscreen

参考パッチ
Re: 1.5.17: problem building GNU screen
Re: screen

上のパッチはconfigureできないバグを,下のパッチはmakeできないバグを修正するモノらしい.

tscreen-0.9.4用に作ったパッチを置いておきます.
tscreen-0.9.4-cygwin.patch

使い方は以下の通り.
$ ls
tscreen-0.9.4.tgz tscreen-0.9.4-cygwin.patch
$ tar zxvf tscreen-0.9.4.tgz
$ cd tscreen-0.9.4
$ patch -p1 < ../tscreen-0.9.4-cygwin.patch
$ ./configure --enable-colors256
$ make
$ make install
$ tscreen


起動確認はできたが,詳細な動作確認はしていないので,正常に動くかどうかは不明...

フォロワー