メインコンテンツへスキップ
見出し画像

サクラエディタを改修してるんよっ🌸

    Header illustration:
    ウスダヒロ(Hiro Usuda)

    ⭐️カラーフォント(emoji)対応!✨

    画像
    リガチャにも対応中……

    ⭐️マルチカーソルも対応中(wip)

    サクラエディタは、日本製のWindows用テキストエディタで、フリーウェアとして配布されています。
    この独自ビルドは v2.3.2.0 をベースに機能改善及び機能追加、実行ファイル単一化を目指して手を入れています。公式では v2.4.3.0 がリリースされましたね。今はベースが古いので2.4系をベースにしたいなぁと思ったり。。。

    📥 ダウンロード & 使い方

    インストール方法(ポータブル動作対応)

    1. 上記リンク(GitHub Releases)から最新の `sakura-fix-xxxx.zip` をダウンロードして解凍します。

    2. 念のため既に使用しているサクラエディタのバックアップを取ることをお勧めします。

    3. 解凍されたフォルダ内の `sakura.exe` を上書きまたは起動してください。

    4. 既存の設定(sakura.ini)の引き継ぎも可能です(同階層に配置するか、設定の引き継ぎを行ってください)。

    ・bregonig190130.zip … 正規表現ライブラリ(bregonig.dll 32/64)
      → 再配布可なので探している人向け。

    📝 追加機能とかの説明


    画像
    検索ボックスが邪魔にならないように(モダン化)
    スクロールバーに検索結果を表示✨
    画像
    [キー割り当て]
    キーセットの追加解除をやりやすく、ショートカットの確認にも。
    できることは既存の [キー割り当て] と同じ。
    画像
    [コマンドパレット]

    ⭐️ 機能(抜粋)

    • DirectWriteを使った絵文字(emoji)の描画(カラーフォント)、合字対応(emojiのみ)

    • 検索結果、ブックマークの位置をスクロールバーに表示(マークをクリックでジャンプ可)

    • 正規表現はDLLがなくても使える(PCRE2)

    • 新しいキー割り当て(実験機能)

    • 置換で置換前と置換後をプレビューで確認可能

    • 文字削除/Undo/Redoの高速化

    • アウトライン解析の表示高速化

    • 行ソートのふるまいを修正

    • UIフォントにシステムフォントを使用

    🖼️ スクリーンショット

    ステータスバーなどに各種情報や設定の追加を行っています。また、描画関連にも手を加えています。

    画像

    検索画面は Visual Studioを意識した形にしています。スクロールバーにはカーソル位置、検索対象がある位置、ブックマーク位置が表示されます。

    画像
    巨大ファイルでの検索でもUIをブロックしなくなりました

    Grepでは指定できるフォルダBOXを増やし、編集中のファイルから探す項目を使いやすくしました。また、正規表現のバグも修正してあります。

    画像

    置換では、置換前と置換後をプレビューで確認することができます。このおかげでやってみなきゃわからない状態から、ライブ的に試すことが可能になります。

    画像

    🔨 改修内容

    修正がどれだけ需要があるのか知りたいところです。遠慮なく質問・指摘・提案、お願いします。

    ファイル / 設定 / 機能

    • ファイルの復元機能(未保存の新規、編集中の既存ファイル)⭐

    • 強調キーワードをCSVファイル(sakura.keywordset.csv)で外部一元管理でき、共通設定側でも読込中の内容をプレビュー表示

    • タイプ設定をタイプ設定一覧に統合し、任意タイプの追加や個別の表示/非表示を設定可能に✂️

    • タイプ別設定の配色を統一し、見た目に一貫性を持たせつつ設定をシンプル化(カラー設定インポート時はカラー情報のみを適用可能)

    • キー割り当て/ツールバー/カスタムメニューを初期状態に戻す [初期化] ボタンを共通設定に追加

    • キー割り当てのエクスポート時、各キーに割り当てた機能名(コマンド名)も一緒に出力

    • 新しいキー割り当てレイアウト(実験機能)を追加⭐️

    • 履歴を別ファイル「sakura.recent」に独立出力(従来通り .ini に含める設定も可能)✂️

    • 起動時に存在しないファイル・フォルダの履歴を自動削除(任意)

    • 「既に開いているファイルを開いたとき新しいウィンドウで開く」オプションを追加

    • バージョン情報画面から使用ライブラリのライセンスを確認できるように対応

    描画・見た目 / 表示・編集

    • DirectWriteを使用し、絵文字などのカラー文字をそのままカラー表示(絵文字混在行でのルーラー桁位置ズレも補正)⭐️

    • 文字描画のキャッシュ処理(既定ON/共通設定でOFF可能)および GlyphAtlasCache(一括描画)により表示を高速化⭐️

    • 半角スペースを「・」、NBSP(特殊空白)を「␣」(または「×」)で可視化

    • タブ文字の矢印に加えシンプルな線で描画

    • EOFのみの行にも行番号を表示

    • コメント行の背景カラーを改行以降も継続して描画

    • 空白、タブ、改行、EOF、ノート線のカラーにテキストカラーを統一適用

    • 選択範囲描画時、元のテキスト(フォント)カラーは保持したまま背景カラーのみを適用

    • カーソルがある行の行番号を背景色で強調し、現在位置を分かりやすく表示

    • 変更した行(行番号の右側)およびブックマークした行(行番号の左側)を縦線(背景色)で表示(行番号非表示時も識別可能)

    • 検索結果・ブックマーク・カーソル位置をスクロールバー上にマーク表示し、ファイル全体から一目で探せるように強化⭐️

    • スクロールバーをシステム標準(OS準拠)の細いデザインに変更

    • 行間を下側に揃えて詰まった印象を軽減

    • カーソル移動挙動を修正(上端↑で行頭←移動、終端↓で行末→移動)✂️

    UI / 操作性

    • 検索ダイアログをタイトルバーのないフローティングパネル風(Visual Studio風)に一新し、インクリメンタル検索に対応⭐️

    • コマンドパレット(機能の集約)⭐

    • 置換ダイアログの「置換後テキスト」に、初期値として「置換前テキスト」を自動セット

    • 置換ダイアログにプレビュー機能追加⭐

    • Grepのフォルダ指定ボックスを3つに増やし、除外フォルダ指定用ボックスを独立化(「現在編集中のファイルから探す」の使い勝手を向上)

    • Shift+マウスホイールでの水平スクロールに対応

    • タブをダブルクリックで閉じる機能を追加

    • タブ選択(アクティブ化)のタイミングをマウス押下時に変更しレスポンス向上(誤ドラッグによるタブ順序入れ替えや切り替えを時のちらつきを軽減)⭐️

    • タブの右クリックメニューから「同じファイルを別ウィンドウで複製して開く」を追加

    • 選択中のタブの下にアクセントカラーの線を表示して見分けやすく強調

    • ステータスバーのカスタマイズ機能を追加(左クリックでメニュー表示、タイプ名表示など)

    • メインメニューは常にデフォルトを使用し、設定タブから排除、アイコン付きメニューの改善

    • 最近使ったファイル/フォルダ履歴の表示を改善(長いパスの短縮表示、ファイルサイズ表示、アクセラレータ文字の非表示)

    • 各種ダイアログを編集領域の中央に配置し、リソースフォントを「MS Shell Dlg」へ変更

    • タグファイル作成時、フォルダの初期値を tags または ctags.cnf ファイルがある階層まで自動探索

    マクロ / 検索 / ライブラリ

    • WSHが使えない環境でも動くJavaScriptエンジン「QuickJS(拡張子 .qjs)」「VBScript(Tiny)」に対応(従来のWSHマクロも併用可能)⭐️

    • 正規表現用の外部DLL(bregonig.dll)が無い環境でも、標準でPCRE2エンジンを使った正規表現の検索・置換・強調表示が可能⭐️

    • 64bit環境ではPPA.dllが使用できないので Pascal風マクロを組み込み(拡張子は .pas

    • v

    • プログラミング言語ごとに数値の色分け精度を向上(C/C++, Java, C#, JavaScript, PHP, Python, Ruby, Perl, VB, Pascal, CSS, アセンブラ等)

    • 行番号の表示切り替えマクロ(S_SwitchDispLineNumber)を追加

    • タブ幅切り替えマクロ(S_ChangeTabWidth)を調整(負の値設定で入力文字をタブと空白で相互切り替え)

    パフォーマンス / 安定性

    • メモリ確保の仕組みを見直し(mimalloc 採用)、全体動作および Undo/Redo(文字削除など)を高速化⭐️

    • Undo履歴の上限(使用容量)を設定可能にし、メモリ圧迫を防止

    • 長大な内容を扱った行のメモリ領域をファイル保存時に自動解放(Shrink)

    • 文字数カウントおよびカーソル移動処理を高速化し、巨大ファイルでも重くならないよう改善

    バグ🐛(バグに近いモノ)の修正

    • 検索マーク切り替え、インクリメンタルサーチの際に検索ダイアログの「正規表現」が影響を受けてしまうのを修正(公式では仕様?)

    • Grep「現在編集中のファイルから検索」をチェックした時の状態がほかに影響を与えてしまうので修正(公式では仕様?)

    • 折り返しモードをトグルで切り替えたときに「折り返さない」が処理されていないのを修正

    • 文字列を選択時、選択範囲のカラー装飾の影響を受けないように修正

    • タブ表示、間に選択タブがあると右側のエッヂがないバグを修正

    • 行番号が非表示でブックマークが表示のときブックマークが表示されないのを修正

    • アウトライン解析ダイアログのツリーをダブルクリックで展開 / 縮小できるように修正

    • ルールファイルを設定してアウトライン解析をするとデフォルトが逆順になっているのを修正

    •  行番号背景描画が行番号縦線をはみ出しているバグを修正 

    • タブ切り替え時にタブ順序がおかしくなるバグの修正(実験中)

    • 共通設定/タイプ別設定の上書き巻き戻り対応(同時設定の禁止)

    • 桁、文字数をサロゲートペアを考慮(全角2桁を1文字)して算出

    その他

    • スクロールバーの更新頻度を少なくす

    • ExtTextOutによる塗りつぶしをPatBltに変更

    • WM_ERASEBKGNDの抑制 

    外部ライブラリ

    • PCRE2(sljit) … 正規表現(フォールバック)

    • mimalloc … メモリ管理

    • QuickJS … JavaScript(マクロ)

    旧公式パッチのマージ SourceForge

    公式から取り込み github

    • pull request:#263 from m-tmatma/feature/share-mode-not-exclusive

    • pull request:#267 from m-tmatma/feature/no-wrap-text-default

    • pull request:#137 from berryzplus/bugfix/fix_of_typeprop_import

    • pull request:#211 from beru/no_hwndProgress_when_bGrepRunning

    • pull request:#232 from m-tmatma/feature/copyright-2018

    • pull request:#125 from beru/file_loading_speed_up

    • pull request:#236 from yoshinrt/fixup_dogrep_localvar_init

    • pull request:#77 from beru/grep_speed_up

    マクロ

    マクロ関係がありますのでよかったら使ってみてください。


    独自拡張で使用できるもの

    keyword_pack.zip(2017/06/16)

    キーワードセット集 patchunicode:#720 対応


    Cregit


    Illustrator:ウスダヒロ(Hiro Usuda)

    当記事のヘッダに使用させてもらっています。感謝!

    Moderator:遊月(Yu-zuki)

    改変者。お手伝い募集中。

    Copyright © 2024, Yu-zuki & CAT-ech Co.,

    #サクラエディタ #テキストエディタ #windows #directwrite #オープンソース #プログラミング #note
    #sakura #texteditor #oss

     
     

    遊月

     
     
    うつ回復期✨社会恐怖症。 SESなエンジニア (元ゲームPG) 日々学習、プログラミング、アニメゲーム、ドール、天然石が好き。 日記を中心に様々な情報をお届け。生成AIで遊んでます。 🗒️'20/6/8~

    あなたへのおすすめ