2013年11月17日日曜日

Building Emacs 24.3 on Windows 7

Emacs を Windows 7 でビルドしたので作業メモ。GNU GCC の開発環境として MinGW はインストール済みであるとする。

ソースコードの準備

まずはソースコードを取得する。
ftp://ftp.ring.gr.jp/pub/GNU/emacs/
現時点でのリリースバージョンである24.3のソースコードemacs-24.3.tar.gzをダウンロードした。

IMEを使用するためにはパッチが必要になる。
http://sourceforge.jp/projects/gnupack/releases/
上記サイトからEmacsのバージョンに対応する最新の emacs-24.3-ime-2013-05-03.patch.tar.gz を取得した。パッチの適用方法は以下の通り。
$ tar zxvf emacs-24.3.tar.gz
$ tar zxvf emacs-24.3-ime-2013-05-03.patch.tar.gz
$ cd emacs-24.3
$ patch -b -p1 < ../emacs-24.3-ime-2013-05-03.patch

ライブラリの準備

GnuWinPackagesから以下のライブラリをダウンロードする。それぞれ、dll が入っている "Binaries" の他に "Developer files" である *-lib.zip も必要になる。libxpm に関してはソースコードも必要になる。
  • jpeg-6b-4-bin.zip
  • libpng-1.2.37-bin.zip
  • libungif-4.1.4-1-bin.zip
  • tiff-3.8.2-1-bin.zip
  • xpm-3.5.1-1-bin.zip (xpmはSourcesも必要)
  • zlib-1.2.3-bin.zip
続いて、libxml2 を準備する。Downloads のページにある win32 にはWindows用にコンパイルされたバイナリが置いてある。
最後に GnuTLS を準備する。Download にある GnuTLS for Windows から以下をダウンロードした。
  • gnutls-3.2.6-w32.zip
ダウンロードしたファイルを伸長して以下のようなディレクトリ構成にする。
  • C:\lib\gnutls
  • C:\lib\gnuwin32
  • C:\lib\libxml
さらに、GnuWin32 の libxpm はソースコードのアーカイブに入っている simx.h が必要になる。xpm-3.5.1-1-src.zip を伸長して、src\xpm\3.5.1\libXpm-3.5.1-src\lib\simx.h を C:\lib\gnuwin32\include\X11 にコピーする。

Configure & make

ビルドオプションを設定するために以下のようなスクリプトファイル ~/configure を用意した。
#!/bin/sh
cmd /c ".\configure.bat \
    --with-gcc \
    --no-debug \
    --enable-w32-ime \
    --cflags -O3 \
    --cflags -fno-tree-vectorize \
    --cflags -mthreads \
    --cflags -DRECONVERSION \
    --cflags -DDOCUMENTFEED \
    --cflags \"-DIMR_DOCUMENTFEED=7\" \
    --cflags -Ic:/lib/gnutls/include \
    --cflags -Ic:/lib/gnuwin32/include \
    --cflags -Ic:/lib/libxml/include"

dos2unix ../src/config.h
--no-debug はデバッグ情報をバイナリに含めないために指定した。-O3 で最適化する場合、gccが誤ったコードを生成するらしいので、-fno-tree-vectorize も一緒に指定している。--enable-w32-ime は IME を有効にするためであるが、IME 関連と思われる -DRECONVERSION, -DDOCUMENTFEED, -DIMR_DOCUMENTFEED=7 に関しては他のサイトを参考にした。また、適宜 -I オプションでライブラリのヘッダファイルに対するサーチパスを設定する。最後の dos2unix は configure.bat 後に生成される config.h の改行文字が LF と CR+LF が混在してしまいコンパイルに失敗するので、LF に統一するために必要になる。
$ cd nt
$ ~/configure
$ make bootstrap
$ make install INSTALL_DIR=~/bin/emacs-24.3-20131117

参考情報

2013年11月8日金曜日

Call C# program from PowerShell script

PowerShellからC#を呼び出すという話。 大きなファイルを扱ったり時間のかかる計算を行うにはPowerShellだと厳しいので、そのような処理をC#に投げる方法を記す。
# hello.ps1
Add-Type -Path "hello.cs"
$h = New-Object Hello
$h.hello()
Add-Typeには-TypeDefinitionでソースコードの文字列からC#の型を追加することもできるが、-Pathで別ファイルに書かれたソースコードを指定することもできる。
// hello.cs
using System;
public class Hello {
    string s;

    public Hello(string s) {
        this.s = s;
    }
    
    public void hello() {
        Console.WriteLine("hello, {0}!", s);
    }
}

2013年11月5日火曜日

ソースコードの表示

Bloggerにはソースコードのハイライト機能がないようなのでSyntaxHighlighterを用いる。











"SyntaxHighlighter.defaults.toolbar = false;"はAboutダイアログを非表示にするために設定している。

見出しテスト

見出し

小見出し

準見出し

標準
CSSに準見出し(H4)タグの設定を追加した。
テンプレート→カスタマイズ→上級者向け→CSSを追加
h4 {
    font-size: 100%;
    font-weight: bold;
    margin: 0.6em 10% 0 0.4em;
    border-left: 5px solid #bbbbbb;
    border-bottom: 1px solid #bbbbbb;
    padding: 0px 0.5em 0.1em 0.5em;
}