コードエディタは、インデントを使用せずに、コードのネストレベルを効果的に示唆できますか?[閉まっている]


233

同じXMLテキストに2つの表示オプションを提供するXMLテキストエディターを作成しました。1つはインデント(仮想)、もう1つは左揃えです。左寄せビューの動機は、XMLコンテキストの自動化された副作用であるインデントの干渉なしに、ユーザーがプレーンテキストまたはXPathコードのインデントに使用している空白文字を「見る」のを支援することです。

私は、ユーザーを支援する左寄せモードの視覚的な手がかりを(エディターの編集不可部分で)提供したいと思いますが、あまり複雑になりません。

接続線だけを使用してみましたが、それは忙しすぎるようでした。私がこれまでに思いついた最高のものは、下のエディターのモックアップされたスクリーンショットに示されていますが、私はより良い/より簡単な代替手段を探しています(コードをあまり必要としません)。

コードエディタのネストレベルの表示

[編集]

ヒートマップのアイデア(@jimpから)を取得すると、これと3つの選択肢が得られます-a、b、cというラベルが付けられています。

最初のアイデア

次のセクションでは、受け入れられた回答を提案として説明し、他の多くの回答やコメントからアイデアを集めます。この質問は現在コミュニティwikiであるため、お気軽に更新してください。


NestView

インデントを使用せずにネストされたコードの可読性を向上させる視覚的な方法を提供するこのアイデアの名前。

等高線

NestView内の異なる影付きの線の名前

ここに画像の説明を入力してください

上の画像は、XMLスニペットを視覚化するために使用されるNestViewを示しています。この図ではXMLを使用していますが、この図ではネストを使用する他のコード構文も使用できます。

概要:

  1. 等高線は、ネストレベルを伝えるために(ヒートマップのように)シェーディングされています

  2. 等高線は、ネストレベルが開いているか閉じているかを示すために角度が付けられています。

  3. 等高線は、ネストレベルの開始点を対応する終了点にリンクします。

  4. 等高線の幅を組み合わせることで、ヒートマップに加えて、ネストレベルの視覚的な印象が得られます。

  5. NestViewの幅は手動でサイズ変更できますが、コードが変更されても変更しないでください。これを維持するために、輪郭線を圧縮または切り捨てることができます。

  6. 空白行は、テキストをより消化しやすい塊に分割するためにコードを使用する場合があります。このような行は、NestViewで特別な動作をトリガーする可能性があります。たとえば、ヒートマップをリセットしたり、背景色の等高線を使用したり、あるいはその両方を行うことができます。

  7. 現在選択されているコードに関連付けられている1つ以上の等高線を強調表示できます。選択したコードレベルに関連付けられた等高線が最も強調されますが、ネストされたグループを強調表示するのに役立つ他の等高線も「点灯」できます。

  8. さまざまな動作(コードの折り畳みやコードの選択など)を、等高線のクリック/ダブルクリックに関連付けることができます。

  9. 等高線の異なる部分(リーディングエッジ、ミドルエッジ、またはトレーリングエッジ)には、異なる動的な動作が関連付けられている場合があります。

  10. 等高線上のマウスホバーイベントでツールチップを表示できます。

  11. NestViewは、コードが編集されると継続的に更新されます。ネスティングのバランスが取れていない場合、ネスティングレベルが終了する場所を想定できますが、関連する一時的な等高線は警告として何らかの方法で強調表示する必要があります。

  12. 等高線のドラッグアンドドロップ動作をサポートできます。動作は、ドラッグされる等高線の部分によって異なる場合があります。

  13. エラーや状態の変更のための行番号付けや色の強調表示など、一般的に左マージンにある機能は、NestViewにオーバーレイする可能性があります。

追加機能

この提案はさまざまな追加の問題に対処します。多くは元の質問の範囲外ですが、有用な副作用です。

ネストされた領域の開始と終了を視覚的にリンクする

等高線は、ネストされた各レベルの開始点と終了点を接続します

現在選択されている行のコンテキストを強調表示する

コードが選択されると、NestViewの関連するネストレベルを強調表示できます。

同じネストレベルでコード領域を区別する

XMLの場合、異なる名前空間に異なる色相を使用できます。プログラミング言語(c#など)は、同様の方法で使用できる名前付き領域をサポートします。

ネスト領域内の領域を異なる視覚ブロックに分割する

読みやすくするために、コードに余分な行が挿入されることがよくあります。このような空のラインは、NestViewの等高線の彩度レベルをリセットするために使用できます。

複数列のコードビュー

インデントなしのコードは、ワードラップまたは水平スクロールが必要になる可能性が低いため、複数列ビューの使用をより効果的にします。このビューでは、コードが1つの列の下部に到達すると、次の列に流れます。

ここに画像の説明を入力してください

視覚的な補助を提供するだけではありません

概要で提案されているように、NestView 、TreeViewコントロールに期待されるものとほぼ一致する幅広い編集および選択機能を提供できます。主な違いは、一般的なTreeViewノードには、エキスパンダーとノードアイコンの2つの部分があることです。NestViewの輪郭線には、オープナー(傾斜)、コネクタ(垂直)、およびクローズ(傾斜)の3つの部分があります


インデントについて

NestViewは、インデントされていないコードを補完しますが、従来のインデントされたコードビューを置き換えることはほとんどありません。

NestViewを採用するソリューションは、空白文字を含むコードテキスト自体に影響を与えることなく、インデントされたコードビューとインデントされていないコードビューをシームレスに切り替える方法を提供する可能性があります。インデントビューのテクニックの1つは「仮想フォーマット」です。タブまたはスペース文字の代わりに動的な左マージンが使用されます。NestViewを動的にレンダリングするために使用される同じネストレベルのデータは、より従来型のインデントビューにも使用できます。

印刷

インデントは、印刷されたコードを読みやすくするために重要です。ここでは、タブ/スペース文字と動的な左マージンがないため、テキストは右マージンで折り返されても、インデントされたビューの整合性が維持されます。行番号は、コードがワードラップされる場所とインデントの正確な位置を示す視覚的なマーカーとして使用できます。

ここに画像の説明を入力してください

画面の不動産:フラット対インデント

NestViewが貴重な画面の不動産を使用するかどうかの質問に対処します。

等高線は、コードエディターの文字幅と同じ幅でうまく機能します。したがって、12文字幅のNestView幅は、等高線が切り捨て/圧縮される前に12レベルのネストに対応できます。

インデントビューが各ネストレベルに3文字幅を使用する場合、ネストが4レベルのネストに達するまでスペースが節約されます。このネストレベルの後、フラットビューには、各ネストレベルで増加するスペース節約の利点があります。

注:コードには4文字幅以上のインデントが推奨されることがよくありますが、XMLは多くの場合それよりも少なく管理されます。また、仮想フォーマットでは、配置の問題のリスクがないため、使用するインデントを少なくすることができます

2つのビューの比較を以下に示します。

ここに画像の説明を入力してください

上記に基づいて、ビュースタイルの選択は、画面の不動産以外の要因に基づいていると結論付けるのがおそらく公平です。1つの例外は、たとえばNetbook / Tabletや複数のコードウィンドウが開いているときなど、画面スペースが限られている場合です。これらの場合、サイズ変更可能なNestViewが明確な勝者のようです。

ユースケース

NestViewが便利なオプションである可能性のある実際の例の例:

  1. 画面の不動産が重要な場合

    a。タブレット、メモ帳、スマートフォンなどのデバイス

    b。Webサイトでコードを表示する場合

    c。複数のコードウィンドウをデスクトップに同時に表示する必要がある場合

  2. コード内のテキストの一貫した空白インデントが優先される場合

  3. 深くネストされたコードのレビュー用。たとえば、サブ言語(たとえば、C#のLinqまたはXSLTのXPath)が高レベルのネストを引き起こす場合があります。

アクセシビリティ

視覚障害のある人を支援し、環境条件や個人の好みに合わせてサイズ変更と色のオプションを提供する必要があります。

ここに画像の説明を入力してください

編集したコードと他のシステムとの互換性

NestViewオプションを組み込むソリューションは、理想的には、インポートされたコードから先頭のタブ文字とスペース文字(書式設定の役割のみがあると識別される)を除去できる必要があります。その後、コードを削除すると、左揃えのビューとインデントされたビューの両方でコードをきれいにレンダリングできます。ホワイトスペースを認識しないマージツールや差分ツールなどのシステムに依存している多くのユーザーにとって、これは大きな懸念事項です(完全なショーストッパーではない場合)。


その他の作品:

重複するマークアップの視覚化

2004年以降のWendell Piezによる公開された研究は、重複するマークアップ、特にLMNLの視覚化の問題に取り組んでいます。これには、NestViewの提案と非常によく似たSVGグラフィックスが含まれます。そのため、ここでは承認されています。

視覚的な違いは画像で明確です(下)。重要な機能上の違いは、NestViewはネストされたXMLまたはコードのみを対象としているのに対し、Wendell Piezのグラフィックは重複したネストを表すように設計されていることです。

ここに画像の説明を入力してください

上記のグラフィックは、 http://www.piez.org から-親切な許可を得て-複製されました

ソース:

  1. Hermenuticマークアップに向けて
  2. LMNLへの半分のステップ

6
私はあなたに本当の答えはありません、ただの意見です。あなたの例を見ると、Bが私の好みです。「ヒートマップ」は最初の例のようにミラーリングするのではなく、実際にインデントをたどり、Cが行うので、私にとっては際立っています。Aも実際のインデントに従いますが、Bは実際のxmlがインデントされるときに表示されるものに似ています。2番目の例は、私の好みには単純に「堅実」です。
マルジャンヴェネマ

4
私は自分でインデントされたコードを好むでしょう。これのメリットがわからない?明らかな何かが欠けていますか?(これがネガティブに聞こえることを本当に意図していない。)
クリス

9
100%の行で大きなマージンをとることが、各行が必要とするだけのマージンをとるよりも良いとは思えません。
ジョンギーツェン

1
@ジョン・ギーツェン。目的は、画面の不動産を保存することではありません(多くの場合、これは効果かもしれません)。それが重要な場合、空白文字をより厳密に制御できるようにします-インデントされたビューは引き続き提供されます(ただし、パディング文字を使用しない仮想)。
pgfearo

3
この質問は、UXの質問であるが移行するには古すぎるため、トピック外としてこの質問を終了することに投票しています。
ラチェットフリーク

回答:


104

ここで自分の質問に答えようとしましたが、これは@jimpのヒートマップのアイデアと、@ Andreaの「XMLに近づける」アイデアを取り入れています。

ここに画像の説明を入力してください

ヒートマップの色と角度のある線が開始タグと終了タグの間に目を引くのに役立つことを願っています。水平線セパレータを削除すると、開始から終了までの「フロー」が改善されます。ユーザーが要素を使用して選択すると、ヒートマップ内の一致する部分が何らかの方法で強調表示されます。

編集これ を使用することにしました。おそらく、色のユーザーオプションが必要になります。「プロダクション対応」スクリーンショット:

ここに画像の説明を入力してください

そして、比較のために...代替のインデントされたビュー:

ここに画像の説明を入力してください

より深くネストされたケースの場合、今すぐ編集 -描画スキルをテストします...

ここに画像の説明を入力してください


1
よさそう!よくやった。しかし、より多くのインデントがある場合、どのように見えますか?
ロイックロペス

1
@Louhikeありがとう!はい、4レベルで最大になり、左マージンをさらに引き伸ばしたくありません。したがって、ネストレベルが高くなると垂直バーの幅を徐々に圧縮します。
pgfearo

2
@Louhike。9レベルのネストで物事がどのように見えるかを示すために追加の画像を追加しました-約15レベルの後、おそらくグラデーション塗りつぶしを使用して、中央のバーをマージする必要があるでしょう。
pgfearo

10
これは単に驚くべきことです。コード編集とユーザーインターフェイスを次のレベルに進めるための+1。アカウントを持っている人は、これをHacker News /.またはr / programmingに投稿してください。
コンラッドルドルフ

2
サイドバーを水平方向に反転するとどのように見えるか疑問に思いました... imgur.com/u5mNi
シャナックス

24

1つのアイデアは、テキストに3Dを追加してみることです。レベルに応じて、フォントサイズを増減します。

たとえば、次のコード:

ここに画像の説明を入力してください

このようになります:

ここに画像の説明を入力してください

さまざまなレベルで固定されたテキストサイズの配置が失われるため、使用するのが面倒な場合があります。別のアイデア; 各レベルの彩度を変更します。

ここに画像の説明を入力してください

それは本当に深いものにどれだけ耐えられるでしょうか?わからない...

私は実際にあなたの側溝の視覚化のアイデアが大好きです。簡単にグループ化できます。これらのアイデアの1つと組み合わせると、見た目がさらに良くなります。;)


少し前に、Cでスコープを示すヒートマップを作成しました。ブレーンストーミングを見るのは楽しいかもしれません。

ここに画像の説明を入力してください

左揃え:

ここに画像の説明を入力してください


2
テキストで何かをしたいのですが、これは開発者が入力中または直後に注意をそらすことなく行うことは困難です。フォントの高さに影響する変更は問題を引き起こします-おそらく、コードが左右に上下することさえ許されます。コードをシェーディングするというあなたのアイデアは気に入っていますが、すっきりと見えるようにしたいので、これは微妙でなければなりません。
pgfearo

2
しかし、これは教育環境に最適です!
jcolebrand

フォントサイズの提案は奇妙に説得力があります-しかし、私はその欠点を見ることができます。スコープがより深くネストであるとして、フォントを小さくすることではないのはなぜ- (深いネスティングが実際に賢明な解決策であるところ、それは問題を引き起こすだろうが)、これは深いネストを思いとどまら役立つだろう
ピーター

2
ヒートマップは、実際に左揃えスコープの可視化(@ pfgearoのソリューション)よりも範囲を可視化するはるかに優れている
サンディープ

@Sandeep。多くの場合、これはより良い解決策であることに同意します-特にコードを編集するのではなくレビューする場合。技術的な制約(質問で説明されているように)を使用すると、現在使用しているコントロールで背景色を変更することが難しくなります。効果的に、この回答ではヒートマップの左側を使用しましたが、エッジを編集領域に向かって傾斜させて目を引きます。色付きのテキスト背景の問題の1つは、読みやすさ/コントラストが高くなると失われることです。ネストのレベル。
pgfearo

21

オリジナルのアイデアを微調整して、正方形からカプセルに切り替えてください。これらのバージョン(元のバージョンを含む)は、表示要素の入れ子から入れ子までを示すものよりも複雑ではないため、読みやすいと思います。ツリー要素は、よりシンプルで直感的な方法で情報を伝えると思います。

カプセル

左はインデントを直接表示するのに最適ですが、右はネストされた関係を伝えるのに適していると思います。


2
私はあなたのカプセルの柔らかさを好みますが、それらはテキストからあまりにも切り離されているように見えます。
pgfearo

9

私のアイデア:

ネストは、ネストに似ています。各レイヤーの横幅はそれほど広くする必要はありません。


あなたが提案していることは、本質的に私が与えた答え(他者に触発された)と同じですが、傾斜線はありません。傾斜線は、オープンとクローズの間に目を引くのに役立つと思います。(9レベルの画像に示されているように)垂直線の幅は傾斜線の幅に依存しないため、幅は実際の問題ではないため、垂直線を圧縮できます。
pgfearo

はい、pg-投稿後に気付きました。それらは地形的に同一です-それについて空想を得るために。それは私が思うに好みの問題ですが、私のバージョンはちょうどあなたのバージョンがしない方法で私に「ネスト」を叫ぶ。たぶん、この機能は両方を発揮し、ユーザーが選択できるようにする可能性があります。
broc7

8

アイデアが大好きです。「忙しい」状態を抑えるための私の提案は、正方形ではなくグラデーションを使用することです。行を削減します。極端なインデントのためのおそらく異なる色。

私が持っているものはすべて素晴らしいと思いますが、私の好みには少しむらがあります。

私のコメント:Visual Studio IDEがインデントを行う方法に常に苦労しています。このようなものまたはバリエーションを使用したいと思います。

そのため、行のないリンクと、現在のxml /コードとのインラインを想像してください。


はい、アイデアはまだ進化しています。私が提出した回答の画像(私の質問ではなく)は、先行/末尾の勾配を持っているため、よりブロック的ではありません。勾配を使用して(しかしわずかに異なる)、物事を少しトーンダウンすることも検討しています。さまざまな色、高インデントのためだけでなく、コメントやエラーなどを強調するためにあなたと一緒にいます。そして、現在のコンテキスト/デバッグを表示するための動的な強調表示があります...停止するかどうかを判断するのは困難です。
pgfearo

5

ビジュアライゼーションは編集不可能な(左?)マージンに存在する必要があると述べたので、ビジュアライゼーションをコードの背後に混在させたり、ビハインドしたりすることはできないと思います。

おそらく左の列のヒートマップは、明るい色が深いインデントを示していますか?DOMの深さによって決定される最大インデントに従って、与えられたすべてのスペースを動的に使用する視覚化(インデントのように左から右に移動することを期待)で、マージンを固定サイズにします。

エディター領域に分岐する場合は、ドキュメントの背景として、非常に似たものをお勧めします。影付きの領域は、インデントが有効になっている場合に空白が存在する場所です。この場合、テキストの強調表示とは対照的な、単色の明るい色を使用します。


@jimpはい、視覚化はコードの内側または背後にあることはできません-私がこれを試してみたいと思う限り、私のコーディングスキル/プラットフォームはこれをあまりにも複雑にします。エディター自体の背景色もまた難しいですが、それは私が異なる前景色の色調を試すことができるという考えを与えてくれます。また、左から右のバーとヒートマップを試してみます。
pgfearo

ヒートマップアイデア(Y)に対して+1 ..そして、視覚的な特別なニーズ(色覚異常など)を持つ人々のために、ネストレベルを色の中に入れることをお勧めします。
M.Sameer

@jimp。あなたのヒートマップのアイデアを説明するために私の質問を更新しましたが、私はそれが好きですが、私は左から右のものが間違っていると思います
...-pgfearo

@pgfearo私のアイデアが役立ってうれしいです!私があなたが見たものに基づいて、私は右から左へのL&Fを好むと思います。申し訳ありませんが、今まで(週末の忙しい)確認する機会がありませんでした。あなたは非常に進歩しているので、私はあなたが上に投稿した答えについてコメントします。
ジンプ

@pgfearoおっと、あなたの答えにコメントするのに十分な評判がありません!その特権が得られたら、あなたの答えについて考えを投稿します。できればすぐに!
ジンプ

3

jGRASPは、マージンに視覚マーカーを使用してこれを行います。

ここに画像の説明を入力してください

ループを使用していることを認識し、異なるタイプのラインを使用してその内部ループを表します。

既存の編集者がそれをどのように行うかを指摘すると思いました。


5
私の意見ではうるさいですが、それでも良い考えです。
コンラッドルドルフ

私はこれを調べましたが、サイトのドキュメントでは、スクリーンショットはコードビューアーからのものであり、コードエディターからのものではないことを暗示しています。また、パディング文字はありませんが、それでもインデントされたビューが許可されます。私は質問で与えられた理由のために、コードのインデントを必要としない簡単な解決策を探しています。そうは言っても、JGraspはコードのわかりやすさを改善するための優れたツールのように見えます。
pgfearo

JGraspは私の学校でコードエディターになるはずで、コンピューターサイエンスクラスの紹介で使用しました。推奨されるコードエディターでした。プログラムのコンパイルと実行に役立つツールがありますが、EclipseやNetbeansほど洗練されていません。しかし、実際には一般的ではないと説明したものとは少し異なり、Javaの構文のみを実際に認識しています。
アッシュ

3

悪い考えではありませんが、私のブロックをはっきりと見るために左マージンを参照しなければならないことは、少し面倒になるかもしれません。それは、画面の不動産や、構造が非常に深くなった場合に物事がどのように見えるようになるかについても考えていません。

動機は、ユーザーがインデントに使用している空白文字を「見る」のを支援することなので、空白文字だけを表示できます。

私は、段落マーカーのような特別な視覚的なキャラクターではなく、ハイライトだけを話します。黄色のスペース、緑色のタブ(またはその他)

マージン/ネストの問題については、各ブロックのマージンを移動するだけで済みます。マージンが直線でなければならないということは何もありません。

これは新しいアイデアではないと確信しています。

このようなもの:

移動する左マージンと強調表示された空白を示すサンプルxml


インデントビューを使用すると、アイデアと同様に、空白を動的に照らすことができます。また、フラットビューでは、30レベルのネストが1レベルと同じスペースを占有します。インデントすると、画面の端から外れることになります。これが、開発者にビューの選択肢が与えられる理由の1つです。
pgfearo

1
うん、それが私がそれが新しい考えではないと言った理由です。ただし、インデントのレベルが、現在編集中のレベルに基づいて対数または動的である場合、あなたが話している問題はありません。単に1スペースで固定されたとしても、画面から外れることはありません。古い80文字のディスプレイであっても中途半端ではありません。はい、これらのアイデアのいくつかで30レベルは1レベルと同じスペースを取りますが、これらのいくつかを見ると、インデントだけではスペースを節約できず、全体をインデントし、派手なグラフィックを追加します。
ジャスティンオームズ

オーム。現在、質問には画面の不動産に関するセクションがあります(これはコミュニティWikiおよびすべてです)。これにはスクリーンショットの比較が含まれます。このセクションを自分の意見で更新できるとしたら、それは素晴らしいことです。私はインデントビュー(XMLの世界などで働く)の大ファンだということを受け入れてください。だからこそ、システムによってインデントが管理される仮想フォーマットの手法を完成させるために過去6か月以上を費やしました。しかし、私が学んだことが1つあるとすれば、開発者が選択肢を好むということです。そのため、フラットビューです。
pgfearo

最初の読書で、動的なインデント幅に関するあなたのアイデアを逃しました-これは強力な機能かもしれません。残りはフラットですが、実際にどのように機能するかはわかりませんが、簡単にテストできます-私のプロジェクトでは、インデントロジックはフラットビューでも呼び出されます、その乗数0に設定されています。そのため、調整が必要なのはこの乗数だけです。グッドコール。
pgfearo

2

括弧を開いて閉じないのはなぜですか?

  1. インデントは封じ込めを意味します:(と)はプログラマにとってまさにそれを意味します。
  2. (および)はそれぞれ単一の文字です。左のバーは非常に細いままです。
  3. 空の要素は簡単に見つけられます。同じ行で()を使用します。
  4. 要素のコンテンツには視覚的な手がかりは必要ありません。空白がはるかに優れています。
  5. 右側のカーソル位置は、左側の包含ブロックと一致させることができます:(および)を使用して、列の文字に動的に色を追加します
  6. <と>を使用して、よりXML風にすることができます。

いくつかの有用なアイデア-特にXMLっぽいビットを取り入れてみてください。また、動的に行われることもかなりありますが、多すぎることはないでしょう。
pgfearo

2

Vimは既に似たようなことをすることができますが、それほどきれいではありません。

Vimで「コードの折りたたみ」を行うにはさまざまな方法があります。それらの1つは、構文の折りたたみ規則に基づいています。これが完了すると、ネストされたアウトライン構造を使用してコードを折りたたむことができ、「FoldColumn」を使用して、「foldlevel」のグラフィカルな(実際には「|」および「-」文字を持つ)文字表現を提供できます。

foldcolumnは、foldmethodに関係なくネスト表現を提供できますが、構文ベースの方法は、おそらくあなたが望むものに適しているでしょう。どこかにxmlの構文ベースの折りたたみ規則が事前に作成されているかどうかはわかりませんが、おそらくあると思います。


私が設計しているエディターは、技術的およびライセンス上の理由から、Vimやサードパーティのツールが考慮されていないGUIを備えたはるかに大きなシステムに統合されます。しかし、私はVimがこれに取り組む方法に興味があるので調査します-できればドキュメントにスクリーンショットがあることを願っています。はい、文字ベースのグラフィックスはある程度機能します-私は研究のために1つを模擬しました。コードの折りたたみは左マージンから行うことができますが、同期されたアウトラインツリービューも提供されます。
pgfearo

@pgfearo:VimのNetBeansプロトコルをご覧ください。これは、ライセンスの問題なしにIDE内にVimを埋め込むために使用することを目的としています。
-greyfade

@greyfade-少なくとも私の現在のプロジェクトでは、ライセンスの問題があるのではないかと考えています。なぜなら、そのクローズドソースとGPLの懸念なしにVimソースを変更するために(使用しなくても)ファシリティが必要だからです。それはさておき、プロトコルは面白そうです。
pgfearo

1

私はあなたがオプションBとCで正しい軌道に乗っていると思う:幅とヒートマップの色付けの両方を含める。現時点ではオプションBがCよりも好きです。それは、Cの中央にある非常に重いブロックではなく、邪魔にならないためです(Cの中央にある非常に重いブロックではなく、幅が狭く希釈されるか、狭くて強い)どこかにレベルを挿入した場合、グラフ全体を再構築します。ブロックをもっと小さくすることができると思います。おそらく1または2ピクセルで十分でしょう。それほど大きくなくてもかまいません。区別できるだけです。特に、人々が何度もエディターを使用することが予想される場合、控えめで微妙なエフェクトは、あまり注意をそらさないため、扱いやすくなります。

ある種のエディターを使用する場合に重要なことの1つは、現在のスコープを強調表示することです。エディターで行を選択するとき、含まれている要素と停止する場所を正確に確認する必要があります。ツリーを強調表示することもできます(どの要素の子ですか)。これは別の問題であり、対処と検討が必要であり、ユーザーがエディターでの体験をどのように評価するかにより大きな影響を与えると思います。


私はあなたの答えを提出しましたが、それはあなたのものと交差したと思いますが、現在のスコープを強調表示するというアイデアと偶然に結びついています(輝く境界線で)?ブロックは目立たないようにする必要があることに同意します。ここでは、描画を支援するために効果が誇張されており、縮小されたスクリーンショットで問題なくレンダリングされます。
pgfearo

1

私が言及していないことの1つは、あなたが落ち着いたように見える彩度効果の上に色相で何ができるかです。私の提案は、ポインターが置かれている巣の色を変更することです。これにより、ユーザーは、どの行がネストの一部であるかを区別しやすくなります。

色相ベースのものを実装するときは、色覚異常を意識し、普遍的に区別できる色を選択するか、人々が選択できるいくつかのオプションを提供してください。


これは、このパターンの実装に詳細を追加するためにできることはまだたくさんあると思います。はい、色の認識の問題を回避するためにトーンを使用する方がより快適ですが、オプションが用意されていれば、余分な次元を追加するのに役立ちます。この質問は現在コミュニティWikiであるため、ワイヤーフレームを送信して、他の人がテーマのバリエーションである画像の提供を希望するかどうかを確認します。
pgfearo

0

これまでの他の提案と組み合わせて使用​​できる1つのオプションは、XPath表記を使用して行へのパスを示す左マージンにツールチップを使用することです。ブラウザの「要素を検査する」ツール(Chromeに組み込まれているFirebugなど)は、多くの場合、ステータスバーで同様の処理を行います。


私はこのコントロールに集中していましたが、「ブレッドクラム」ナビゲーターを備えた「XPathロケーションバー」は機能し、同期要素ツリービューと同様にエディターに組み込まれています。
pgfearo

0

おそらく、元の投稿のヒートマップを1列の色と深さの数値で折りたたんだビューにすることができます。これにより、ユーザーは自分がどのくらいの深さであるかを知ることができ、xmlの画面領域を増やすことができます。私にとっては勝利のようです。

物を深く入れ子にするのに十分な色の違いがあるかどうか心配です。


高レベルのネストのサポートが優先事項です。しかし、目で見る必要があるのはいつでも(取り入れることができる)だけなので、特定のレベルを超えて、深さの印象を与えるために色を混ぜ合わせることを検討しており、重要なレベルのみを強調しています。ネストレベルが高い場合のアイデアを確認します。
pgfearo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.