秀丸エディタのアウトライン機能を使用して、JavaScript関数だけをツリー形式で表示

ソフトウェア秀丸エディタ

大前提

 状態:-  閲覧数:5,596  投稿日:2014-10-13  更新日:2017-03-12
ツリー表示はコピペ出来ない
・正確にはコピー出来るが、罫線だけは空白でコピーされる

罫線を含むツリー表示をコピペするには?
・1.ツリーそのものをコピー(罫線部分は空白)
・2.罫線変換マクロ適用

2つの方法

 閲覧数:450 投稿日:2014-10-13 更新日:2017-03-12 

方法1.アウトライン(ツリー)+強調表示


1.アウトライン機能
〔ウインドウ〕-〔アウトライン解析の枠〕

2.ツリー表示
・「アウトライン解析の枠」で右クリック
・「ツリー表示」選択

3.強調表示
・「アウトライン解析の枠」で右クリック
・「アウトライン解析の設定」選択
・右下の「読込み」ボタンクリック
・「js20141014-4.hilight」選択


方法2.アウトライン(関数一覧)+マクロ)


1.アウトライン機能
〔ウインドウ〕-〔アウトライン解析の枠〕

2.関数一覧
・「アウトライン解析の枠」で右クリック
・「関数一覧」選択
・関数一覧が表示される
・「アウトライン解析の枠」で右クリック後、「一覧をコピー」選択して、表示内容をコピー
・新規ファイルへ貼り付け

3.罫線変換マクロでツリー形式へ変換
・マクロ実行
・「TabTreeConvert.mac」選択

ファイルタイプ別の設定- アウトライン- アウトライン解析の枠

 閲覧数:620 投稿日:2014-10-13 更新日:2017-03-11 

Ver8.34


アウトライン解析の枠(Ver8.34対応版)

ファイルタイプ別の設定- アウトライン- 解析- 関数一覧

 閲覧数:650 投稿日:2014-10-13 更新日:2017-03-11 

Ver8.34


関数一覧
 関数の一覧としてアウトライン解析します。
 「言語」の内容は、いまのところ「C言語/Java等」のみしか選ぶことができません。
 言語の変更はいまのところできませんが、関数一覧といっても何の関数のことか分からないため、C言語/Java等であることを明示的に表すために、敢えて表示しています。
 C言語/Java等は、以下の言語に対応しています。

C
C++
Java
JavaScript
C#
Objective-C
go言語
解析(Ver8.34対応版)


JavaScript


JavaScriptにも対応しているが、JavaScriptに特化しているわけではない
・「function ★★」関数名は取得できるが、即時無名関数オブジェクトのメソッドはデフォルトでは取得できない
・即事無名関数オブジェクトはfunctionとして取得される

感想
・他に似たようなツールを知らないので、便利なのは便利
・細かい設定を加えていけば、使えるようになるかも…


「関数一覧」選択後


仕様
・罫線未対応
function
function
function
function
function
function
function
function
function
function
function
function
function
function
gaEventSend
updateStatus
parseParams
rewriteHash
switch (step) {
case 1:
case 0:
applyParams
nextStepApplyParams
chRadio
switch(this.name) {
case "participation" : {
chCheckbox
switch(d.attr("id")) {
case "cb-dlr":
case "cb-dlsr":
case "cb-dllh":
case "cb-dlucdg":
case "cb-dlvml":
default :
chValue
checkCompleted
redrawStats
getUserRepo
runShow
redrawRepos
meiRepo
moiRepo
meForks
meSources
meFS
fSource
fFork
refreshRepoList
name
size
age
titleAge
color
darker
sort
width
star
fork
chCheck
append
appendStat
repoItemOver
repoItemOut
repoItemClick
getAccessToken
init
function
pauseShow
startShow


罫線変換マクロ導入
「ツリーそのものをコピー」のTAB-罫線変換マクロ
▼D:/Program Files (x86)/Hidemaru/macro/TabTreeConvert.mac
・「アウトライン解析の枠」にある「ツリーそのものをコピー」を使用してクリップボードに出力されるデータを、TAB→罫線変換を行うマクロ
・ 「ツリーそのものをコピー」を実行し、秀丸エディタに貼り付けてから実行
・範囲選択している場合は、選択範囲のみ実行
├function
├function
├function
├function
├function
├function
├function
├function
├function
├function
├function
├function
├function
├function
├gaEventSend
├updateStatus
├parseParams
├rewriteHash
│└switch (step) {
│  ├case 1:
│  └case 0:
├applyParams
├nextStepApplyParams
├chRadio
│└switch(this.name) {
│  └case "participation" : {
├chCheckbox
│└switch(d.attr("id")) {
│  ├case "cb-dlr":
│  ├case "cb-dlsr":
│  ├case "cb-dllh":
│  ├case "cb-dlucdg":
│  ├case "cb-dlvml":
│  └default :
├chValue
├checkCompleted
├redrawStats
├getUserRepo
├runShow
├redrawRepos
├meiRepo
├moiRepo
├meForks
├meSources
├meFS
├fSource
├fFork
├refreshRepoList
│├name
│├size
│├age
│├titleAge
│├color
│├darker
│├sort
│├width
│├star
│├fork
│├chCheck
│├append
│└appendStat
├repoItemOver
├repoItemOut
├repoItemClick
├getAccessToken
└init
 ├function
 ├pauseShow
 └startShow

※一番上の階層のみ一行空けるよう設定したいのだが、やり方が不明

ファイルタイプ別の設定- アウトライン- 解析- ツリー表示

 閲覧数:415 投稿日:2014-10-13 更新日:2017-03-11 
〔ウインドウ〕-〔アウトライン解析の枠〕


ツリー設定


〔その他〕-〔ファイルタイプ別の設定〕-〔アウトライン解析の方法〕
・「ツリー表示」にチェックを入れる


ツリーコピー



・「アウトライン表示エリア」で右クリック
・〔ツリー操作〕-〔ツリーそのものを選択〕


ツリー操作
・「ツリー表示」選択している場合のみ表示されるナビゲーション

ファイルタイプ別の設定- アウトライン- 解析- ツリー表示項目のプロパティ

 閲覧数:638 投稿日:2014-10-13 更新日:2014-10-14 

SQL


ツリー表示項目のプロパティ
・下記ページで文字列を指定する簡単な例が解説されている
秀丸のアウトライン解析が地味に便利な件

・表示範囲指定にも踏み込むと、さらに細かい挙動を制御可能となる

ファイルタイプ別の設定- アウトライン- 解析- ツリー表示項目のプロパティをJavaScriptに特化させてみる

 閲覧数:672 投稿日:2014-10-14 更新日:2017-03-11 

作成例


GUIで作成した結果を保存
・GUIで操作した結果を出力しているだけなので、下記内容を理解する必要は全くない
▼D:/Program Files (x86)/Hidemaru/macro/Setting/js20141014-4.hilight
/<TreeWord>
/0000,0002,0000,00000000,00014553,"^[ \\t]*class[^:;{]*",""
/0000,0003,0000,00000000,00006156,"struct",""
/0000,0001,0000,00000000,00002652,"",""
/0001,0003,0000,00000000,000041D6,"switch",""
/0002,0003,0000,00000000,000041D6,"case",""
/0002,0003,0000,00000000,000061D6,"default",""
/0003,0002,0000,00000000,00000750,".prototype = {",""
/0004,0002,0000,00000000,00000750,".prototype={",""
/0005,0002,0000,00000000,00000750," = function",""
/0006,0003,0000,00000000,00000152,"return {",""


上記条件 + マクロ適用例
├$ = function(xpr){
├$$ = function(xpr){
├var createDigits = function(xpr){
│└return {
│  ├get : function(){
│  ├show : function(num){
│  ├warnUnder : function(num){
│  ├inc : function(num){
│  ├dec : function(num){
│  └reset : function(){
├var codes = function(html){
│├rgxGlobal    = function(){
│└var highlight = function(code){
├var overlay = function(){
│└return {
│  ├show : function(fnc){
│  └hide : function(fnc){
├var timer = function(){
│└var stop = function(){
│  └return {
│    ├create : function(ms, fnc){
│    └sec : function(){
├var status = function(){
│└return {
│  ├show : function(typ, str, fnc){
│  ├hide : function(fnc){
│  ├point : function(num, fnc){
│  └getScore : function(){
├var results = function(){
│└return {
│  ├show : function(score){
│  └add : function(question, rightAns, yourAns, isCorrect){
├var questions = function(codes){
│├var uneval = function(xpr){
││└switch(typeof xpr){
││  ├case "string" : return '"' + xpr + '"';
││  └default       : return xpr;
│├var next = function(){
│├var correct = function(ans){
│├var incorrect = function(ans){
│└var check = function(yourAns){
│  └return {
├var answer = function(){
│└elm.onkeydown = elm.onkeypress = elm.onkeyup = elm.change = function(){
│  └return {
│    ├get : function(){
│    ├reset : function(){
│    ├focus : function(){
│    ├lock : function(){
│    └unlock : function(){
├$("form").onsubmit = $("#btnAnswer").onclick = function(){
│├$("#btnStart").onclick = function(){
│└return {
│  └eval : function(/* xpr */){
└function(){
 ├transitions[LINEAR] = function(x){
 ├transitions[EASE_IN] = function(x){
 ├transitions[EASE_OUT] = function(x){
 ├transitions[EASE_OUT2] = function(x){
 ├transitions[SIN] = function(x){
 ├var createTransitionArray = function(type, dx){
 ├var animate = function(){
 ├var stop = function(){
 │└css = function(elm, prp){
 └var createTween = function(elm, sty, prp, from, to, dx, trn, repeat, comp, init){
   ├tweens.push(repeat ? function(){
   ├} : function(){
   └return {
     ├resume : function(){
     └add : function(elm, prm){



感想


実際に使用してみた感想
・正規表現を駆使しなければ抽出できないと思い込んでいた
→そんなことはない
→プロパティの設定項目は想定していたよりはるかに豊富
→GUI(プルダウン等で選択する)だけでかなり細かい指定が可能

ポイント
・「見出しの定義」に文字列を指定することで、ほぼ何でも出来る
・「インデントの深さでレベルを決める」にチェックを入れる
・表示範囲 … 行全体


Windowsでコピー履歴参照するため、常駐秀丸にショートカットキーを設定した。[Ctrl]+[Alt]+[C]

秀丸エディタでグレップ検索できない



類似度ページランキング
順位 ページタイトル抜粋
1 秀丸エディタ自体のフルパスは、「アイコン(Hidemaru.exe - ショートカット)右クリック後、プロパティ選択」して確かめる 35
2 ScrapeStormは、無料でデータダウンロード出来ません 35
3 秀丸エディタ Version 8.81 インストール 34
4 Windows 7でタスクバーへ「デスクトップの表示」アイコンを表示 33
5 Windows Search Indexerのインデックスの範囲をスタートメニューだけにしたが、フリーズ発生(2019/7/12) 33
6 秀丸エディタ「浮動小数点数バージョン」は、マクロで浮動小数点数を扱う人専用の特別な仕様 32
7 秀丸エディタでグレップ置換時に確認ダイアログを表示させないようにするためには、『「grepして置換」を実行する前に確認』のチェックを外す 32
8 Windowsで使用するハードディスクは、NTFS形式のフォーマットにする 32
9 「Windowsへインストールしたソフトウェア」の「インストール先」と「すべての関連フォルダパス」を確認するためには、「Geek Uninstaller」経由で「レジストリエディタ」を起動します。 31
10 Diskpart コマンドインタープリター 31
11 アンインストールに失敗して残ったサービスのエントリを消去 31
12 「アプリと機能」に表示される見覚えのないアプリの場所を確認するためには、「Geek Uninstaller」を使用します。 30
13 秀丸エディタのタブは分離して使用可能。例 … 5タブ → 2タブ+と3タブ 30
14 「Ctrl」キーを押しながら「V」は、カレントディレクトリにしか「貼り付け」できません。 30
15 IBMが提供するインターネットバンキング専用のウィルス対策ソフト「Rapport(ラポート)」(無料) 29
16 CrystalDiskInfoで注意表示された外付けハードディスク 29
17 FileZillaでディレクトリ内容が表示されない理由は、「ディレクトリリストのフィルタリング」の「Source control directories」にチェックを入れているから 28
18 「Windows10 エクスプローラー ナビゲーションウィンドウ」に目的の「ドライブ」が表示されていない場合は、「PC」をクリックしてみる 28
19 MP3ファイルの無音部分を自動検出して、「分割」もしくは「削除」するフリーソフト … mp3DirectCut 28
20 Ralpha Image Resizer / 短辺をpx指定で縮小後、px指定して正方形トリミング 28
2023/3/31 0:45 更新
週間人気ページランキング / 3-23 → 3-29
順位 ページタイトル抜粋 アクセス数
1 MP3ファイルの「プロパティ」を変更できない | Windows 10(Windows) 89
2 解凍先の指定。デフォルト設定ではデスクトップに解凍 66
3 「Windows 10」パソコンのタスクマネージャーで「GPU」が表示されない(グレイアウトされる)理由は、WDDMドライバがWDDM2.x以上ではなかったから | Windows 10(Windows) 46
4 ファイル名の一部(指定文字列)を削除するバッチファイル | バッチファイル(Windows) 38
5 Explzh で私が行う最初の設定 | Explzh for Windows(ソフトウェア) 31
6 「タイムゾーン間で同期」にはチェックを入れない 27
7 Windows 0 19
8 VLC media player で複数曲を「繰り返し連続再生する」ためには、プレイリスト全体をリピート再生指定する | VLC media player(ソフトウェア) 18
8 秀丸エディタでグレップ検索できない | 秀丸エディタ(ソフトウェア) 18
9 マウスの選択範囲がおかしくなった時、試してみた方が良いかもしれないこと | マウス(ハードウェア) 17
9 「★ページは機能していません」「★からデータが送信されませんでした。」 「ERR_EMPTY_RESPONSE」と表示されるようになったら、 Kasperskyを一旦停止してみる | ウイルス対策ソフト(Windows) 17
10 コマンドプロンプトでchkdsk /B | ハードディスクトラブル(ハードウェア) 16
11 「Windows エクスプローラー」は、OR で複数検索出来るが、文字数制限があるのかしら? | Windows エクスプローラー(Windows) 15
11 これまで正常動作していた「CrystalDiskInfo」である日突然「対応ディスクが見つかりませんでした」と表示された場合は、アップデートしてみます。 | CrystalDiskInfo(ソフトウェア) 15
11 エクスプローラの右クリックメニュー「Microsoft Defender でスキャンする」が表示されなくなりました。→ 勘違いかもしれません | Windows 10(Windows) 15
11 Windows10 不定期でフリーズ発生トラブル(2019/6/9)。フリーズ現象の調査で採取するダンプの種類は、「完全メモリダンプ」でないと有効な調査はできない | フリーズトラブル 2019年(Windows) 15
12 外付けハードディスクを収納可能な安価ラックを探す | 外付けハードディスク(ハードウェア) 14
13 フォルダウィンドウの「戻る」「進む」矢印ボタンが表示されなくなった | Windows7(Windows) 13
13 Audacity で再生ボタンを押しても音が鳴らない時は、再生レべルスライダーを右にドラッグして「再生レべル:100%」にします。 | Audacity(音) 13
13 FastCopy | ソフトウェア 13
2023/3/30 1:01 更新