最終更新: 2013-04-15T03:23+0900
どうせ Rubyマクロはコマンドの先頭を小文字にする必要があ
SCRIPTITEM_GLOBALMEMBERSフラグを落とすと $Editor.insTextだけのマクロは何十回でも問題なく実行できてるけど、それだけで安心してよいものか。Editorと書いたときのように(数字で始まるマクロコマンドを呼んだときも?)初回で確実に落ちるというだけならいいけど、何回も実行してるうちに運が悪ければ落ちるというのがあれば
最終更新: 2012-10-24T00:56+0900
矩形の選択中の未選択状態でコピ
IsBoxSelectingは IsTextSelectingに含まれる概念だと思われるから IsTextSelecting(0幅選択を含む選択状態)と IsTextSelected(1文字以上選択されている)の2つだけで判定条件を書きたい。0文字選択→選択キ
IsTextSelectingは BoxSelectが必ずロ
でも黙
最終更新: 2012-10-02T16:53+0900
選択された文字列かフ
/* InstantMacro.js 選択テキストまたはファイル全体を JScriptマクロとして実行する。 */ var jsmacro = Editor.GetSelectedString(0) || Editor_AllText(); try { eval(jsmacro); } catch(e) { Editor.TraceOut(e.message); } function Editor_AllText() { var text = ""; for(var n = 1, n_max = Editor.GetLineCount(0); n <= n_max; ++n) { text += Editor.GetLineStr(n); } return text; }
* リンク先は今日読み終わ
最終更新: 2012-08-10T23:22+0900
Index: sakura_core/CViewCommander.cpp =================================================================== --- sakura_core/CViewCommander.cpp (リビジョン 55744) +++ sakura_core/CViewCommander.cpp (リビジョン 55745) @@ -3035,9 +3035,6 @@ // 2005.06.24 Moca m_pCommanderView->GetSelectionInfo().DisableSelectArea( bReDraw ); m_pCommanderView->GetSelectionInfo().SetSelectArea( matchLayoutRange ); - if( bReDraw ){ - m_pCommanderView->GetSelectionInfo().DrawSelectArea(); - } } /* カーソル移動 */ @@ -3046,6 +3043,15 @@ GetCaret().MoveCursor( matchLayoutRange.GetFrom(), bReDraw ); GetCaret().m_nCaretPosX_Prev = GetCaret().GetCaretLayoutPos().GetX2(); + if( bReDraw && !keepCurrentSelection ){ + // keepCurrentSelectionのときは不要っぽい。 + // ステータスバーに表示される選択領域のサイズが + // (たぶんカーソル移動によって)消去されないように + // 後ろの方に移動してきた。 + /* 選択領域描画 */ + m_pCommanderView->GetSelectionInfo().DrawSelectArea(); + } + /* メッセージ */ if( PointCompare( originalSearchPos, searchPos ) < 0 ) { m_pCommanderView->SendStatusMessage(_T("▲末尾から再検索しました")); @@ -3218,10 +3224,6 @@ } else { // マッチ範囲で選択範囲を置き換える。 sel.DisableSelectArea( bRedraw ); sel.SetSelectArea( matchLayoutRange ); - if( bRedraw ){ - /* 選択領域描画 */ - sel.DrawSelectArea(); - } } /* カーソル移動 */ @@ -3230,6 +3232,15 @@ GetCaret().MoveCursor( matchLayoutRange.GetFrom(), bRedraw ); GetCaret().m_nCaretPosX_Prev = GetCaret().GetCaretLayoutPos().GetX2(); + if( bRedraw && !keepCurrentSelection ){ + // keepCurrentSelectionのときは不要っぽい。 + // ステータスバーに表示される選択領域のサイズが + // (たぶんカーソル移動によって)消去されないように + // 後ろの方に移動してきた。 + /* 選択領域描画 */ + sel.DrawSelectArea(); + } + /* メッセージ */ if( PointCompare( originalSearchPos, searchPos ) > 0 ) { m_pCommanderView->SendStatusMessage(_T("▼先頭から再検索しました"));
最終更新: 2012-07-01T14:27+0900
というわけで、CEditView::IsSearchStringからコピペコ
最終更新: 2012-12-05T05:04+0900
前に自分が引
変更フラグを管理してるのは CDocEditor。ドキ
<2012-06-25> ReDrawマクロの存在を教えてもら
現在の編集ウ
ィンドウを再描画します。何らかの原因で画面表示を最新状態に更新したい場合に使います。 【例】 ステ
http://sakura-editor.sourceforge.net/htmlhelp2/HLP000187.htmlータスバ ーを非表示にしたとき、メニ ュ ーバ ーの左側にステ ータス情報が表示されますが、フ ァイル名のチ ップ等で消されてしまうことがあります。そういう場合に使います。
なんで手動でやらそうとしたんだ……。
</2012-06-25>
<2012-07-04>
……左側右端に表示されるステ
/** OneTouchIndent.js * サクラエディタのマクロ。 * Tabキーに割り付けて使う。 * 前の行にならって同じインデント(Tab,Spaceなど空白文字全般)を挿入する。 * Enterをトリガーにしたオートインデントってイマイチじゃない? 一段深すぎたり、空行を挿入したかったりするときに削除の手間が必要で。 このマクロは、Tabキーを押す手間は必要だが、望まないインデントは行わない。 */ if (OneTouchIndent()) { Editor.ReDraw(); } else { Editor.IndentTab(); } function OneTouchIndent() // returns true(done) or false(undone) { // 文字列選択中はインデント文字の挿入ではなく、インデントを行いたい。 if (Editor.IsTextSelected) { return false; } var caret = eval(Editor.ExpandParameter("({y:$y-1, x:$x-1})")); // 前の行にならってインデントの文字と量を決定するので、先頭行では(デフォルトの)インデントを行いたい。 if (caret.y < 1) { return false; } var thisline = Editor.GetLineStr(caret.y+1); var prevline = Editor.GetLineStr(caret.y); var previdnt = prevline.match(/^(?:(?![\r\n])\s)*/)[0]; // 行頭の、改行を除く空白文字 // prevline[0...previdnt.length] // thisline[0...caret.x] if (previdnt.length <= caret.x) { return false; } if (previdnt.substring(0, caret.x) !== thisline.substring(0, caret.x)) { return false; } Editor.InsText(previdnt.substr(caret.x)); return true; }
気付くのが遅すぎるけど、インデントを深くしたいときには意識的にタブキ
最終更新: 2013-04-02T03:37+0900
348 :名無しさん@お腹い
っぱい。:2012/05/15(火) 20:41:18.84 ID:F7CbiPBA0 正規表現検索でグル
サクラエデープ化してる部分を全体一致とは別の色で表示するにはどうすればいいのでし ょうか? ィタふ ぁんくらぶ part15
こうですか? subpattern_highlight.patch(7.7KiB)
なんでこれでいけると思
subpattern_highlight.rev2.patch(7.8KiB)
再帰パタ
※ベ
最終更新: 2012-02-29T12:47+0900
と思わないでもないけど、Rubyマクロにはエデ
# coding: windows-31j $/ = "\r\n" $stdout.sync = true # putsした内容をすぐ flushして .jsが受け取れるように。 puts("[size = % 4d]" % $_.chomp.size) while gets
var RubyBin = "ruby"; var RubyScr = "script.rb"; var RubyExec = new ActiveXObject("WScript.Shell").Exec("\""+ RubyBin +"\" \""+ RubyScr +"\""); RubyExec.StdErr.Close(); /* (折り返し行でない)改行単位でのカーソル移動が「GoLineTop」しかなさそうなので、これを基にしてカーソル移動を行う。 ExpandParameterで $yの変化を監視する手もあるにはある。 */ // 開始地点(最終行)へ移動。 Editor.GoFileEnd(); Editor.GoLineTop(9); if (! Editor.GetLineStr(0)) { Editor.Up(); // skip [EOF] only line. } // 下から上へ一行ずつ処理する。 for (var linenum = Editor.GetLineCount(0); 1 <= linenum; --linenum) { if (RubyExec.Status != 0) { // if not running break; // 継続は無意味。 } RubyExec.StdIn.WriteLine(Editor.GetLineStr(0).replace(/(?:\r\n?|\n)$/, "")); // カーソル行の文字列をRubyに送る Editor.InsText(RubyExec.StdOut.ReadLine()); //カーソルを上の行の先頭へ移動 Editor.GoLineTop(9); Editor.Up(); } RubyExec.StdIn.Close(); RubyExec.StdOut.Close(); RubyExec.Terminate();
最終更新: 2011-12-14T19:35+0900
ヒアドキ
print <<HEAD, <<BODY HEAD BODY
みたいなのをどうするのか
p "" << <<"HEAD" <<"NECK" << <<"BODY" <head> HEAD <body> BODY #=> "<head>\nNECK<body>\n"
* 繰り返し付きグル
最終更新: 2011-08-21T01:48+0900
(?imx-imx) 孤立オプション i: 大文字小文字照合 m: 複数行 x: 拡張形式 (?imx-imx:式) 式オプション
補記 1. 文法依存オプション + ONIG_SYNTAX_RUBY (?m): 終止符記号(.)は改行と照合成功 + ONIG_SYNTAX_PERL と ONIG_SYNTAX_JAVA (?s): 終止符記号(.)は改行と照合成功 (?m): ^ は改行の直後に照合する、$ は改行の直前に照合するhttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
サクラエデ
ところで、mフラグは実装間で意味に一貫性が無く、また鬼車のフラグも間違いを誘うような名前をしているので注意が必要。みんな ECMAScriptに倣え!
+ 孤立オプションの有効範囲は、その孤立オプションを含んでいる式集合の終わりまでである 例. (?:(?i)a|b) は (?:(?i:a|b)) と解釈される、(?:(?i:a)|b)ではない
フラグの意味に加えて、その有効範囲の面倒くさいことよ。これに対処するくらいなら他の方法を考えるレベル。Onigmoは PCREみたいに、パタ
mフラグを OFFにする目的は何かといえば、JavaScriptと bregonigにおいては $ と ^ が改行前後にマ
「$ と ^ が改行前後にマ
最終更新: 2017-09-20T01:01+0900
新たなバグもなく、す
あと、rkw2フ
スペ
HTML.rkw2を自作しようとしてすごく面倒くさいというか、色分け方式の能力不足を感じた。
"move" して "exit" したときに、move元の Stateに戻るだけではなくその中の moveした Patternそのものに戻り、その次のパタ
それはち
そんなこんなで HTMLと CSSと JavaScriptの色分けを同時にするどころではなか
最終更新: 2013-11-24T02:49+0900
GreenPad, Alphaは復元されない。復元する派にもいろいろある。
選択状態の復元ではない。キ
これ理想。(@2013-11-23 2.1.6から 2.2現在まで、矩形選択後文字入力をアンド
惜しい。キ
最初はメモ帳の動作をまねて CDeleteOpeの UNDOと CInsertOpeの REDOに文字列選択処理を付け加えたらいいかと思
とりあえずこんな感じ。>undo_selectarea.rev1.patch(4.5KiB, 2011-06-11, trunk2@1923ベ
view/CEditViewへの依存を COpe.cppから view/CEditView_Command_New.cppへ移した。>undo_selectarea.rev2.patch(4.2KiB, 2011-06-12, trunk2@1923ベ
COpe派生クラスの実装と再生は同じ場所で行
削除し忘れたけど「CSelectOpeがあれば CMoveCaretOpeはいらないかもね。」というコメントは正しくない。CSelectOpeは今のところキ
不要にした。>undo_selectarea.rev3.patch(4.9KiB, 2011-06-12, trunk2@1923ベ
復元された選択範囲が正しくない。文字がない部分に選択範囲を広げられないためだ。それは、COpe属がすべてロジ
CLogicRangeや CLayoutRangeはコピ
選択始点の型がどうして CLayoutPointでなく CLayoutRangeなのか。答えがここにある。
矩形選択して選択した全ての行に文字を挿入するということをよくする。ABDと入力・挿入してい
「残念だ」と
矩形選択挿入/インデントを UNDO/REDOしたときにも選択状態を復元する>undo_selectarea.rev5.patch(13.1KiB, 2013-10-18, trunk2@1923ベ
テストはしていない(キリッ でも自分用の sakuraW.exeには取り込んだので今日から使用中。
「呼び出しごとにコピペしてね」とは上の方で書いたが、CSelectOpe(ロジ
UNDO/REDOコマンド関数が Command_CANCEL_MODEを呼び出す部分に書いたコメント
Command_CANCEL_MODE()は主に範囲選択のクリアと選択ロックの解除を行う。 範囲選択のクリア(再描画あり)を行うと CSelect(L)Opeで範囲選択を復元したときにちらつく。 かといって、CSelect(L)Opeが含まれていないときは従来通りクリアを行いたい。 どうするか。再描画なしでクリアする。方法は Command_CANCEL_MODEに redrawフラグを渡すこともできるが Command_CANCEL_MODEの中身をコピペしてフラグだけ書き換えることにする。
範囲選択を解除する必要があるのは挿入/削除操作(CInsertOpe/CDeleteOpe)の都合かも知れない。それらの Opeの再生部分に Command_CANCEL_MODEを移動するのが3番目の方法(選択のキ
COpeで一番に改善が必要なのはメモリ確保の戦略だという気もする。1単位の UNDO/REDOのためにひとつの COpeBlkとひとつ以上(4以下くらい。CSelect(L)Opeでサンドイ
COpe派生クラス(CInsertOpe/CDeleteOpeとか)の再生の前後でキ
そういうのはまとめて CViewSelectのコピ
* @2013-10-18 COpeに本物のポリモ
最終更新: 2011-06-05T22:03+0900
タイプ別設定一覧ダイアログの見せ方だけで、並べ替えたり可変長に見せかけて(実は上限は30で変わらない)削除・追加を受け付けたりできるよね。
それが行われるとフ