ホーム >
Emacs
- emacs24.1のビルド
- コマンドラインでelispをバイトコンパイルする
- バックアップの保存先を変更する
- text-modeで自動改行をオフにする
- flymakeの設定
- ファイルを保存したときに任意のコマンドを実行する
emacs24.1のビルド
Max OS Xの場合
sudo port install ncurses
wget http://ftp.gnu.org/pub/gnu/emacs/emacs-24.1.tar.bz2
svn export http://svn.sourceforge.jp/svnroot/macemacsjp/inline_patch/trunk inline_patch
tar jxf emacs-24.1.tar.bz2
cd emacs-24.1
patch -p0 < ../inline_patch/emacs-inline.patch
./configure --with-ns --without-x
make bootstrap
make install
open nextstep/Emacs.app
nextstep/Emacs.appをApplicationsにコピーすればインストール完了。
Windows(Visual C++)の場合
Visual C++(コンパイラ)だけでなく、MSYSのコマンドが必要なので、事前にインストールしておく。 次に、Visual Studioのコマンドプロンプトを起動し、MSYSのコマンドがインストールされているディレクトリへのPATHを通す。
set PATH=%PATH%;c:\MinGW\msys\1.0\bin
その後、作業ディレクトリに移動し、以下のコマンドを実行。
wget http://ftp.gnu.org/pub/gnu/emacs/emacs-24.1.tar.bz2 tar jxf emacs-24.1.tar.bz2 cd emacs-24.1\nt configure.bat --with-msvc --without-xpm --without-png --without-jpeg --without-tiff --without-gif nmake nmake install INSTALL_DIR=C:\emacs-24.1
ただし、この方法だと日本語入力時に入力途中の文字がインラインで表示されない。
コマンドラインでelispをバイトコンパイルする
emacs -batch -f batch-byte-compile input_files
バックアップの保存先を変更する
編集中のファイルが存在するディレクトリに.backupという名前の ディレクトリを作成して、その中にバックアップファイルを作成する。
(defun make-backup-directory ()
"Make backup directory, when there is not ./.backup."
(if (file-directory-p (concat (file-name-directory (buffer-file-name) ) ".backup/" ) )
()
(make-directory (concat (file-name-directory (buffer-file-name)) ".backup/") )
)
)
(add-hook 'before-save-hook 'make-backup-directory)
(defun make-backup-file-name (filename)
(expand-file-name
(concat ".backup/" (file-name-nondirectory filename) "~")
(file-name-directory (buffer-file-name))))
text-modeで自動改行をオフにする
(add-hook 'text-mode-hook
'(lambda () (auto-fill-mode 0)))
flymakeの設定
;; 文法チェックの頻度の設定
(setq flymake-no-changes-timeout 1)
;; 改行時に文法チェックを行うかどうかの設定
(setq flymake-start-syntax-check-on-newline nil)
c, c++用の設定
gccの-fsyntax-onlyオプションを使って、文法チェックを行う。
(setq gcc-warning-options
'("-Wall" "-Wextra" "-Wformat=2" "-Wstrict-aliasing=2" "-Wcast-qual"
"-Wcast-align" "-Wwrite-strings" "-Wfloat-equal"
"-Wpointer-arith" "-Wswitch-enum"
))
(setq gxx-warning-options
`(,@gcc-warning-options "-Woverloaded-virtual" "-Weffc++")
)
(setq gcc-cpu-options '("-msse" "-msse2" "-mmmx"))
(defun flymake-c-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name)))
)
(list "gcc" `(,@gcc-warning-options ,@gcc-cpu-options "-fsyntax-only" "-std=c99" ,local-file))
))
(push '(".+\\.c$" flymake-c-init) flymake-allowed-file-name-masks)
(add-hook 'c-mode-hook '(lambda () (flymake-mode t)) )
(defun flymake-c++-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "g++" `(,@gxx-warning-options ,@gcc-cpu-options "-fsyntax-only" "-std=c++0x" ,local-file))
))
(push '(".+\\.h$" flymake-c++-init) flymake-allowed-file-name-masks)
(push '(".+\\.cpp$" flymake-c++-init) flymake-allowed-file-name-masks)
(add-hook 'c++-mode-hook '(lambda () (flymake-mode t)) )
ファイルを保存したときに任意のコマンドを実行する
(add-hook 'after-save-hook '関数名)
でセーブ時にフックして、関数を実行することができる。バッファ名の拡張子に応じてコマンドを実行するようにすれば、コンパイル等の作業を自動化する事が可能。
(defvar after-save-hook-command-alist
'(("c" . "make")
))
(defun after-save-hook-command ()
(let* ((filename (buffer-file-name))
(extension (file-name-extension filename))
(pair (assoc extension after-save-hook-command-alist))
)
(when pair
(shell-command (format (cdr pair) filename)))
))
(add-hook 'after-save-hook 'after-save-hook-command)