|
|
|
2019/11/18(Mon) 20:00:23|NO.88874
HSPエディタにある「ラベル関数一覧」が常時表示されてる方が使いやすいので
作成しました。
EXEにしてオプションの外部ツールでエディタ起動時に実行する設定にしてくだ
さい。
良ければ使って改良してください。
#include "hsedsdk.as"
#include "user32.as"
#define tl "HSPラベル・関数一覧"
#packopt name tl
#packopt hide 1
screen 0, ginfo_dispx, ginfo_dispy, 2
title tl
; ウィンドウのスタイルを変更
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $20000
; HSPエディタ hwnd取得
repeat 10
hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break
wait 20
loop
if stat != 0: dialog "HSPエディタを起動してください", 1, "HSPエディタラベル関数一覧":end
;gosub *リサイズ
;--- ラベル関数リストボックス配置 -------------------------------------
font "MS ゴシック", 18: objmode 2
ListY = 100
pos 0, 0
sdim labelList
objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 )
oncmd gosub *click, $111
*@
gosub *リサイズ
gosub *テキスト取得
wait 20
goto *@b
stop
;---クリック ---
*click
oncmd 0
if lparam == hLst {
sendmsg hLst, $188: cmCnt = stat // クリック行取得
if cmCnt != s_cnt and cmCnt >= 0{
split LabelList, "\n", istr
split istr( cmCnt ), "|", ss
// エディット行選択
sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1
SetForegroundWindow edit_hwnd
s_cnt = cmCnt
}
}
oncmd 1
return
*リサイズ
; HSPエディタサイズ取得
dim gt, 4
GetWindowRect edit_hwnd, varptr( gt ) ;
x = gt.0: y = gt.1
GetClientRect edit_hwnd, varptr( gt )
sx = gt.2: sy = gt.3
width 200, sy-80, x-200, y+80
; リスト
MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1
gsel 0, 1
return
*テキスト取得
hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end
; アクティブなタブのIDの取得
hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return
; タブのIDからFootyのIDを取得
hsed_getfootyid footyId, tabid
; テキストの文字列長を取得
hsed_gettextlength len, footyId
sdim txt, len + 1
; 編集中のテキストを取得
hsed_gettext txt, footyId
if txt == s_txt: return
s_txt = txt
notesel txt
dim lbxGyo, notemax: i=0 // ラベル行
cmFlg = 0 // コメントフラグ
sdim labelList
repeat notemax
wait 0: gyo=cnt
sdim tt: noteget tt, gyo
tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' )
if strlen( tt2 ) == 0: continue
s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc "
repeat length( s )
if instr( tt2, 0, s( cnt ) ) == 0{
// ラベル内容追加セット
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo(i) = gyo: i++
}
loop
if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo( i ) = gyo: i++
}
loop
objprm lstNo, labelList
return
| |
|
2019/11/18(Mon) 21:42:27|NO.88875
めっちゃ便利ですね!
今まで外部ツール使ったことなかったんですけど登録しました。
|
|
2019/11/19(Tue) 01:09:42|NO.88878
便利! 改造して使わせて頂きます。
|
|
2019/11/20(Wed) 08:40:39|NO.88880
便利に使わせて頂きます。
|
|
2019/11/20(Wed) 10:04:02|NO.88881
1つ質問があります。
そのうちこのソースコードを改造したり流用したツールを、
さかさんの名前を明記した上で自分のサイトとかで配布したいのですが、大丈夫でしょうか?
(もちろん配布する場合は広告などは一切つけず、完全無料で配布するつもりです)
|
|
2019/11/20(Wed) 15:41:06|NO.88883
うちもソラさんと同じこと思ってました。
自分用に改良したのを使わせて頂いてます♪
↓現時点でこんなんなってます。
#include "hsedsdk.as"
#include "user32.as"
#define tl "ラベル・関数一覧"
#packopt name tl
#packopt hide 1
;-------------------------------------------------------------------------------
// 二重起動防止
#uselib "kernel32.dll"
#func CreateMutex "CreateMutexA" sptr,sptr,sptr
#func GetLastError "GetLastError"
CreateMutex 0,0,"_label_list_" // 適当なユニーク文字をセット
GetLastError: if stat=$b7 { end } // 既に起動していたら終了
;-------------------------------------------------------------------------------
screen 0, 160, 354, 10
title tl
; ウィンドウのスタイルを変更
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $20000
; HSPエディタ hwnd取得
repeat 10
hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break
wait 10
loop
if stat != 0: dialog "HSPエディタを起動してください。", 1, tl: end
gosub *リサイズ
;--- ラベル関数リストボックス配置 -------------------------------------
font "MS ゴシック", 14: objmode 2
;ListY = 100
pos 0, 0
sdim labelList
objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 )
oncmd gosub *click, $111
*@
;gosub *リサイズ
gosub *テキスト取得
wait 50
goto *@b
;stop
;---クリック ---
*click
oncmd 0
if lparam == hLst {
sendmsg hLst, $188: cmCnt = stat // クリック行取得
if cmCnt != s_cnt and cmCnt >= 0{
split LabelList, "\n", istr
split istr( cmCnt ), "|", ss
// エディット行選択
sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1
SetForegroundWindow edit_hwnd
s_cnt = cmCnt
}
}
oncmd 1
return
*リサイズ
; HSPエディタサイズ取得
dim gt, 4
GetWindowRect edit_hwnd, varptr( gt ) ;
x = gt.0: y = gt.1
GetClientRect edit_hwnd, varptr( gt )
sx = gt.2: sy = gt.3
width 160, 354, x+sx-187, y+104
; リスト
;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1
gsel 0, 2
return
*テキスト取得
hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end
; アクティブなタブのIDの取得
hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return
; タブのIDからFootyのIDを取得
hsed_getfootyid footyId, tabid
; テキストの文字列長を取得
hsed_gettextlength len, footyId
sdim txt, len + 1
; 編集中のテキストを取得
hsed_gettext txt, footyId
if txt == s_txt: return
s_txt = txt
notesel txt
dim lbxGyo, notemax: i=0 // ラベル行
cmFlg = 0 // コメントフラグ
sdim labelList
repeat notemax
wait 0: gyo=cnt
sdim tt: noteget tt, gyo
tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' )
if strlen( tt2 ) == 0: continue
s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc "
repeat length( s )
if instr( tt2, 0, s( cnt ) ) == 0{
// ラベル内容追加セット
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo(i) = gyo: i++
}
loop
if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo( i ) = gyo: i++
}
loop
objprm lstNo, labelList
return
| |
|
2019/11/20(Wed) 16:01:31|NO.88884
HSPエディタもF11を押すことで同等の機能はありますが、こちらはポップアップ型。
常時表示してあった方が効率良さそう。
|
|
2019/11/20(Wed) 18:57:11|NO.88887
ソラさん、窓月らら、f(出張前)さん、感想書き込みありがとうございます。
そんなたいしたものでもなく作成主張するつもりならソース公開しないので
有償、無償、配布、全く気にせず自由に使ってください。
窓月ららさんのように改良し公開してもらえたら使わせてもらいます。
|
|
2019/11/21(Thu) 01:32:48|NO.88889
>>有償、無償、配布、全く気にせず自由に使ってください。
ありがとうございます、いつ完成するかはわかりませんが完成したら掲示板にも公開しようと思います。
|
|
2019/11/21(Thu) 21:51:53|NO.88896
メインループに以下を入れると一緒に前面になって便利かもです。
SetParentで子ウィンドウにするとカッコ良いいんですが何かでフリーズしたり
すると親のエディタも巻き込んで操作不能になるため止めました。
*@
gosub *リサイズ
gosub *テキスト取得
GetForegroundWindow //アクティブウインドウのハンドル取得
if stat == edit_hwnd{
;確実に前面にする
SetWindowPos hwnd, -1,0,0,0,0,1|2
SetWindowPos hwnd, -2,0,0,0,0,1|2
}
wait 20
goto *@b
stop
|
|
2019/11/21(Thu) 23:00:23|NO.88899
|
|
2019/11/22(Fri) 22:10:38|NO.88904
はいw
ただ、このくらいの単純な処理なら大丈夫かと思います。
自分はこの他に命令一覧やトレース実行や常駐動作をAPIのタイマー使用したり
して頻繁に固まりました(^^;
oncmdとかon〜系はgosubが良いとか呼ばれる先はreturn 0にするべきとか曖昧な
のと実際の挙動に不信感があります。
あとhsedsdkもバグがあったり機能しなかったりなので、HSPエディタ毎作ろうかと
リッチエディットを使用したエディタエンジンを気長に作ってたりしてます(笑)
|
|
2019/11/22(Fri) 22:54:53|NO.88905
これは便利ですね!
作業効率が上がりそう
|
|
2019/11/23(Sat) 10:24:20|NO.88907
面白そうですね(^^♪
>そんなたいしたものでもなく作成主張するつもりならソース公開しないので
>有償、無償、配布、全く気にせず自由に使ってください。
>
>改良し公開してもらえたら使わせてもらいます。
とのことなので開発することにしました。
順調に進んではいるんですけど、NO.88899 のソラさんと若干。...というかかなり似てしまったことに今頃気づいてしまいました。
https://gyazo.com/dd6b13538efa806600ca37334993a6f1
すいません(^^;)
|
|
2019/11/23(Sat) 14:31:46|NO.88910
いえいえ、お気になさらず。
おそらく細かい部分は差別化できると思うので、お互いがんばりましょう!
|
|
2019/11/24(Sun) 03:11:47|NO.88915
現時点の公開します。
HSPエディタの右上に貼り付くようになってます。
HSPエディタを最小化すると一緒に消えます。
手動で位置を移動すると貼り付かないようになります。
また貼り付けたいときは、マウス右ボタンを押しながら左ボタンを押します。
これでとりあえず使えますが、最適化などをしていきます。。
;-------------------------------------------------------------------------------
; hsplabel Version 0
; オリジナルソース:さかさん 改良版:窓月らら
;-------------------------------------------------------------------------------
#include "hsedsdk.as"
#include "user32.as"
#packopt name "hsplabel"
#packopt xsize 1
#packopt ysize 1
#packopt hide 1
;-------------------------------------------------------------------------------
// 二重起動防止
#uselib "kernel32.dll"
#func CreateMutex "CreateMutexA" sptr,sptr,sptr
#func GetLastError "GetLastError"
CreateMutex 0,0,"_hsplabel_" // 適当なユニーク文字をセット
GetLastError: if stat=$b7 { end } // 既に起動していたら終了
;-------------------------------------------------------------------------------
#define APP_TITLE "ラベル・関数一覧"
;-------------------------------------------------------------------------------
title APP_TITLE
screen 0,160,354,10
// ウィンドウのスタイルを変更
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $20000
// HSPエディタが起動しているか
repeat 10
hsed_getwnd edit_hwnd,HGW_MAIN: if stat=0 { break }
wait 10
loop
if stat!0 { dialog "HSPスクリプトエディタを起動してください。",1,APP_TITLE: end }
;--- ラベル関数リストボックス配置 -------------------------------------
sdim labelList
font "MS ゴシック", 14: objmode 2
pos 0,0: objsize ginfo_winx: listbox lstbx,ginfo_winy,labelList: lstNo=stat: hLst=objinfo(stat,2)
oncmd gosub *click, $111
dim gt,4
*@
gosub *resize
if c\5=0 { gosub *get_text }
wait 10
c++
goto *@b
;---クリック ---
*click
// 右+左クリックで貼り付きモードに戻す
getkey x,2: if x { c=0: goto *resize }
// リストボックスの判定
oncmd 0
if lparam == hLst {
sendmsg hLst, $188: cmCnt = stat // クリック行取得
if cmCnt != s_cnt and cmCnt >= 0{
split LabelList, "\n", istr
split istr( cmCnt ), "|", ss
// エディット行選択
sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1
SetForegroundWindow edit_hwnd
s_cnt = cmCnt
}
}
oncmd 1
return
*resize
; HSPエディタサイズ取得
;dim gt, 4
GetWindowRect edit_hwnd,varptr(gt): x =gt(0): y =gt(1)
GetClientRect edit_hwnd,varptr(gt): sx=gt(2): sy=gt(3)
if stat=0 { end }
if c=0 | (ginfo_wx1=bx & ginfo_wy1=by) {
;if stat { width 160,354,x+sx-187,y+105 } else { end }
width 160,354,x+sx-187,y+105
bx=ginfo_wx1: by=ginfo_wy1
} else {
c=1
}
; リスト
;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1
if sx=0 { gsel 0,-1: c=2 } else { gsel 0,2 }
return
*get_text
;hsed_getwnd edit_hwnd, HGW_MAIN: if stat!0 { end }
; アクティブなタブのIDの取得
hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return
; タブのIDからFootyのIDを取得
hsed_getfootyid footyId, tabid
; テキストの文字列長を取得
hsed_gettextlength len, footyId
sdim txt, len + 1
; 編集中のテキストを取得
hsed_gettext txt, footyId
if txt == s_txt: return
s_txt = txt
notesel txt
dim lbxGyo, notemax: i=0 // ラベル行
cmFlg = 0 // コメントフラグ
sdim labelList
repeat notemax
wait 0: gyo=cnt
sdim tt: noteget tt, gyo
tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' )
if strlen( tt2 ) == 0: continue
s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc "
repeat length( s )
if instr( tt2, 0, s( cnt ) ) == 0{
// ラベル内容追加セット
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo(i) = gyo: i++
}
loop
if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo( i ) = gyo: i++
}
loop
objprm lstNo, labelList
return
| |
|
2019/11/24(Sun) 04:58:14|NO.88916
あっ、上のバグあった。こっちで。。
*resize
; HSPエディタサイズ取得
;dim gt, 4
GetWindowRect edit_hwnd,varptr(gt): x =gt(0): y =gt(1)
GetClientRect edit_hwnd,varptr(gt): sx=gt(2): sy=gt(3)
if stat=0 { end }
if c=0 | (ginfo_wx1=bx & ginfo_wy1=by) {
;if stat { width 160,354,x+sx-187,y+105 } else { end }
width 160,354,x+sx-187,y+105
bx=ginfo_wx1: by=ginfo_wy1
}
; リスト
;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1
if sx=0 { gsel 0,-1: c=2 } else { gsel 0,2 }
return
あと、どうやらEnterキー長押しで改行しまくってると落ちることがあるようです。
*テキスト取得 の部分、wait 0 ではなく await 1 だと今のところ落ちない。
if cnt\100=0 { await 1 }
でもよさそう。
|
|
2019/11/24(Sun) 06:34:19|NO.88917
上記の不具合はどうやら hsed_gettext txt, footyId の部分で起きてるらしい。
エディタ巻き込んでハングします。仕方ないので
*get_text
getkey x,13: if x { return }
として、改行時はスキップするようにしてみました。これで一応落ちなくなってます。
await 1 の部分は wait 0 に戻してもよさそう。
|
|
2019/11/30(Sat) 17:48:01|NO.88959
エディタ入力には一切影響せず裏でリアルタイムにコンパイルをしてエラー表示する機能
を追加しました。
エラーメッセージ行をクリックするとカーソル移動します。
exeにする場合はローカルにhspcmp.dllの配置が必要です。
ラベル関数一覧と別にした方がスッキリするかも知れないです。
あと、ご存知?のようにhsed_gettextには最後の1文字が取得出来ないバグがあるので最後
に改行または空白をつけてください。エラー扱いになります。
#include "hsedsdk.as"
#include "user32.as"
#include "hspcmp.as"
#include "kernel32.as"
#uselib "psapi.dll"
#func GetModuleFileNameEx "GetModuleFileNameExA" sptr , sptr , sptr , sptr
#define tl "HSPラベル・関数一覧"
#packopt name tl
#packopt hide 1
screen 0, ginfo_dispx, ginfo_dispy, 2
title tl
; ウィンドウのスタイルを変更
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $20000
; HSPエディタ hwnd取得
repeat 10
hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break
wait 20
loop
if stat != 0: dialog "HSPエディタを起動してください", 1, tl: end
;--- ラベル関数リストボックス配置 -------------------------------------
font "MS ゴシック", 18: objmode 2
sdim labelList
objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 )
oncmd gosub *click, $111
s_cnt1 = -1
;------------------------------------------------------------------------
; コンパイルウィンドウ
;------------------------------------------------------------------------
screen 1, ginfo_dispx, ginfo_dispy, 2: title "コンパイル"
; ウィンドウのスタイルを変更
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $20000
;--- コンパイルリストボックス配置 -------------------------------------
font "MS ゴシック", 18: objmode 2
sdim cmpList
objsize ginfo_winx: listbox lstbx2, ginfo_winy, cmpList: lstNo2 = stat: hLst2 = objinfo( stat, 2 )
oncmd gosub *click, $111
sdim mesbuf: sdim mesbuf_s
s_cnt2 = -1
;HSPインストールディレクトリ取得
hspDir = ""
pId = 0: GetWindowThreadProcessId edit_hwnd, varptr( pId )
// プロセスID→プロセス
OpenProcess 0x001F0FFF/*PROCESS_ALL_ACCESS*/, 1, pId: prc = stat
// ファイル名取得
fileNm = "": GetModuleFileNameEx prc, hMod, varptr( fileNm ), 2048
hspDir = getpath( fileNm, 32 )
;------------------------------------------------------------------------
; メインループ
;------------------------------------------------------------------------
*@
gosub *リサイズ
gosub *テキスト取得
GetForegroundWindow //アクティブウインドウのハンドル取得
actHwnd = stat
if actHwnd == edit_hwnd && actHwnd_s != actHwnd{
;確実に前面にする
gsel 0: SetWindowPos hwnd, -1,0,0,0,0,1|2: SetWindowPos hwnd, -2,0,0,0,0,1|2
gsel 1: SetWindowPos hwnd, -1,0,0,0,0,1|2: SetWindowPos hwnd, -2,0,0,0,0,1|2
}
actHwnd_s = actHwnd
gosub *コンパイル
wait 20
goto *@b
stop
;--- コンパイル ---
*コンパイル
hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end
; アクティブなタブのIDの取得
hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return
; テキストの文字列長を取得
hsed_gettextlength len, footyId
sdim txt, len + 1
; 編集中のテキストを取得
hsed_gettext txt, footyId
; コンパイル用ファイル名
sdim srcFile: hsed_getpath srcFile, tabid
srcFile = "" + getpath( srcFile, 32 ): if srcFile = "": srcFile = dir_cur + "\\"
srcFile = srcFile +"hspcmptmp"
fname = srcFile+".hsp" ; スクリプトファイル名
bsave fname, txt, strlen( txt )
objname = srcFile+".obj" ; オブジェクトファイル名
hsc_ini fname
hsc_objname objname
hsc_compath hspDir+"\\common\\"
hsc_comp 1: res = stat ; コンパイル
mesbuf = ""
if res != 0{
hsc3_messize sz
sdim mesbuf, sz + 1
hsc_getmes mesbuf
CmpList = mesbuf
}
if mesbuf_s != mesbuf{
gsel 1: objprm 0, mesbuf
notesel mesbuf
sendmsg hLst2, $197, notemax-1 ;LB_SETTOPINDEX
sdim mesbuf_s, sz + 1
mesbuf_s = mesbuf
}
;title ""+ strlen( mesbuf )
return
;---クリック ---
*click
oncmd 0
; ラベル関数一覧
if lparam == hLst {
sendmsg hLst, $188: cmCnt = stat // クリック行取得
if cmCnt != s_cnt1 and cmCnt >= 0{
s_cnt1 = cmCnt
split LabelList, "\n", istr
split istr( cmCnt ), "|", ss
// エディット行選択
sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1
SetForegroundWindow edit_hwnd
}
}
; コンパイル
if lparam == hLst2 {
sendmsg hLst2, $188: cmCnt = stat // クリック行取得
if cmCnt != s_cnt2 and cmCnt >= 0{
s_cnt2 = cmCnt
split CmpList, "\n", istr
mmm = istr( cmCnt )
i2 = instr( mmm, 0, "行目)" )
if i2 >= 0{
i1 = i2 - 1: repeat: if peek( mmm, i1 ) == '('{ break }:i1 --:loop
iii = int( strmid( mmm, i1+1, i2-i1-1 ) )
// エディット行選択
sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, iii - 1
SetForegroundWindow edit_hwnd
}
}
}
oncmd 1
return
*リサイズ
; HSPエディタサイズ取得
dim gt, 4
GetWindowRect edit_hwnd, varptr( gt ) ; エディタウィンドウの左上X, 左上Y, 右下X, 右下Y
x = gt.0: y = gt.1: x2 = gt.2: y2 = gt.3
GetClientRect edit_hwnd, varptr( gt ) ; エディタクライアント領域の高さ, 幅 ( 前2つは未使用0 )
sx = gt.2: sy = gt.3
if x_s = x and y_s = y and sx_s = sx and sy_s = sy: return
x_s = x: y_s = y: sx_s = sx: sy_s = sy
; ラベル関数 ウィンドウ ---------
gsel 0
width 200, sy-80, x-200, y+80
MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 ; x, y, 幅, 高さ, 再描画
gsel 0, 1
; コンパイル ウィンドウ ---------
gsel 1
width sx, 80, x, y2
MoveWindow hLst2, 0, 0, ginfo_winx, ginfo_winy, 1
gsel 1, 1
return
*テキスト取得
gsel 0
hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end
; アクティブなタブのIDの取得
hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return
; タブのIDからFootyのIDを取得
hsed_getfootyid footyId, tabid
; テキストの文字列長を取得
hsed_gettextlength len, footyId
sdim txt, len + 1
; 編集中のテキストを取得
hsed_gettext txt, footyId
if txt == s_txt: return
s_txt = txt
notesel txt
dim lbxGyo, notemax: i=0 // ラベル行
sdim labelList
repeat notemax
wait 0: gyo=cnt
sdim tt: noteget tt, gyo
tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' )
if strlen( tt2 ) == 0: continue
s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc "
repeat length( s )
if instr( tt2, 0, s( cnt ) ) == 0{
// ラベル内容追加セット
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo(i) = gyo: i++
}
loop
if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{
labelList += strf( "%s |%d\n", tt, gyo+1 )
lbxGyo( i ) = gyo: i++
}
loop
objprm lstNo, labelList
return
| |
|