-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2010年03月26日

Fragments of Reality - ElScreen

Fragments of Reality - ElScreen

Emacsは環境としてさまざまな用途に使えるため、 ひとつのEmacsで複数の仕事を同時に行うことがよくあります。 予定表を確認しながらWanderlustMewで複数のメールを書いたり、 irchatで打ち合わせをしながらコードを書いたり、といった場合です。

このような使い方をしていると、しばしば 「『今の状態(*)』を保存したまま別のバッファに移りたいなぁ」 という状況に出会うことでしょう。 (*)は、ウィンドウの分割のされ方やそれぞれのウィンドウに割り当てられるバッファなどの設定のことで、正確には window-configuration といいます。

あまり知られていませんが、 Emacsには window-configuration-to-register / jump-to-register という関数が用意されていて、 window-configuration を保存したり復元することができます。 しかしこれらのインターフェイスは原始的なもので、 とても使いやすいものとは言えません。

ElScreenは window-configuration-to-register / jump-to-register と同様のことを、 GNU Screenのようなより洗練されたインターフェイスで提供することを目的としたものです。 例えば、ElScreenを使えばC-z C-aという非常に短いシーケンスで以下のふたつのスクリーン(window-configuration)を切り替えることができます。

  Fedora8の方ではだいぶん前にインストールしていたのですが、Ubuntu9.10の方ではインストールしていないことに気がつき、インストールしました。しばらくEmacs自体使い込んでいなかったのですが、タブ操作が手軽に使えてかなり便利です。Emacs23で使っています。

 パスの通ったところにファイルを起き、設定はこれだけで使えています。
;; elscreen
(setq elscreen-prefix-key "\C-o")
(load  "elscreen" "ElScreen" t)





Powered by ScribeFire.

posted by hirono at 00:04| Comment(0) | TrackBack(0) | Emacs

2010年03月25日

[Emacs-Lisp]リージョン内のダブルクォーテーションをすべてエスケープ

Emacs-Lisp関数
(defun h-Double-quotation-escape-region (start end)
  "リージョン内のダブルクォーテーションをすべてエスケープ"
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
      (while (search-forward "\"" nil t)
        (replace-match "\\\\\"")))))

適用前
<title>js test</title>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

適用後
<title>js test</title>
<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />
<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />




posted by hirono at 04:35| Comment(0) | TrackBack(0) | Emacs

インデントの操作

GNU Emacs Manual - Multi-line Indent
C-M-q
リスト内のすべての行の字下げをやり直します(indent-sexp).
C-u TAB
最初の行の字下げが正しくなるように,リスト全体を同時に横方向に動かします.
C-M-\
リージョン内のすべての行の字下げをやり直します(indent-region).


posted by hirono at 03:09| Comment(0) | TrackBack(0) | Emacs

動的略語展開用ファイルの読み込み

Meadow/Emacs memo: テキストの補完入力 — abbrev ,定型句
;;動的略語展開単語用ファイル 2010年3月25日
(setq filename-for-abbrev '("~/.abbrev_word.txt" "~/.abbrev_data.txt"))

;;(defun find-file-for-abbrev ()
(progn
  (let ((list filename-for-abbrev) filename buf cbuf)
    (setq cbuf (current-buffer))
    (while list
      (setq filename (car list))
      (setq list (cdr list))
      (if (get-buffer filename)
          ()
        (progn
          (setq buf (find-file-noselect filename))
          (set-buffer buf)
          (rename-buffer
           (concat " *" (file-name-nondirectory filename) "*") t))))
    (set-buffer cbuf)))


 実行は、スペースキーの右にある「変換」キーに割り当てています。
(global-set-key [(henkan)] 'dabbrev-expand)



posted by hirono at 02:06| Comment(0) | TrackBack(0) | Emacs

2010年03月24日

Emacsスニペットの続きとキャプチャ画像

emacsスニペット_20100324
emacsスニペット_20100324 posted by (C)hirono-hideki


http://hirono-hideki.sblo.jp/article/36634877.htmlの続きです。

 右側がLisp Interactionモードなので、関数の末尾の閉じ括弧の直後にポインタを置き、Ctrl+jで、Emacs-Lisp式を評価できます。これでdivsp4と入力し、これも直後のポインタ位置で、Alt+Spaceを打つことで、略語の式が展開されます。事前にabbrev(静的略語展開)の設定が必要です。

  右のウィンドウがjs2-modeですが、HTMLタグがエラー扱いされ、赤色でハイライトされています。JavaScriptの構文解析をリアルタイムで行ってくれるので、エラーが出ると該当箇所が同じく赤色になります。これは本当に大助かりです。

Powered by ScribeFire.



posted by hirono at 05:51| Comment(0) | TrackBack(0) | Emacs

Emacsでスニペット

アモール・ファティ: Emacsで定型文補完(スニペット)

 最近はviを使うことが多くEmacsをあまり使っていなかったのですが、JavaScriptのコードを書くことが多くなり、リアルタイム構文解析ができるjs2-modeも使えるEmacsをこれまで以上に使おうと考えています。またHTMLでも似たような定型文を書くことが多いので、効率をあげるため、スニペットも活用しようかと思いました。早速、作ってみました。特殊文字のエスケープにはあまり気を遣わなくてよいみたいです。ただprototype.jsでよく使う$$が使えませんでした。¥でエスケープしてもだめでした。一応、実行時に手動で入力するようにしておきました。
 $${}で囲まれた文字列は、Tabキーで移動し、別のものに置き換えて行くことができます。Tab移動を素通りさせれば、括弧内の文字列がそのまま確定していきます。よく見ると説明のコメントの役割も果たしてくれています。

HTMLのスニペット
(snippet-with-abbrev-table 'global-abbrev-table
    ("divsp4" . "<div id=\"$${div_id}\">
\t<span id=\"$${sp1}\" class=\"$${slist}\" style=\"border: 1px #000049 solid;\">$${タイトル1}</span>
\t<span id=\"$${sp2}\" class=\"$${slist}\" style=\"border: 1px #000049 solid;\">$${タイトル2}</span>
\t<span id=\"$${sp3}\" class=\"$${slist}\" style=\"border: 1px #000049 solid;\">$${タイトル3}</span>
\t<span id=\"$${sp4}\" class=\"$${slist}\" style=\"border: 1px #000049 solid;\">$${タイトル4}</span>
</div>\n$."))

返還後
<div id="navi_01">
    <span id="sp1" class="menu01" style="border: 1px #000049 solid;">Linux</span>
    <span id="sp2" class="menu01" style="border: 1px #000049 solid;">emacs</span>
    <span id="sp3" class="menu01" style="border: 1px #000049 solid;">タイトル3</span>
    <span id="sp4" class="menu01" style="border: 1px #000049 solid;">JavaScript</span>
</div>


JavaScript(prototype.js)のスニペット
(snippet-with-abbrev-table 'global-abbrev-table
    ("jsObserve" .                    
    "
$${$$半角に変更}('$${div#parent_node span.mlist}').each(function($${node}){
        Event.observe($${node}, '$${mouseover}', function(){
                Element.setStyle($${node},{\"$${backgroundColor}\" : \"$${pink}\"});
                $($${node}).innerHTML = '$${mouseover状態}';
                });
        Event.observe($${node}, '$${mouseout}', function(){
                Element.setStyle($${node},{\"$${backgroundColor}\" : \"$${#5f9ea0}\"});
                $($${node}).innerHTML = '$${OUT状態}';
                });
    })\n$."))

返還後
$$('div#parent_node span.mlist').each(function(el){
        Event.observe(el, 'mouseover', function(){
                Element.setStyle(el,{"backgroundColor" : "pink"});
                $(el).innerHTML = 'mouseover状態';
                });
        Event.observe(el, 'mouseout', function(){
                Element.setStyle(el,{"backgroundColor" : "#5f9ea0"});
                $(el).innerHTML = 'OUT状態';
                });
    })



Powered by ScribeFire.

posted by hirono at 05:37| Comment(0) | TrackBack(0) | Emacs

2010年03月22日

js2-modeの設定変更

Emacs で JavaScript を書く
js2-mode は Emacs で JavaScript を書くための major-mode です。 外部の JavaScript 処理系無しに (flymake のように) 文法上のエラーを表示するなど、 かなり意欲的な機能を備えています。

しかしその一方で、js2-mode のデフォルトの挙動はかなり独特です。 ここでは、それらの挙動を他の major-mode とそろえる方法を説明します。

 いろいろと設定変更の方法が書いてありました。

posted by hirono at 22:53| Comment(0) | TrackBack(0) | Emacs

js2-modeでタブ幅を変更

フッ君の日常 : Emacs での JavaScript 開発は js2-mode で決まり!
(add-hook 'js2-mode-hook
          '(lambda ()
             (setq js2-basic-offset 4)))



posted by hirono at 22:44| Comment(0) | TrackBack(0) | Emacs

JavaScript/EcmaScript interpreter for Emacs

ejacs - Project Hosting on Google Code
設定:
(setq load-path
(cons "/home/(適当なパス)/js-console" load-path))

(autoload 'js-console "js-console" nil t)


 M-x js-console
で起動。


posted by hirono at 19:53| Comment(0) | TrackBack(0) | Emacs

2010年02月09日

Title: PDF作成関数のエラー修正



Powered by ScribeFire.

posted by hirono at 06:23| Comment(0) | TrackBack(0) | Emacs

2009年11月24日

コマンドラインからのバイトコンパイルの方法

emacs - Triangle Log


emacs -batch -f batch-byte-compile *.el



Powered by ScribeFire.

posted by hirono at 09:48| Comment(0) | TrackBack(0) | Emacs

2009年11月18日

Emacsで定型文補完(スニペット)

emacs + snippet.el の定型文補完(スニペット)で楽々HTML編集:Goodpic
定型文補完(スニペット)

を参考にしたのですが、例示のように、
(snippet-with-abbrev-table 'local-abbrev-table ;; モード指定
("hthref" . "<a href=¥"${url}¥">${title}</a>") ;; 要素指定あり
)

と書くとエラーが出て実行出来ませんでした。.abbrev_defsファイルにlocal-abbrev-tableという定義が存在しませんでした。Emacsのバージョンの違いなのかもしれません。

 次のようにすると、うまく使えました。モードの指定はないのですべてのモードで有効なはずですが、ただ、$>によるインデントの部分は、モードによって違いが出るようでした。
;;2009-11-18 snippet.el
(require 'snippet)

;;------------------------------------------------
;; snippet.el で、addrev に定型文を追加する


(snippet-with-abbrev-table 'global-abbrev-table
     ("divx"  .  "<div class='$${xxx}'>\n$><h3><font color='$${FDD000}'>$${title}</font></h3>\n$${本文}\n</div>\n$. "))


スクリーンキャプチャ:
u9-emacs-snippet_20091118
u9-emacs-snippet_20091118 posted by (C)hirono-hideki


 Tabキーを押しながら入力欄を移動していきます。$${}の{}の中の文字が既定値になるのでTabキーを進めれば、そのまま置き換わり、別の文字を入力すると、その文字列が代入されます。薄い緑色の背景色が付いている部分が編集箇所で、最後まで進むと編集が終わり、フェンスの背景色も消えますが、この編集確定前に、別の場所をクリックしたりすると、フェンスがそのまま残り、削除も出来ず面倒なことになるので要注意です。
 Emacsではdefault-input-methodを使って日本語入力をしている際に、変換途中のまま、別の場所をクリックしてしまうと、似たような症状が起き、フェンスが残りますが、フェンスの中をもう一度クリックで選択すると、再度変換が出来て元に戻ります。
 今回はそういうわけにいかず、バッファを消去するしかありませんでした。直前にセーブするなり、慎重な操作をした方がよさそうです。

 なお、$.は変換や入力を伴わない、Tabキーでの移動位置になります。前にも使った覚えがあり、自分でインストールしたはずですが、locateで調べると、次のように
emacs-railsに含まれていました。yasnippet.elも使ったはずですが、ちょっと覚えていません。
u9@u9:~ % locate snippet.el
/home/u9/.h-lisp/emacs-rails/snippet.el
/home/u9/.h-lisp/yasnippet-0.5.10/yasnippet.el






Powered by ScribeFire.



posted by hirono at 01:33| Comment(0) | TrackBack(0) | Emacs

2009年10月18日

さくらのブログにmapaeで投稿

http://d.nym.jp/archives/2003/11/30061500.html
 上記URLは開発者の方のホームページみたいで、インストールや使い方など書いてあります。
 さくらのブログでは、mapae.phで次のような設定をしました。
$RPCSERVER = 'http://blog.sakura.ne.jp/rpc/';
# $RPCPROXY  = ''; # $RPCSERVER を利用するためのプロキシ
$BLOGID    = xxxxxxx;
#$BLOGID    = 1;
$USERNAME  = 'hirono-hideki-01.sakura.ne.jp';
$PASSWORD  = 'パスワード';

 $BLOGIDの取得方法とブログの投稿用ユーザーIDとパスワードの設定は、
http://faq.sakura.ad.jp/faq/1032/app/servlet/qadoc?000365

に書いてあります。
 Emacsからメールを送っても記事を送れますが、mapaeを使うと、投稿済みの記事の管理や編集が行え、カテゴリの登録も出来ます。トラックバックの送信も出来るみたいですが試していません。

 問題なのは、記事を送信してもブログの再構築が行われず、そのままでは結果が反映されないことです。もちろん、管理画面で投稿と同時に再構築が行われる設定にしてあります。

 さくらのブログの文字コードはShift-JISになっているようですが、なにもしなくても文字化けは起こりませんでした。投稿記事のバッファの文字コードはUTF-8になっているみたいです。

mapae_20091018
mapae_20091018 posted by (C)hirono-hideki
posted by hirono at 16:04| Comment(0) | TrackBack(0) | Emacs

[Emacs]Wanderlustでのアドレス管理

http://cns-guide.sfc.keio.ac.jp/2004/7/6/3.html

 メールを書く機会というのも多くなかったので、しばらく使っていなかったのですが、せっかくインストールしているということもあり、EmacsのWanderlustを使ってみました。Tabキーで送信先アドレスの補完が出来るので、とても楽です。

 この記事はWanderlustからのメール投稿になります。
posted by hirono at 14:22| Comment(0) | TrackBack(0) | Emacs

2009年10月16日

Emacsの最新版を新規にインストール

2009/10/20
 小倉弁護士のブログにトラックバックを送ったところ、どういう手違いがあったのか、こちらの記事がトラックバック送信先として登録されていました。
 正しくはこちらです。
http://hirono-hideki.sblo.jp/article/33050678.html

cvsでソースファイルをダウンロード
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r emacs-unicode-2 emacs

インストール
 cvsを実行したディレクトリにemacsというフォルダが出来ているので、そちらに移動してから作業をします。 取得したソースファイルを最新版にアップデート
cvs up -dP
./configureの実行
./configure --prefix=/usr/local/emacs

 エラーが出た場合、必要なライブラリがシステムにインストールされていないので、それらしいパッケージを探してインストール。
例:(Fedoraの場合)
yum install libXpm-devel.i386
yum install giflib-devel.i386
yum install libtiff-devel.i386
    --enable-font-backend --with-gtk --with-xft というオプションを付けている例が多いのですが、そのようなオプションは存在しないというエラーが出ていたので、インストール先のディレクトリのみをオプション指定しました。
   自分の場合、今回は全く別の場所にインストールしましたが、/usr/local/の下が一般的だと思います。ディレクトリはあらかじめ作成しておく必要があります。

コンパイルの実行
sudo make bootstrap
sudo make install

 sudoコマンドがインストールされていない場合は、システム管理権限のあるrootユーザで実行する必要があります。
 make bootstrapが一番時間が掛かるのですが、今回は30分ちょっとぐらいでした。
 今回、最新版新規インストールの必要に迫られたのはvisual-line-modeが有効にならなかったためです。
 org-modeで自動改行が行われるauto-fill-modeを使わず、行を折り返しで表示させるためでした。
 .emacsの設定は次のようにしてあります。
(add-hook 'org-mode-hook
    '(lambda ()
       ;(setq paragraph-start '"^\\([ ・○<\t\n\f]\\|(?[0-9a-zA-Z]+)\\)")
       ;(auto-fill-mode t)
       (visual-line-mode t)
       ))

具体的な違いをキャプチャした画像
f8-emacs-new-install_20091016
f8-emacs-new-install_20091016 posted by (C)hirono-hideki

Powered by ScribeFire.



posted by hirono at 12:45| Comment(0) | TrackBack(0) | Emacs