jEditでEmacs outline-mode形式のアウトラインを表示させてみた
jEditでどの程度アウトライン機能が使えるのか試してみたかったものの、Emacs の outline-mode 形式に対応したパーサーが見当たらなかったので、適当にプラグインを作成してみました。
jEditを良く知らない人間が作ったプラグインだけど無いよりもマシだと思うので公開。
概要
Emacs の outline-mode 形式で書かれた文章を解析して、 SideKick で表示するためのプラグイン。行の先頭が1~6個のアスタリスク(*)で始まり、その次の文字が空白の場合、見出しと判断します。
例:
------------------
* 見出し階層1
** 見出し階層2
*** 見出し階層3
**** 見出し階層4
***** 見出し階層5
****** 見出し階層6
------------------
インストール方法
プラグインフォルダに EmacsOutline.jar を置く
Windows版 jEdit 5.xでは C:\Users\
Windows版 jEdit 4.xでは C:\Users\
アンインストール方法
プラグインフォルダに EmacsOutline.jar を削除
他に必要なプラグイン
SideKick plugin
ErrorList plugin
動作確認環境
jEdit 5.0pre1
ErrorList plugin 2.0
SideKick plugin 1.4
動作方法
・設定する
プラグイン > プラグインオプション でダイアログを表示
SideKick > Parsers を選択
textなど、任意のモードに emacs outline に変更
・階層を表示させる
文章を入力して SideKickで表示
SideKickで表示させる方法は、プラグイン > EmacsOutlineSideKick > SideKick 等。
・階層構造で折り畳む
ユーティリティ > バッファオプション でダイアログ表示
フォールディングモード を sidekick にする
Androidのタスク内容をリアルタイムに表示させてみた
タスク(Activity Stack, Activityスタック)の事は入門書とかにも載ってて概念はわかるけど、実際のスタック状況は把握しづらい。けど、リアルタイムで簡単に確認するツールが見当たらない。無いなら作ろうというわけで自作してみた。他の人ってどうやってタスク状況を把握してるんだろ?
タスク状況のリアルタイム表示するバッチファイル
aam_watch.bat
@echo off REM Android Activity Manager内のTask情報を監視 REM 要Cygwinとかのgrepとsleepコマンド :loop cls adb shell dumpsys activity | grep -A 1000 "Running activities" | grep -B 1000 "mResumedActivity" sleep 2 goto loop
動作にはWindows, Cygwinとかのgrepとsleepコマンド, Android SDKが必要。
もっとスマートな実装方法がありそうだし、たまに表示がおかしかったりするけど、とりあえず動くので公開。
実行結果
C:\> aam_watch.bat Running activities (most recent first): TaskRecord{40a2ae68 #135 A android.task.contacts} Run #3: HistoryRecord{40550840 com.google.android.gm/.ComposeActivity} Run #2: HistoryRecord{4054ba50 com.android.contacts/.ProfileLayerActivity} Run #1: HistoryRecord{408f6248 com.android.contacts/.DialtactsContactsEntryActivity} TaskRecord{40515ab0 #2 A com.android.launcher} Run #0: HistoryRecord{40766270 com.android.launcher/com.android.launcher2.Launcher} mPausingActivity: null mResumedActivity: HistoryRecord{405c4f48 com.android.launcher/com.android.launcher2.Launcher}
ホーム画面→Contacts→gmailに画面遷移したときのタスク。
複数のアプリをまたいでタスクが構成されているのが視覚的にわかります。
今、端末上に表示されているActivityも簡単に確認できます。
Activityに関する各種情報をファイルに保存するバッチファイル
こちらはActivity Managerの情報を取得してファイルに保存するだけ。
ファイル名はDDMSのスクリーンショットファイル名に合わせたつもり。
aam_step.bat
@echo off REM Android Activity Managerの情報を取得しファイルに保存する SET DT=%DATE:~-10% SET TM=%TIME: =0% set FILE=dump_am-%DT:~0,4%-%DT:~5,2%-%DT:~8,2%-%TM:~0,2%%TM:~3,2%%TM:~6,2%.txt adb shell dumpsys activity > %FILE%
蛇足
下記コマンドでdumpsys activityのヘルプが表示される
他にもデバッグに役立ちそうなオプションがいろいろあるけど把握してない
adb shell dumpsys activity -h
C:\>adb shell dumpsys activity -h Activity manager dump options: [-a] [-h] [cmd] ... cmd may be one of: a[ctivities]: activity stack state b[roadcasts]: broadcast state i[ntents]: pending intent state p[rocesses]: process state o[om]: out of memory management prov[iders]: content provider state s[ervices]: service state service [name]: service client-side state
jFD2をWindows7のタスクバーで使いやすくする
Windows限定。標準のjfd2.exeにはいくつか問題点がある。
- Windows7だとタスクバー上にクイック起動として登録し、起動させても別のプログラムだと認識される。
- 二重に起動しようとすると失敗する。
そのため、exewrapというツールを使ってexeファイルを作り直す。
①exewrapというツールをダウンロード
http://code.google.com/p/exewrap/
②exewrap.exe を jfd2.jar と同じフォルダにコピー
③jfd2.exeをjfd2old.exeにリネーム
④コマンドラインから下記の内容で実行。
圧縮形式だとなぜかexe作成に失敗するので「-t 1.4」を指定
exewrap.exe -g -t 1.4 -e DDE_CONNECT jfd2.jar
jFD2でカレントフォルダのコマンドラインを立ち上げる
F3キーを押したら今のディレクトリでコマンドラインを立ち上げるだけ。
もっとスマートな方法があるかもしれないけど、とりあえずこの方法で実現。
①jFDのメニュー > オプション > 外部コマンドで設定画面を開く
②Sを選択して、下記の内容を入力し、OKを選択
タイトル:S:Shell呼び出し
シェルコマンドを選択
「シェルを使用する」をチェックする
コマンド:start $R
③.jfd2_user/conf/command.xml に次の内容を追加
<command name="external_command_s" class="com.nullfish.app.jfd2.command.embed.ExternalCommand"> <param name="key"> <text>s</text> </param> </command>
④.jfd2/function.ini の内容を変更 (このファイルを修正することは推奨されていないので注意)
■変更前
f3.0.command=copy
■変更後
f3.0.command=external_command_s