<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>taichino.com &#187; ctags</title>
	<atom:link href="http://taichino.com/tag/ctags/feed" rel="self" type="application/rss+xml" />
	<link>http://taichino.com</link>
	<description>永遠のネバーランド</description>
	<lastBuildDate>Sat, 04 Feb 2012 13:33:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Carbon Emacsで快適にActionScriptを書きたい件</title>
		<link>http://taichino.com/engineer-life/emacs/388</link>
		<comments>http://taichino.com/engineer-life/emacs/388#comments</comments>
		<pubDate>Sun, 24 May 2009 17:32:08 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[ctags]]></category>
		<category><![CDATA[rascut]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=388</guid>
		<description><![CDATA[さて表題の件。printfデバッグさえできればある程度は書けますが、書いてるコード規模が大きくなって、厳しくなってきたので、環境を少し整える事にしました。 まずは結論から。以下の通り結構快適になりました。 before java-modeでasファイルを編集 ログファイルにデバッグ出力して、tail -fで確認。 after actionscript-modeでasファイルを編集 printfデバッグでキツいところはブレークポイント ctagsでタグテーブル作成してタグジャンプ rascutで自動コンパイル&#038;ブラウザリロード log.as導入によりfirebug上でのログ確認 一つずつ見ていきます。 1. actionscript-modeでasファイルを編集 以前にactionscript-modeを入れようとして、挫折したので、java-modeで代用していました。これでも、あまり問題は無いのですが、for each構文等、部分的にインデントがずれるという事がありました。 そこで再度チャレンジしてみたところ、あっけなく動作しました。 ココからactionscript-mode.elをパスが通った場所に置いて、.emacsを編集するだけでOKです。 &#40;require 'actionscript-mode&#41; &#40;setq auto-mode-alist &#40;append '&#40;&#40;&#34;\\.as$&#34; . actionscript-mode&#41;&#41; auto-mode-alist&#41;&#41; 以前はcc-modeを古いバージョンを入れる必要があったと思うのですが、現在は必要ないようです。手元のバージョンは以下の通りです。 M-x c-version (cc-modeのバージョン) Using CC Mode version 5.31.6 M-x version (emacsのバージョン) GNU Emacs 22.3.1 (i386-apple-darwin9.6.0, Carbon Version 1.6.0) of 2009-01-03 on seijiz.local 2. printfデバッグでキツいところはブレークポイント やはりprintfデバッグには限界がありまして、特にライブラリ等、他の人が書いたコードをデバッグする際はデバッガを使いたいと強く感じます。幸いにflex sdkにはfdbというgdb類似のデバッガが存在しますので、これを使う事にしました。emacs上から実行すればコマンド履歴も使えます。 [...]]]></description>
			<content:encoded><![CDATA[<p>さて表題の件。<a href="http://taichino.com/?p=106">printfデバッグさえできれば</a>ある程度は書けますが、書いてるコード規模が大きくなって、厳しくなってきたので、環境を少し整える事にしました。</p>
<p><span id="more-388"></span></p>
<p>まずは結論から。以下の通り結構快適になりました。</p>
<p><strong>before</strong></p>
<ul>
<li>	java-modeでasファイルを編集</li>
<li>	ログファイルにデバッグ出力して、tail -fで確認。</li>
</ul>
<p><strong>after</strong></p>
<ol>
<li>	actionscript-modeでasファイルを編集</li>
<li>	printfデバッグでキツいところはブレークポイント</li>
<li>	ctagsでタグテーブル作成してタグジャンプ</li>
<li> rascutで自動コンパイル&#038;ブラウザリロード </li>
<li> log.as導入によりfirebug上でのログ確認 </li>
</ol>
<p><!--more--><br />
一つずつ見ていきます。</p>
<p><strong>1. actionscript-modeでasファイルを編集</strong><br />
以前にactionscript-modeを入れようとして、挫折したので、java-modeで代用していました。これでも、あまり問題は無いのですが、for each構文等、部分的にインデントがずれるという事がありました。</p>
<p>そこで再度チャレンジしてみたところ、あっけなく動作しました。<br />
<a href="http://www.emacswiki.org/emacs/actionscript-mode-haas-7.0.el">ココ</a>からactionscript-mode.elをパスが通った場所に置いて、.emacsを編集するだけでOKです。</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>require 'actionscript-mode<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> auto-mode-alist
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>.as$&quot;</span> <span style="color: #66cc66;">.</span> actionscript-mode<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              auto-mode-alist<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>以前はcc-modeを古いバージョンを入れる必要があったと思うのですが、現在は必要ないようです。手元のバージョンは以下の通りです。</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">M-x c-version (cc-modeのバージョン)
  Using CC Mode version 5.31.6
M-x version (emacsのバージョン)
  GNU Emacs 22.3.1 (i386-apple-darwin9.6.0, Carbon Version 1.6.0) of 2009-01-03 on seijiz.local</pre></div></div>

<p><strong>2. printfデバッグでキツいところはブレークポイント</strong><br />
やはりprintfデバッグには限界がありまして、特にライブラリ等、他の人が書いたコードをデバッグする際はデバッガを使いたいと強く感じます。幸いにflex sdkにはfdbというgdb類似のデバッガが存在しますので、これを使う事にしました。emacs上から実行すればコマンド履歴も使えます。<br />
M-x gdbで実行するデバッガを指定します。僕は/usr/local/flex/bin/fdbに置いています。</p>
<p><strong>3. ctagsでタグテーブル作成してタグジャンプ</strong><br />
ブレークポイントを張れるようになったのは良いのですが、ステップ実行をやっているとタグジャンプをしたくなります。ただgtags,etags,ctagsがいずれもActionScriptに対応しておらず、タグファイルが作れない！と一時は悶絶したのですが、幸いctagsをActionScriptに対応させる方法が<a href="http://www.turdhead.com/2007/10/09/almost-perfect-actionscript-code-browsing-with-jedits-sidekick-panel/">見つかりました</a>。</p>
<p>手順は以下の通り。</p>
<ul>
<li> ctags-5.7.tar.gzを<a href="http://prdownloads.sourceforge.net/ctags/ctags-5.7.tar.gz">ダウンロード</a>して解凍</li>
<li> actionscript.cを<a href="http://www.turdhead.com/downloads/actionscript.c">ダウンロード</a></li>
<li> source.makとparsers.hを編集</li>
<li> make install </li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>prdownloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>ctags<span style="color: #000000; font-weight: bold;">/</span>ctags-<span style="color: #000000;">5.7</span>.tar.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf ctags-<span style="color: #000000;">5.7</span>.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> ctags-<span style="color: #000000;">5.7</span>
$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.turdhead.com<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>actionscript.c
$ <span style="color: #c20cb9; font-weight: bold;">cp</span> source.mak source.mak.bak
$ <span style="color: #c20cb9; font-weight: bold;">vim</span> source.mak
$ <span style="color: #c20cb9; font-weight: bold;">diff</span> <span style="color: #660033;">-U</span> <span style="color: #000000;">1</span> source.mak.bak source.mak
<span style="color: #000000; font-weight: bold;">@@</span> -<span style="color: #000000;">10</span>,<span style="color: #000000;">2</span> +<span style="color: #000000;">10</span>,<span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">@@</span>
 SOURCES = \
+       actionscript.c \
        args.c \
<span style="color: #000000; font-weight: bold;">@@</span> -<span style="color: #000000;">61</span>,<span style="color: #000000;">2</span> +<span style="color: #000000;">62</span>,<span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">@@</span>
 OBJECTS = \
+       actionscript.$<span style="color: #7a0874; font-weight: bold;">&#40;</span>OBJEXT<span style="color: #7a0874; font-weight: bold;">&#41;</span> \
        args.$<span style="color: #7a0874; font-weight: bold;">&#40;</span>OBJEXT<span style="color: #7a0874; font-weight: bold;">&#41;</span> \
$ <span style="color: #c20cb9; font-weight: bold;">cp</span> parsers.h parsers.h.bak
$ <span style="color: #c20cb9; font-weight: bold;">vim</span> parsers.h
$ <span style="color: #c20cb9; font-weight: bold;">diff</span> <span style="color: #660033;">-U</span> <span style="color: #000000;">1</span> parsers.h.bak parsers.h
<span style="color: #000000; font-weight: bold;">@@</span> -<span style="color: #000000;">18</span>,<span style="color: #000000;">2</span> +<span style="color: #000000;">18</span>,<span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">@@</span>
 <span style="color: #666666; font-style: italic;">#define PARSER_LIST \</span>
+       ActionScriptParser, \
        AsmParser, \
$ .<span style="color: #000000; font-weight: bold;">/</span>configure
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>上記手順でActionScriptに対応したctagsができるので、あとは-eオプションを使用して、Emacs用のタグファイルを出力させれば、漸くEmacs上でActionScriptのタグジャンプが出来るようになります。</p>
<p><strong>4. rascutで自動コンパイル&#038;ブラウザリロード</strong><br />
今まで知らなかったのですが、rascutというツールを使うと、コンパイルとブラウザによるswf実行を自動化してくれます。これは実際に使ってみないと便利さが伝わらないかもしれませんが、凄く良いリズムで開発出来るようになります。一度は騙されたと思って使ってみるのが良いと思います。</p>
<p>手元では以下でインストールできました。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gem update <span style="color: #660033;">--system</span>
gem <span style="color: #c20cb9; font-weight: bold;">install</span> rascut <span style="color: #660033;">--include-dependencies</span></pre></div></div>

<p>使い方は<a href="http://d.hatena.ne.jp/nitoyon/20070914/how_to_install_rascut">ココ</a>を参考にさせて頂きました。なお言語設定等で問題が起こるらしい記述が結構見つかりましたが、手元では発生していません。</p>
<p><strong>5. log.as導入によりfirebug上でのログ確認</strong><br />
個人的にはrascutとセットで導入すると効果が高いと思います。デフォルトのtraceだとログファイルにデバッグ出力ですが、この関数を導入するとfirebug上でログの確認が出来ます。これでterminalでtail -fしてた人はterminalが必要なくなりますし、emacs上のshellでtail -fしてた人もログ用のバッファを表示しなくても良くなるので画面が広くなります。</p>
<p>インストール、使い方は<a href="http://subtech.g.hatena.ne.jp/secondlife/20070219/1171872801">ココ</a>を参考にさせて頂きました。</p>
<p>
以上で、今回行った設定は終了です。環境も整ったところで、ガリガリコード書いていきまっしょい。ちなみにFlexBuilderはインストールしてみたのですが、ぱっと動かなかったので断念しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/engineer-life/emacs/388/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

