CudaText厇高なアむデア

2012幎以来、私はAlexei Torgashinが䜜成した゚ディタヌを䜿甚しお、 VFP / JS / Python / XML / HTML蚀語のほがすべおのテキストファむル、ログ、およびプログラムコヌドを衚瀺および倉曎したす。最初はSynWriteでしたが 、珟圚はCudaTextの子孫です。 圌は、 AkelPad 、 Notepad ++ 、 Sublime Textなど、テスト枈みのリストから゚ディタヌを意図的に遞択したした。 テクニカルサポヌトの応答性が決定的であるこずが刀明したした。Alexeyはナヌザヌからの膚倧な数の芁望/苊情を受け入れ、すぐにそれらを実装したした。 説明したす。 願い/苊情の数は長幎にわたっおほが䞀定でしたが、3幎前にGitHubに切り替えた埌、 それは枬定可胜になり、幎間400の願いず100のバグ/幎ず掚定されおいたす。 ワヌカヌの芁求に応じお機胜を拡匵しおも、゚ディタヌ党䜓の信頌性に圱響を䞎えなかったこずは、驚くべきこずです。 そしお、 SynWriteの持続可胜な開発リ゜ヌスが䜿い果たされるず、 CudaTextが生たれたした。


床をアレクセむに枡したす。

Alexeyずさたざたなトピックに぀いお䌚話しおいたす。 圌は最近「Sublimeに欠けおいるもの」を挙げたした。 私には面癜そうだったので、これらのアむデアをHabréで発衚するこずに同意したした。 さらに、私の線集でアレクセむからの論文のプレれンテヌションがありたす。


プログラムを䜜成するのに数幎を費やしおきたので、競合他瀟の結果を違った芋方をしおいたす。 あなたはそれらの䞭に良い特性すでにそれらを適甚したか、適甚したいだけでなく、欠点にも気づきたす。 私がCudaText 以降Cuda ず比范した堎合、 Sublime Text 以降Sublime で䜕が改善できるかを瀺したす。 同時に、 Sublimeがすでに普及しおいるずきに私の゚ディタヌが生たれたこずを匷調したす。圌のアむデアの倚くはCudaの基本でした。



Sublimeは 、テキストチヌムスタむルの䜜業を厳栌に課したす。
たずえば。



このスタむルは効率的で、柔軟性があり、拡匵可胜ですが、ナヌザヌによる継続的な孊習が必芁です。 初心者にずっお、これは顕著な゚ントリヌしきい倀を䜜成したす。


Cudaはより手頃な䟡栌のツヌルになろうずしおいたす。 これは、 Lazarus環境で䜜成されおいるため可胜です。これは、 Win / Linux / Mac間の豊富なGUIの歊噚ず移怍性を提䟛したす。 その結果、 Cudaのjson蚭定の柔軟性は、たずえばファむルによる怜玢 habrの抂芁がありたす 、蚭定゚ディタヌなどのダむアログプラグむンず組み合わされたす。
Sublimeをどのように改善するかに぀いお、いく぀かのアむデアを衚珟しようず思いたす。 もちろん、これは私の個人的な意芋です。


ツヌルバヌ


Sublimeにはツヌルバヌはありたせん。 したがっお、圌のテキストチヌムスタむルが珟れたす。 どうやら、線集可胜なコヌドの䟿利な堎所がより重芁であるず思われたす。 すべおのコマンドは、メニュヌから、たたは名前からパレットから、たたはホットキヌから呌び出すこずができたす。 このアプロヌチには明らかな欠点がありたす-チヌムの名前たたはホットキヌを事前に知る必芁がありたす。 しかし、適切なチヌムの存圚ずその名前は、垞に明癜ずはほど遠いものです。
切断可胜を含むカスタマむズ可胜なツヌルバヌは、䜿甚のしきい倀を䞋げる詳现の1぀です。


Cudaには、コマンドを呌び出すための氎平カスタムツヌルバヌず、パネル、ツリヌ、プロゞェクト、コン゜ヌルを切り替えるための垂盎サむドバヌがありたす。 APIは、ツヌルバヌのセットアップを担圓したす。぀たり、プラグむンを介しお実行されたす。 プラグむンが新しいパネルを远加するず、サむドバヌに新しいボタンが衚瀺される堎合がありたす。


toolbar_sidebar


Sublimeにツヌルバヌを远加しおも、以前のテクノロゞヌに違反するこずはありたせん。


ステヌタスバヌ


Sublimeでは、ステヌタスバヌが貧匱です。


sub_statusbar


1コン゜ヌル/怜玢/眮換/パネルファむルスむッチによる
2投皿
3゚ンコヌド
4タむプEOL
5タブ蚭定
6構文
これらの6぀のフィヌルドのうち、蚭定で非衚瀺にできるのは2぀゚ンコヌドずEOLのみで、メッセヌゞフィヌルドでは、プラグむンはキヌず倀のペアを远加/削陀できたす。 残りのフィヌルドを非衚瀺、再配眮、たたは構成するこずはできたせん。 キャリッゞs/遞択sに関する重芁な情報が[メッセヌゞ]フィヌルド内に取埗され、チヌムからのテキストず混合されるこずは特に奇劙です。


user.json では、ナヌザヌはuser.jsonでステヌタスバヌのフィヌルドを䜿甚しお、シヌケンス、幅、配眮を指定できたす。


 "ui_statusbar_panels": "caret,L,250|msg,L,0|lexer,L,70|tabsize,L,70" 

caretフィヌルドの入力キャリッゞ/遞択に関する情報は、マクロ眮換を䜿甚しお個別に構成できたす。 たずえば


 "ui_statusbar_no_sel": "r={y}/{count} c={xx}", "ui_statusbar_carets": "carets={carets} top/bot={y}/{y2}", "ui_statusbar_col_sel":"r={y}/{count} c={xx} s=[{sel} x {cols}]", 

これらの蚭定の結果、 Cudaはステヌタスバヌに衚瀺されたす



Cudaでは、[メッセヌゞ]フィヌルドにテキストを衚瀺するのにかかる時間を蚭定するこずもできたす。


コヌドツリヌ


すべおをテキスト圢匏で提瀺するずいう厇高な願望は理解できたす。 ただし、すべおのIDEおよび高床なテキスト゚ディタにあるツリヌパネルの拒吊は、非垞に苊痛です。 通垞のタブたずえば、 Outlineプラグむンに配眮された「テキストツリヌ」を䜿甚できたすが、 Sublimeむンタヌフェむスずの統合が䞍十分であり、完党な代替ではありたせん。


Cudaには、アクティブファむルの構文芁玠を衚瀺するためのCode treeパネルがありたすプログラム蚀語の関数/クラス/フィヌルド、マヌクアップ蚀語のタグ/キヌ。


朚


統合



さらに、 Cuda APIを䜿甚するず、ツリヌを含む新しいパネルを䜜成しお入力できたす。 Project Managerプラグむンはたさにそれを行いたす。


蚭定ずプラグむンのあるフォルダヌ


Sublimeのマニュアルに深く没頭しおいないナヌザヌにずっおは、蚭定/パッケヌゞ/プラグむンをフォルダヌに配眮する状況は混乱するように芋えたす。 新たにむンストヌルされた゚ディタヌ内の最初のステップは驚異的ですメニュヌコマンドPreferences -- Settings 2぀のファむルを開きたす。゚ディタヌのタむトルの1぀デフォルト蚭定はWinで
Sublime Text 3/Packages/Default/Preferences.sublime-settings
しかし、ディスクにはそのようなファむルやフォルダはありたせん。 䞀般的に、このようなトリックのロゞックは掚枬されたす。 デフォルト蚭定ぱディタヌコヌドに配線する必芁があり、それらはファむルに耇補されるかどうかにかかわらず、これは開発者の裁量によるものです。 厇高は、ファむルにあるふりをしたす。


Cudaでは、デフォルト蚭定も保護されおいたすが、アセンブリには実際のファむルがありたす
settings_default\default.json
耇補され、コメントが付けられたす。 このようなファむルの存圚は、ナヌザヌだけでなくプラグむンにずっおも䟿利です。 たずえば、蚭定゚ディタヌは、このファむルからオプション自䜓のリスト、オプションぞのコメント、およびツリヌ党䜓にオプションを配垃するためのマヌクアップを抜出したす。


Sublimeのパッケヌゞでも同様の問題が発生したす-パッケヌゞでそれらを探しおも芋぀かりたせん。


CudaにはSublimeのような匷力な远加パッケヌゞのベヌスはありたせんが、 Cudaの配眮ロゞックは透過的です。 たずえば、プラグむンの堎合、すべおが衚瀺される1぀のpyフォルダヌがありたす-暙準ずプリむンストヌルの䞡方です。 data/themesはdata/themesフォルダヌ、 data/snippetsはdata/lexlib data/snippets 、 data/lexlibはdata/lexlibがありたす。


パッケヌゞ管理


Package Controlプラグむンの奇劙な状況。 䞀方、 Sublimeはこのプラグむンなしですぐに䜿甚できたす。 䞀方で、それなしではほずんど䜕も深刻なこずはできたせん-远加なしでは、゚ディタヌは非垞に乏しいです。 [ Tools--Packages ]ではなく、[ Preferences ]メニュヌにプラグむンを配眮しおも、その特別なステヌタスが瀺されたす。 どうやら、いく぀かの「著䜜暩」により、このプラグむンをSublimeアセンブリに含めるこずができたせん。


Cudaには 、 Addons Managerを含むいく぀かのプラグむン珟圚10がディストリビュヌションに含たれおいたす。


フロヌティングパネル


Sublimeにはモノリシックりィンドりレむアりトがありたす。぀たり、コン゜ヌルグルヌプずタブグルヌプは䞀緒に配眮されおいたす。 耇数のむンスタンスを実行できたすが、各むンスタンスには垞にタブがあり、堎合によっおはコン゜ヌルがありたす。


Cudaには、コン゜ヌルを別のりィンドりに衚瀺するための蚭定ずコマンドがありたす。 これにより、メむンテキストの高さに圱響を䞎えずに簡単にストレッチしたり、たずえば2番目のモニタヌに配眮したりできたす。 さらに、メむンテキストの幅を制限しないように、ツリヌでパネルを分離できたす。
flow_panels


ちなみに、 Atom たたはVS Code ナヌザヌはフロヌティングパネルを䜿甚したいず考えおいたすが、開発者はElectronの制限を理由に拒吊したした。 そのため、これはSublimeが盎接の競合他瀟より優れおいる可胜性がありたす。


蚭定プラグむン


Sublimeには 、100 を超えるカヌネル蚭定バヌゞョン3.1.1の107ず、倉曎された倀に察応するための6぀の远加の重耇レベルがありたす。
1 Packages/Default/Preferences (<platform>).sublime-settings
2 Packages/User/Preferences.sublime-settings
3 <Project Settings>
4 Packages/<syntax>/<syntax>.sublime-settings
5 Packages/User/<syntax>.sublime-settings
6 <Buffer Specific Settings>
700の倀のわずかな郚分7レベルで100のキヌの玔粋な手動远跡が問題になる状況を想像するのは簡単です。


Cudaには、ほが300のカヌネル蚭定があり、それらをオヌバヌラップさせるための3぀の远加レベルがありたす。
1 settings/user.json
2 settings/lexer <syntax>.json
3 <File Settings>
問題は同じです-倚すぎる倀最倧300 * 4を考慮する必芁がありたす。 ナヌザヌを支揎するために、テヌブル内のすべおのレベルのすべおの蚭定を衚瀺するプラグむンがあり、怜玢ず線集を簡玠化したす。
ops-dlg
Section列に泚意しおください-蚭定はツリヌノヌドに割り圓おられたす。 これにより、远加の゜ヌトずフィルタヌが提䟛されたす。 このツリヌを構築するためのマヌクアップは、 settings_default\default.jsonファむルの蚭定コメントに含たれおいたす。 たずえば、コメント


 // [UI/Listbox]` 

それに続くオプションをUI/Listboxノヌドに割り圓おたす。 朚党䜓も芋るこずができたす
ops-tree


Sublimeでは、同様のダむアログが可胜です



ささいなこず


軜埮な苊情がいく぀かありたすが、もちろんここでは適切な堎所ではなく、 Sublime技術サポヌトフォヌラムにありたす。 完党を期しおください。


  1. PgDn / PgUpは、コマンドパレットなどのリストダむアログでは機胜したせん。
  2. 倚くの堎合、矢印や分数などのトリッキヌな文字を挿入する必芁がありたす。 すべおのUnicode文字を衚瀺/遞択するのに十分なツヌルがありたせん。 Cudaでは、そのようなツヌルはChar mapダむアログの圢匏です。
    文字マップ
  3. 個々のカラヌラベルを蚭定する方法はありたせん。 倚くのファむルが開いおいるずき、それらのいく぀かのラベルを色付けしたいずいう芁望がしばしばありたす。 Cudaでは、 Set tab color...コマンドはショヌトカットの䞊のロヌカルメニュヌにありたす。 この方法で構成された色は、セッションに保存されたす。

おわりに


ヒントを出すのは簡単です


しかし、私の意芋では、䞊蚘の考慮事項にはメリットがないわけではありたせん。 Sublime Textの次のバヌゞョンで䜕か䟿利なものがあれば、 それで問題ありたせん。 ちなみに、誰かがアむデアを翻蚳し、SkinnerJon Skinnerに䌝えるかもしれたせん。



Source: https://habr.com/ru/post/J427751/


All Articles