2013年6月16日日曜日

[Emacs]simple-hatena-mode

必要なもの


インストール
  1. site-lisp以下にsimple-hatena-modeというディレクトリを作る
  2. はてなダイアリーライターをhw.plで保存し、simple-hatena-modeディレクトリに置く
  3. simple-hatena-mode.elをsimple-hatena-modeディレクトリに置く


設定
.emacsに以下を追加
;;; ===== simple-hatena-mode =====
(setq exec-path (cons "c:/usr/perl/bin" exec-path))
(require 'simple-hatena-mode)
(setq simple-hatena-default-id "ユーザ名")
(setq simple-hatena-bin "c:/usr/emacs/site-lisp/simple-hatena-mode/hw.pl")


メモ
パスワード入力プロンプトが出てくるとのことだったが、どうしてもログインに失敗していた。~/.hatena/ユーザ名 /diary/config.txtにパスワードを記入すると投稿が可能となった。

[Emacs]ZenCoding を使う

インストール
en-coding - Project Hosting on Google Code の Emacs 対応をインストール
  1. EmacsWiki: Zen Coding から zencoding-mode.el をダウンロードする。
  2. emacs\site-lisp に zencoding-mode.el を置く。
  3. .emacs に以下を追加
    ;;; ===== zen-coding ===
    (require 'zencoding-mode)
    (add-hook 'nxml-mode-hook 'zencoding-mode)
nXML mode に入ると自動で zencoding-mode が起動するようにする。

動作確認
div#name.one
と入力して Ctrl + Enter を押すと下記のように変換される。
<div id="name" class="one">
</div>


使用例
  1. a
    ここで Ctrl + Enter を押すと
    <a></a>
    
  2. html>(head>title)+body
    
    ここで Ctrl + Enter を押すと
    <html>
     <head>
     <title>
     </title>
     </head>
     <body>
     </body>
    </html>
    
  3. table>(thead>tr>td+td)+(tbody>(tr>td+td)*3)
    
    ここで Ctrl + Enter を押すと
    <table>
     <thead>
     <tr>
     <td>
     </td>
     <td>
     </td>
     </tr>
     </thead>
     <tbody>
     <tr>
     <td>
     </td>
     <td>
     </td>
     </tr>
     <tr>
     <td>
     </td>
     <td>
     </td>
     </tr>
     <tr>
     <td>
     </td>
     <td>
     </td>
     </tr>
     </tbody>
    </table>
    

[Emacs]Astyle を使う

  1. Artistic Style - Index の Download から AStyle_1.24_windows.zip (2010/10/14 現在) をダウンロードする。
  2. PATH の通った場所に解凍したファイル内にある AStyle.exe を移動する。
  3. .emacs に以下を追記
    ;;; ===== astyle =====
    (defun astyle-this-buffer(pmin pmax opt)
            (interactive "r
    sInsert options (ex. --mode=c --indent=tab --indent-cases --brackets=linux): ")
            (message "pmin:%d pmax:%d str:%s" pmin pmax opt)
            (setq cmd (concat "astyle.exe " opt))
            (message "cmd:%s" cmd)
            (shell-command-on-region pmin pmax
            cmd
            (current-buffer) t
            (get-buffer-create "*Astyle Errors*") t
            )
    )
  4. バッファを選択して M-x astyle-this-buffer を実行すると astyle.exe に渡す option を聞かれるので入力する。

[Emacs]org-mode

インストール
  1. Org からダウンロード
  2. ダウンロードしたファイルを解凍し、c:/usr/emacs 以下に置く
  3. org-6.13a ディレクトリ内で make を実行する
  4. .emacs に以下を追加
    ; === org mode ===
    (setq load-path (cons "c:/usr/emacs/org-6.13a/lisp" load-path))
    (load "org.elc")
    (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))

[Emacs]nXML モード

Emacs 23.2 から標準搭載となった nXML モード

初期設定
.emacs に以下を追加する
;;; ===== nXML =====
(add-hook 'nxml-mode-hook
        (lambda ()
        (setq nxml-slash-auto-complete-flag t)
        (setq nxml-child-indent 2)
        (setq indent-tabs-mode nil)
        (setq tab-width 2)
        (define-key nxml-mode-map "\r" 'newline-and-indent)
        )
)

Table: nXML mode 設定の内容
nxml-slash-auto-complete-flag"</" を入力すると自動で終了 Tag を補完してくれる
nxml-child-indentインデント 2 スペース
indent-tabs-modet:インデントはタブで行う, nil:インデントはスペースで行う
tab-widthタブ幅 2
define-key nxml-mode-map "\r" 'newline-and-indentEnter キーを押すと改行 + インデントが行われるようにする


Schema を設定
emacs/etc/schema に schema ファイルがある
Table: Schema ファイル操作
C-c C-s C-w現在使用中の schema ファイルを表示する。schema が選択されていない場合は "Using vacuous schema" と表示される。
C-c C-s C-f手動で schema ファイルを指定する。指定すると current directroy に schemas.xml ファイルが作成され、次回からはここで選択した schema ファイルが使用される。


操作方法
Table: nXML mode 操作方法
C-RET"<" 入力後に Tag 補完

2013年6月9日日曜日

[Emacs]Emacs 23.1

Windows 上でのコンパイル
Emacs 23.1 が 2009/7/29 にリリースされたので Windows でのコンパイルをしてみた。
  1. Emacs のソースファイルを Index of /gnu/emacs からダウンロードする
  2. MinGW (Automated MinGW Installer) を MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net からダウンロードする
  3. MinGW のインストーラを実行しパッケージをフルインストールする
  4. MSYS Base System を MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net からダウンロードする
  5. MSYS のインストーラを実行する
  6. GnuWin32 Packages から必要となるライブラリをダウンロード・インストールする。それぞれ Setup パッケージをインストールすればライブラリ、ヘッダファイルがインストールできる。
    必要となるライブラリは以下のもの。
    • Xpm
    • LibPng
    • Zlib
    • LibUnGif
    • LibJpeg
    • LibTiff
    Xpm のインストール確認で simx.h が必要となる。これは Xpm のソースファイルに含まれているので、ソースファイルをダウンロードし、インストールした MinGW\src\xpm\3.5.1\libXpm-3.5.1-src\lib にある simx.h を MinGW\include にコピーする必要がある。
  7. Cygwin など他の実行ファイルが呼び出されないように MinGW, MSYS のみの PATH にしておく
    > set PATH=C:\usr\MinGW\bin;c:\usr\msys\bin
  8. ダウンロードした Emacs のソースファイルを展開する
  9. 展開した Emacs ディレクトリ下にある nt ディレクトリに移動し、configure.bat を実行する
    > cd nt
    > configure.bat
    Checking for 'cp'...
    Checking for 'rm'...
    Checking whether 'gcc' is available...
    Checking whether gcc requires '-mno-cygwin'...
     (中略)
    config.settings
    gmake.defs
    ..\leim\makefile.w32-in
     1 個のファイルをコピーしました。
     1 個のファイルをコピーしました。
    
    Emacs successfully configured.
    Run `make' to build, then run `make install' to install.
  10. mingw32-make.exe を実行する
    > mingw32-make.exe
    [Please ignore a syntax error on the next line - it is intentional]
    /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
    /bin/sh: -c: line 1: syntax error: unexpected end of file
    Using C:/usr/msys/bin/sh.exe as shell.
     (中略)
    mingw32-make.exe[1]: Entering directory `C:/home/emacs-23.1/leim'
    mingw32-make.exe[1]: Nothing to be done for `all'.
    mingw32-make.exe[1]: Leaving directory `C:/home/emacs-23.1/leim'
  11. mingw32-make.exe install を実行すると bin ディレクトリが生成され、そこに runemacs.exe が作成される
  12. runemacs.exe を実行してバージョンを確認する

備考
22.2.1 で使用していた .emacs にある以下のものが使用できなくなっていたが、まずは起動できた
(require 'fixed-width-fontset)
(require 'ntemacs-font)
fixed-width-fonset を 23.1.1 では使用しないように .emacs の fixed-width-fonset をロードする箇所を以下のように変更
; fixed-width-fontset
; Emacs 23.1.1 の場合は使用できない
(defun load-fixed-width-fontset ()
        (message "This emacs version can support fixed-width-fontset")
        (require 'fixed-width-fontset)
        (require 'ntemacs-font))

(message "emacs-version %s" emacs-version)
(message "emacs-version %d" (string-to-number emacs-version))
(if (< 22 (string-to-number emacs-version))
        (message "This emacs version CANNOT support fixed-width-fontset")
        (load-fixed-width-fontset))
sile-lisp ディレクトリに fixed-width-fontset のディレクトリがあるとロードしにいってしまうので、ディレクトリも削除しておく

Emacs 23.1 の IME patch を当てる
  1. NTEmacs JP Project プロジェクト日本語トップページ - SourceForge.JP から Emacs-23.1-IME.patch.gz をダウンロードする
  2. emacs-23.1 を解凍したディレクトリのルート (INSTALL, COPYING, README などがあるディレクトリ) に Emacs-23.1-IME.patch を置く
  3. patch を当てる
    > patch -p3 < Emacs-23.1-IME.patch
    patching file lib-src/makefile.w32-in
    patching file lisp/loadup.el
    patching file nt/configure.bat
    patching file src/keyboard.c
    patching file src/w32.c
    patching file src/w32fns.c
    patching file src/w32term.c
    patching file src/w32term.h
    patching file src/window.c
    patching file lisp/international/w32-ime.el
    patch コマンドのオプションにある -p は patch ファイルで指定されているディレクトリ階層のレベルを指定する。
    この patch ファイルには以下のように記載されており、Emacs-23.1 のディレクトリから見ると 3 階層目からの lib-src からが指定したいファイルとなる。そこで -p3 で 3 階層目から使用することを明示する。
    --- ~/src/emacs-23.1/lib-src/makefile.w32-in 2009-07-30 00:09:40.000000000 +0900
    +++ /tmp/emacs-23.1/lib-src/makefile.w32-in 2009-08-03 16:54:16.990792800 +0900
    
    patch コマンド中に nt/configure.bat で下記のエラーが出てくる。これは configure.bat の改行コードが CR+LF であるが、patch の方は LF となっているために一致箇所がないと判定されてしまう。その場合は元の configure.bat をエディタで開いて改行コードを LF にして保存すればエラーが解消される。
    patching file nt/configure.bat
    Hunk #1 FAILED at 1.
    1 out of 1 hunk FAILED -- saving rejects to file nt/configure.bat.rej
    
  4. nt ディレクトリで configure.bat を実行する
    > configure.bat --with-gcc --enable-w32-ime --no-cygwin --cflags -D_UNICODE --cflags -DRECONVERSION --prefix=c:/install
    RECONVERSION フラグを付けてコンパイルすると入力済み文字列に対して "変換" ボタンを押した時に再変換が可能となる
    "_UNICODE" フラグを付けてコンパイルすると Unicode 版を使用可能となる。
    "--prefix" でインストール先ディレクトリを指定する
  5. mingw32-make.exe を実行する
    mingw32-make.exe bootstrap をしたところで elc ファイルが一旦削除され、その後再度作成される。
    > mingw32-make.exe bootstrap
    > mingw32-make.exe info
    > mingw32-make.exe
    > mingw32-make.exe install
  6. .emacs の編集
    .emacs ロード時に以下のように表示される。これは php-mode のロードで問題が発生してるようだ。
    .emacs の該当箇所を requrire から autoload に変更すれば Warning はでなくなる
    ;;; ====== php =====
    ;(require 'php-mode)
    (autoload 'php-mode "php-mode" "Major mode for editing php code." t)

[Emacs]Emacs 各バージョン

Emacs 23.4
  • Windows7 で Microsoft IME を使うとインラインで日本語入力ができない
  • Google 日本語入力を使ってもインラインで日本語入力ができない


Emacs 2.33
  • Windows7 で Microsoft IME を使うとインラインで日本語入力ができない
  • Google 日本語入力を使えばインラインで日本語入力ができるようになった


Emacs 23.2.1
  • 日本語入力時のフォーカスが IME patch 不要で入力位置に出るようになった
  • CEDET のサポート
    参照: A Gentle introduction to Cedet
    まずは M-x semantic-mode で開始する
    • M-x semantic-ia-complete-symbol
      Completion バッファが表示される
    • M-x semantic-ia-complete-tip
      マウスカーソルがある場所に吹き出しで表示される
    • M-x samantic-complete-analyze-inline
      Completion バッファが表示される
      C-c , SPC でも実行可能
    • 入力していくと候補が絞られ、TAB で補完することができる
    • M-x semantic-analyze-proto-impl-toggle
      ヘッダファイルの関数定義で実行すると関数の実装箇所に飛ぶことができる。
      関数の実装内でこのコマンドを実行するとヘッダファイルの定義に飛ぶ。
    • M-x semantic-decoration-include-visit
      include 定義ので上このコマンドを実行するとヘッダファイルに飛ぶ。
    • M-x semantic-idle-completions-mode
      または -> を入力したところでしばらく操作をしていないと補完候補が出てくる
      TAB で次の候補へ切り替えることができる
    • M-x semantic-speedbar-analysis
      Speedbar が表示され、そこに補完候補が出てくる

      クラス変数入力前の状態
      クラス変数を入力すると属する method が表示される
    • M-x semantic-symref-symbol
      GTAG を実行した後で関数上でこのコマンドを実行すると関数が使用されている箇所を表示できる。
    • M-x semantic-ia-fast-jump
      関数が使用されている場所でこのコマンドを実行すると関数の実装箇所に飛ぶ。
    • M-x semantic-complete-jump-local
      関数またはローカル変数をしているすると、その定義の箇所に飛ぶ。