likiさんに教えてもらったのだが,
\include|
で起動すると,\includeで確定してファイル名補完が始まる.コントロールシークエンス一覧から\includeから始まる文字列を抜き出す処理がバグっているのかと思ったが,そうではなく実は想定していた挙動だった.つまりコードのバグではなく仕様のバグ.
新生補完マクロは,あらかじめ登録されたフォーマットを認識し,それようの補完を走らせる.この場合は\includeで登録されているフォーマットが走ってしまうわけだ.たとえば
\usepackage|
で走らせるとパッケージ名の補完が開始されることを期待するのが自然なので.
どうするかねー.とりあえずコントロールシークエンス\controlseqの途中で起動された場合は,辞書内に\controlseqで始まる文字列が高々一つかつフォーマット名が登録されている時に限りフォーマットを認識させるようにするかねー.
というわけでそうしてみた.\includeの補完を行いたい場合には,いったん出た補完ウィンドウで\includeを確定する必要がある.
ちなみに\includegで何も起こらない方はバグ.これは新しくコントロールシークエンス補完が起こるように意図していた.とりあえず新しくなくコントロールシークエンス補完が始まるように改良.と,\begin?でも同じく何も起こらなくなっていたけど,これは新しいコントロールシークエンス補完が開始されるように直した.
今は試せないので、月曜日に確認してみます。
返信削除実はVimを使い始めてますが、LaTeXを編集、コンパイルするのには秀丸、祝鳥環境がまだまだ手放せません。
とりあえず直してみただけなのでこちらでも動かしてみます.肩身の狭い(笑)秀丸ユーザ仲間が減ると悲しいのでよろしくお願いします.
返信削除いつもすいません Xpでは補完の窓が開かず保護違反で異常終了です(0221版でも)。
返信削除Begin型でiならitemizeですが,shift Iとかやると落ちます。
また,設定からメニューの設定を選ぶと設定に入らず,設定のリストに戻ってしまいます。
ちなみにWin10 64bitへの移行を始めましたが,秀丸64bitではうまく動かず32bitに戻しました。
あれ,またですか…….とりあえず前の通り下のmacrodll.dllに取り替えてdbconでまた試してもらえますか?
返信削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22660&authkey=!ABF-6jweqQ-TALQ&ithint=file%2cdll
配布ページにも書いてあるとおり,秀丸64bitでは,DLLが32bitであるという理由によって使えません.
dll入れ替えましたがdbconに何も表示されない???
返信削除因みにsection型,large型も落ちます。
何も表示されないのは変だなぁ……macrodllのサイズは4M以上のはずですが,正しいですか?
返信削除それと,gen_dic.macの8行目の//debuginfo true;のコメントアウトを外してもらうと,マクロからのメッセージがdbconに飛ぶはずです.こちらもあると何か役に立つかもしれないので,よろしければ教えてください.
0416版使ってみました。問題なく動いています。ありがとうございます。
返信削除ダウンロードされるmacrodllは579kBです。お手数ですが、再up願います。
返信削除今度は大丈夫でしょうか
返信削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22660&authkey=!ABF-6jweqQ-TALQ&ithint=file%2cdll
”このアイテムは存在しないか使用できなくなっています”
削除となります。以前利用した
https://onedrive.live.com/?authkey=!AIfnovHX5Cicrak&id=4FABCB4EC4FA1E70!21860&cid=4FABCB4EC4FA1E70
からmacrodllがダウンロードできるようです。こちらで良いのでしょうか?
Begin型でshift+iした結果です
返信削除macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
gen_dic.mac arguments: current = 1, cs = \begin, $arg =
$args[1] =
$args[2] =
$args[3] =
$args[4] =
$args[5] =
$args[6] =
$args[7] =
$args[8] =
$args[9] =
macrodll.dll:FILE_GETLONGPATHNAME: sfn = `C:\DOCUME~1\Xp\LOCALS~1\Temp\'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\tmp.dic'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\hint.dic'
macrodll.dll:EDIT_CREATE: hwnd = 721762, listfile = `c:\program files\hidemaru\macro\fortex\dic\Xp\betex.dic', title = `Begin型補完', str = `(null)'
各種プログラム及びメニューの設定を選択したときは
返信削除macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
macrodll.dll:CALC_SETVARIABLE: name = hx, val = 154
macrodll.dll:CALC_SETVARIABLE: name = hy, val = 154
macrodll.dll:CALC_SETVARIABLE: name = hw, val = 768
macrodll.dll:CALC_SETVARIABLE: name = hh, val = 558
macrodll.dll:WINDOW_ENUMWINDOW: wclassreg = `^HM32CLIENT$', hwnd = 1573786
macrodll.dll:WINDOW_GETENUMWINDOWS: i = 0
macrodll.dll:WINDOW_GETWINDOWLEFT: hwnd = 2753424
macrodll.dll:CALC_SETVARIABLE: name = hcx, val = 158
macrodll.dll:WINDOW_GETWINDOWTOP: hwnd = 2753424
macrodll.dll:CALC_SETVARIABLE: name = hcy, val = 222
macrodll.dll:WINDOW_GETWINDOWRIGHT: hwnd = 2753424
macrodll.dll:CALC_SETVARIABLE: name = hcw, val = 760
macrodll.dll:WINDOW_GETWINDOWBOTTOM: hwnd = 2753424
macrodll.dll:CALC_SETVARIABLE: name = hch, val = 466
のあとはプログラム設定のメニューが呼び出されている感じです。
section型では
返信削除macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
macrodll.dll:EDIT_CREATE: hwnd = 5243890, listfile = `c:\program files\hidemaru\macro\fortex\dic\Xp\sectex.dic', title = `Section型補完', str = `(null)'
で,秀丸が異常終了です。
通常の補完のも教えてもらって良いですか?
返信削除Ctrl+t 補完 を選択すると,
削除macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
macrodll.dll:PEG_NEWSYNTAX: name = search_cs, base = main
macrodll.dll:PEG_SETSKIP: name = search_cs, def = []
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = main, def = first '\\\\'* (? '\\') aftercs* end
PEGNode: (Rule:first,*(Value:'\\'),((Rule:YEN,Value:'\'),*(Rule:aftercs),Rule:end)
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = first, def = [^\\] | start
PEGNode: |(](Value:'\'),Rule:start)
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = aftercs, def = bBra | [^\\}]
PEGNode: |(Rule:bBra,](Value:'\}'))
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = bBra, def = '{' inbra* '}'
PEGNode: (Value:'{',*(Rule:inbra),Value:'}')
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = inbra, def = [^{}] | bBra
PEGNode: |(](Value:'{}'),Rule:bBra)
macrodll.dll:PEG_MATCH: name = search_cs, str =
gen_dic.mac arguments: current = -1, cs = , $arg =
$args[1] =
$args[2] =
$args[3] =
$args[4] =
$args[5] =
$args[6] =
$args[7] =
$args[8] =
$args[9] =
macrodll.dll:FILE_GETLONGPATHNAME: sfn = `C:\DOCUME~1\Xp\LOCALS~1\Temp\'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\tmp.dic'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\hint.dic'
from gen_dic.mac:
c:\program files\hidemaru\macro\fortex\dic\Xp\comtex.dic
c:\program files\hidemaru\macro\fortex\dic\Xp\
macrodll.dll:LISTBOX_SET: set = `comment_fix',val = 0
macrodll.dll:LISTBOX_SETSIZE: v = 6, h = 400
macrodll.dll:LISTBOX_SETFONT: fontname =`MS ゴシック', size = 13
macrodll.dll:LISTBOX_SET: set = `Show_only_match',val = 0
macrodll.dll:LISTBOX_SET: set = `CaseSense',val = 0
macrodll.dll:LISTBOX_SET: set = `Sort',val = 1
macrodll.dll:LISTBOX_SET: set = `Uniq',val = 1
macrodll.dll:LISTBOX_SETSHOW: show = 0
macrodll.dll:LISTBOX_CREATE: hwnd = 918768, x = 131, y = 203, listfile = `c:\program files\hidemaru\macro\fortex\dic\Xp\comtex.dic', comment = `c:\program files\hidemaru\macro\fortex\dic\Xp\'
ablib::window::BaseWnd::Create : ウィンドウ生成.ハンドル525412 クラス名ForTeXListBox
macrodll.dll:LISTBOX_GETWINDOWHEIGHT:
macrodll.dll:LISTBOX_SETPOS: x = 131, y = 203
macrodll.dll:LISTBOX_GETCOUNT:
macrodll.dll:LISTBOX_SELECTFROMTEXT: text = `'
の後で秀丸の異常終了です。
とりあえず少しメッセージを出すようにしてみました.こちらを教えてください.(section型補完とbegin型補完はどちらか一方で大丈夫です.)
返信削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22910&authkey=!AEMfPwcz38HIgpo&ithint=file%2cdll
このコメントはブログの管理者によって削除されました。
返信削除このコメントはブログの管理者によって削除されました。
返信削除すいません,上2つ,個人情報を消し忘れました(何度か公開が旨くいかなくて間違えた・・・).
返信削除削除をお願いします.
消しました.
返信削除……すみません,中身を見ないまま消してしまったので,もう一度お願いします.
有り難うございます。
返信削除●begin型でshift+i
macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
gen_dic.mac arguments: current = 1, cs = \begin, $arg =
$args[1] =
$args[2] =
$args[3] =
$args[4] =
$args[5] =
$args[6] =
$args[7] =
$args[8] =
$args[9] =
macrodll.dll:FILE_GETLONGPATHNAME: sfn = `C:\DOCUME~1\Xp\LOCALS~1\Temp\'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\tmp.dic'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\hint.dic'
macrodll.dll:EDIT_CREATE: hwnd = 3146558, listfile = `c:\program files\hidemaru\macro\fortex\dic\Xp\betex.dic', title = `Begin型補完', str = `(null)'
set m_list
set m_title
set m_defstr
ResetResultStr
Wnd
Create
●補完
返信削除macrodll:SETHMJREDLL: path = `c:\program files\hidemaru\hmjre.dll'
macrodll.dll:PEG_NEWSYNTAX: name = search_cs, base = main
macrodll.dll:PEG_SETSKIP: name = search_cs, def = []
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = main, def = first '\\\\'* (? '\\') aftercs* end
PEGNode: (Rule:first,*(Value:'\\'),((Rule:YEN,Value:'\'),*(Rule:aftercs),Rule:end)
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = first, def = [^\\] | start
PEGNode: |(](Value:'\'),Rule:start)
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = aftercs, def = bBra | [^\\}]
PEGNode: |(Rule:bBra,](Value:'\}'))
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = bBra, def = '{' inbra* '}'
PEGNode: (Value:'{',*(Rule:inbra),Value:'}')
macrodll.dll:PEG_SETRULE: name = search_cs, rulename = inbra, def = [^{}] | bBra
PEGNode: |(](Value:'{}'),Rule:bBra)
macrodll.dll:PEG_MATCH: name = search_cs, str =
gen_dic.mac arguments: current = -1, cs = , $arg =
$args[1] =
$args[2] =
$args[3] =
$args[4] =
$args[5] =
$args[6] =
$args[7] =
$args[8] =
$args[9] =
macrodll.dll:FILE_GETLONGPATHNAME: sfn = `C:\DOCUME~1\Xp\LOCALS~1\Temp\'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\tmp.dic'
macrodll.dll:FILE_DELETEFILE: fname = `C:\Documents and Settings\Xp\Local Settings\Temp\hint.dic'
from gen_dic.mac:
c:\program files\hidemaru\macro\fortex\dic\Xp\comtex.dic
c:\program files\hidemaru\macro\fortex\dic\Xp\
macrodll.dll:LISTBOX_SET: set = `comment_fix',val = 0
macrodll.dll:LISTBOX_SETSIZE: v = 6, h = 400
macrodll.dll:LISTBOX_SETFONT: fontname =`MS ゴシック', size = 13
macrodll.dll:LISTBOX_SET: set = `Show_only_match',val = 0
macrodll.dll:LISTBOX_SET: set = `CaseSense',val = 0
macrodll.dll:LISTBOX_SET: set = `Sort',val = 1
macrodll.dll:LISTBOX_SET: set = `Uniq',val = 1
macrodll.dll:LISTBOX_SETSHOW: show = 0
macrodll.dll:LISTBOX_CREATE: hwnd = 3277752, x = 197, y = 269, listfile = `c:\program files\hidemaru\macro\fortex\dic\Xp\comtex.dic', comment = `c:\program files\hidemaru\macro\fortex\dic\Xp\'
ablib::window::BaseWnd::Create : ウィンドウ生成.ハンドル7209962 クラス名ForTeXListBox
macrodll.dll:LISTBOX_GETWINDOWHEIGHT:
macrodll.dll:LISTBOX_SETPOS: x = 197, y = 269
macrodll.dll:LISTBOX_GETCOUNT:
macrodll.dll:LISTBOX_SELECTFROMTEXT: text = `'
GetSelect
GetCount
lstrlen
comparestr: i = 0
●各種プログラム及びメニューの設定で設定windowが開かない部分は不要ですか?
> ●各種プログラム及びメニューの設定で設定windowが開かない部分は不要ですか?
返信削除DLLが落ちるのと同じ原因な気がするので,とりあえず保留でよさそうです.
後者の方がイヤーなところで落ちてますね…….次のURLのhidemaru.dllとhidemaru_wo.dllを落として,
https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!21860&authkey=!AIfnovHX5Cicrak&ithint=folder%2cdll
次の二つのマクロを実行してもらっても良いでしょうか.(マクロとdllは同じ場所においてください.)
// 一つ目
debuginfo true;
debuginfo "load hidemaru.dll\n";
loaddll currentmacrodirectory + "\\hidemaru.dll";
##_ = dllfunc("testfunc");
freedll;
// 二つ目
debuginfo true;
debuginfo "load hidemaru_wo.dll\n";
loaddll currentmacrodirectory + "\\hidemaru_wo.dll";
##_ = dllfunc("testfunc");
freedll;
●1.mac
削除load hidemaru.dll
Attach
testfunc called
declare function
set func by pointer
callset func by lambda
callset func by lambda + capture
callreturnDetach
●2.mac
load hidemaru_wo.dll
Attach
testfunc called
declare function
set func by pointer
callset func by lambda
callset func by lambda + capture
callreturnDetach
でした。特にエラーなどはありません。
すみません,メッセージを見る限りアップロードがうまく行っていないみたいです…….もう一度試してもらえますか?マクロは少し変更してこんな感じです.(今度はどちらも落ちると思います.)
返信削除// 一つ目
debuginfo true;
debuginfo "load hidemaru.dll\n";
loaddll currentmacrodirectory + "\\hidemaru.dll";
##_ = dllfunc("testfunc");
##_ = dllfunc("clash");
freedll;
// 二つ目
debuginfo true;
debuginfo "load hidemaru_wo.dll\n";
loaddll currentmacrodirectory + "\\hidemaru_wo.dll";
##_ = dllfunc("testfunc");
##_ = dllfunc("clash");
freedll;
●1
返信削除load hidemaru.dll
Attach
testfunc called
declare function
set func by pointer
call
set func by lambda
call
set func by lambda + capture
call
return
clash: static variable
force clashDetach
●2
load hidemaru_wo.dll
Attach
testfunc called
declare function
set func by pointer
call
set func by lambda
call
set func by lambda + capture
call
return
clash: static variable
force clash
いずれも異常終了しました。
あれ,一つ目が思った以上に生きている…
返信削除すみません,今度は次のmacrodll.dllを落としてもらって,
https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22915&authkey=!AAHX1sOt69iJFAo&ithint=file%2cdll
DLLと同じフォルダでこのマクロを動かしてもらって出力をお願いしてもよいでしょうか.
debuginfo true;
debuginfo "load macrodll.dll\n";
loaddll currentmacrodirectory + "\\macrodll.dll";
##_ = dllfunc("testfunc");
##_ = dllfunc("crash");
freedll;
https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22915&authkey=!AAHX1sOt69iJFAo&ithint=file%2cdll
削除は認証を要求されるのですが?
すみません,こちらで.
削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22916&authkey=!APd-l6_xrmE13ak&ithint=file%2cdll
load macrodll.dll
返信削除testfunc called
declare function
set func by pointer
call
set func by lambda
call
set func by lambda + capture
call
return
clash: static variable
force crash
ありがとうございます.なんだかよくわからなくなりました.少し調べてみます.
返信削除これでどうでしょう?
返信削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22916&authkey=!APd-l6_xrmE13ak&ithint=file%2cdll
4/23 3:53 macrodll
削除load macrodll.dll
testfunc called
declare function
set func by pointer
call
set func by lambda
call
set func by lambda + capture
call
return
clash: static variable
force crash
で異常終了しました。前回同様です。
あ,すみません,このdllで補完などが動くようになったのではないかという意味でした.一応それっぽいところを直してみました.(テストマクロはもう捨ててください.)
削除begin型と補完は正しく動いているものと思います。ありがとうございます。
削除各種プログラム及びメニューの設定についてはまだ,メニュー画面のループ状態のままです。
そっちは,fortex\sub\tools\fortex_ps.exeを
削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22917&authkey=!AL7gG-i3-ha3bxc&ithint=file%2cexe
に置き換えてみるとどうでしょう?
こちらは変わらずメニューのループです
削除fortex_ps.exeは154kBで作成日が2月6日と表示されますが?
(ダウンロードした時点では4/25ですがコピーするとこうなります)
多分それは大丈夫だと思います.直接起動するとどうでしょうかね.
削除fortex\sub\tools\fortex_ps.exe fortex\ini\(ユーザ名)\setttex.ini
とコマンドラインからしてもらって良いでしょうか.(渡す引数は""とかで囲まずそのままにしてください.)
有効な32bitアプリケーションではありません,だそうです。
削除あああああー.すみません,コンパイル時の設定の変更忘れでした…….もう一度
削除https://onedrive.live.com/redir?resid=4FABCB4EC4FA1E70!22917&authkey=!AL7gG-i3-ha3bxc&ithint=file%2cexe
のものに置き換えてみてください.
今度は大丈夫。正常に動作しているように見えます。ありがとうございました!
削除しかし,今回Xp上で一連の動作確認していると,周りの人間に変な目で見られてしまいました・・・
Xpを使い続けるのは,そろそろ厳しいかもしれません。