Laden...

[gelöst] Xml-Syntax-Highlighting verbessern

Erstellt von ErfinderDesRades vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.893 Views
ErfinderDesRades Themenstarter:in
5.299 Beiträge seit 2008
vor 13 Jahren
Hinweis von herbivore vor 13 Jahren

Dadurch, dass die gewünschte Änderung vollzogen wurde, sieht das Beispiel hinsichtlich der Attribute jetzt schon so aus, wie gewünscht. Vorher waren sie in der gleichen Farbe wie die Tags.

[gelöst] Xml-Syntax-Highlighting verbessern

Edit: Vielen Dank, herbivore!

Hallo!

Könnte man das Syntax-Highlighting von Xml verbessern?

Ist mir aufgefallen, seit ich häufiger in WPF unterwegs bin, da wird das ja sehr häufig gebraucht

Derzeit siehts zB so aus:

<Application x:Class="Application33"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:AdminWizard" 
    xmlns:hlp="clr-namespace:System.Windows.Controls;assembly=WpfHelpers" 
    xmlns:dtm="clr-namespace:AdminWizard.DataModel" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    StartupUri="Views\MainWindow.xaml"
             >
  <!--
    StartupUri="Views\Window3.xaml"
    -->
  <Application.Resources>
    <x:Array x:Key="TestArray" x:Type="sys:Int32">
      <sys:Int32>87</sys:Int32>kllj
    </x:Array>
    <hlp:DebugConverter x:Key="DebugConverter"/>
    <my:ViewModelRoot x:Key="RootModel" />
    <hlp:BoolConverter x:Key="BoolBrushConverter">
      <SolidColorBrush>#FFC8C8</SolidColorBrush>
      <SolidColorBrush>White</SolidColorBrush>
    </hlp:BoolConverter>

Also ich glaub gut wäre, wenn Attribute-Namen sich farblich von Tag-Namen unterschieden.
Im VS-Xaml-Editor sind Tag-Namen braun, Attribut-Namen rot, und Attribut-Werte blau (s. Bild) - das finde ich gut. Schlecht am VS-Xml finde ich, das Text auch braun ist - da ist myCSharp wieder besser.

Der frühe Apfel fängt den Wurm.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo ErfinderDesRades,

andere Farben als die jetzigen für die bestehenden Syntaxelemente zu verwenden, ist natürlich technisch gar keine Hürde. Es viel fraglicher, ob man eine Farbgebung findet, die die Zustimmung aller findet.

Ich kann z.B. nicht einschätzen, ob die Farben, die du in VS eingestellt hast, auch verbreitet sind, oder ob andere Farbschemata vorgezogen werden. Mir persönlich würden Tags in braun und Strings in blau nun absolut nicht gefallen, zumal blau in C#-Tags für Keywords verwendet werden, was ja am ehesten den Tag-Namen entspricht. Kurz gesagt, ich würde die Farben grundsätzlich lieber so lassen wie sie sind.

Eine weitere Farbe für Attribute zu verwenden, sollte jedoch kein großes Problem sein. Ich schau mal, ob ich das kurzfristig hinbekomme.

herbivore

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo herbivore,

bis auf das bananengelb sind die von ErfinderDesRades verwendeten Farben die Standardfarben von Visual Studio.
:::{style="color: red;"}Rote Attribute){red} fände ich ebenfalls sehr schön.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo zusammen,

die Attribute werden jetzt erkannt und in rot angezeigt.

herbivore

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo herbivore,

chic, danke für die Änderung – bereits jetzt ist XAML-Markup deutlich lesbarer geworden!

Ich würde mich trotzdem freuen, wenn du dir die restliche Farbgebung für Tag-Namen und Strings nochmal durch den Kopf gehen lassen würdest. Der Großteil der Forenbenutzer wird Visual Studio verwenden und demnach dessen Farbschema gewöhnt sein.
Es ist selbstverständlich dein gutes Recht, wenn dir braune Tags und blaue Strings nicht gefallen – andererseits wird es genau so viele Benutzer geben, denen es andersherum ergeht. Daher wäre ich dafür, sich der XAML-Farbkonvention von Visual Studio anzupassen und der Konvention zu folgen, um die Umstellung vermeiden zu können.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo m0rius,

wenn ich es richtig sehe, ist bei VS aber auch Standard, dass C#-Schlüsselworte blau und C#-Strings braun dargestellt werden, oder? Wenn das stimmt, muss man doch wirklich sagen, dass Microsoft hier inkonsequent ist.

Ich kann das Argument mit der besseren Lesbarkeit des gewohnten verstehen, aber ich kann es genauso gut umdrehen. Wenn man in C# an blaue Schlüsselworte und braune Strings gewöhnt ist, ist XML nicht so gut lesbar, wenn es dort andersherum ist.

herbivore

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo herbivore,

ich kenne die Beweggründe nicht, aus denen sich Microsoft für die abweichende Farbgebung entschieden hat. Allerdings kann man nicht als Argument anführen, dass eine andere Sprache – und C# und XAML sind nunmal zwei verschiedene Sprachen – ein anderes Farbschema verwendet. Schließlich stellen wir hier Schlagwörter auch nicht lila und fett dar, nur weil es Eclipse für Java so macht.

Lange Rede, kurzer Sinn: Ich bin der Meinung, dass man, welche Konvention auch immer verwendet wird, und die von Visual Studio ist die gängigere, diese beibehalten sollte — stick to it.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

E
395 Beiträge seit 2007
vor 13 Jahren

moin in die runde

man könnte im sinne der diskusion hier den ganzen spas auch noch auf die spitze treiben in den man jeden benutzer selbst einstellen läst welche farben er gerne hätte 😛

wenn man es etwas geschikt anstellt benötigt man dafür pro sitzung auch nur eine zusätzliche db abfrage. aber ich denke mal hier verhält es sich ähnlich zu den sonstigen feature wünschen -> wenn sich keiner für die umsetzung findet wirds nix (wobei ich hier, wenn es grünes licht von oben gibt, durchaus interesiert an der umsetzung wäre)

mfg

Paul

MfG Paul

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo el_panter,

im Grunde bräuchte man dafür noch nicht mal was zu implementieren, sondern es gibt im WBB die Möglichkeit, verschiedene Style- bzw. Designpacks zu definieren, aus denen jedes Mitglied in den Einstellungen eins auswählen kann. Allerdings ist es verdammt tricky bei nachfolgenden Änderungen alle Style- und Designpacks konsistent zu halten. Das bedeutet zusätzlichen Änderungsaufwand, ist eine zusätzliche Fehlerquelle und verlängert auch den Test nach Änderungen. Selbst wenn also jemand die initiale Erstellung übernehmen würde, müssten wir den Folgeaufwand tragen. Das rechnet sich nicht, sorry.

Natürlich können man auch ein neues Profil-Feld hinzufügen, und an Hand dessen entscheiden, welche Farben verwendet werden sollen. Das Feld kann man direkt über das WBB anlegen und die Abfrage wäre eine relativ kleine Code-Änderung. Aber die Erfahrung hat gezeigt, dass neue Profil-Felder nur sehr wenig angenommen werden, sprich die Zahl der Benutzer, die eine andere Einstellung als den Standard-Wert hat, ist verschwindend gering. Man treibt also Aufwand und erhöht die Komplexität für einige, wenige Mitglieder. Auch das rechnet sich nicht.

So wie übrigens auch das Aufwand-Nutzen-Verhältnis einer Fortsetzung dieser Diskussion als sehr ungünstig betrachte. 😃

herbivore

H
114 Beiträge seit 2007
vor 13 Jahren

Sofern alle Farben beim Syntaxhighlighting via CSS-Klassen definiert werden, dann kann jeder Firefox-User auch via dem Plugin Stylish seine eigenen Farben vergeben. Die Erweiterung bietet die Möglichkeit zu jeder Website eigene CSS-Definitionen zu hinterlegen, so dass man vorhandene einfach überschreiben kann.
Wäre zumindest eine Möglichkeit ohne Änderung an der Forensoftware vornehmen zu müssen 😉

Grtz

ErfinderDesRades Themenstarter:in
5.299 Beiträge seit 2008
vor 13 Jahren

das wichtigste, dass die Attributnamen vom TagNamen unterschieden sind - das ist ja erledigt. Jetzt könnte man höchstens noch ein roteres Rot probieren, um den Kontrast AttributName - AttributWert zu erhöhen,

<Application x:Class="Application33"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:AdminWizard" 
    xmlns:hlp="clr-namespace:System.Windows.Controls;assembly=WpfHelpers" 
    xmlns:dtm="clr-namespace:AdminWizard.DataModel" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    StartupUri="Views\MainWindow.xaml"
             >
  <!--
    StartupUri="Views\Window3.xaml"
    -->
  <Application.Resources>
    <x:Array x:Key="TestArray" x:Type="sys:Int32">
      <sys:Int32>87</sys:Int32>kllj
    </x:Array>
    <hlp:DebugConverter x:Key="DebugConverter"/>
    <my:ViewModelRoot x:Key="RootModel" />
    <hlp:BoolConverter x:Key="BoolBrushConverter">
      <SolidColorBrush>#FFC8C8</SolidColorBrush>
      <SolidColorBrush>White</SolidColorBrush>
    </hlp:BoolConverter>

(<Application){darkblue} (x:Class){red}=("Application33"){sienna} (xmlns){red}=("http://schemas.microsoft.com/winfx/2006/xaml/presentation"){sienna} ( xmlns:x){red}=("http://schemas.microsoft.com/winfx/2006/xaml"){sienna} (xmlns:my=){red}:::{style="color: sienna;"}"clr-namespace:AdminWizard"){sienna} (xmlns:hlp=){red}:::{style="color: sienna;"}"clr-namespace:System.Windows.Controls;assembly=WpfHelpers"){sienna} (xmlns:dtm=){red}:::{style="color: sienna;"}"clr-namespace:AdminWizard.DataModel"){sienna} (xmlns:sys=){red}:::{style="color: sienna;"}"clr-namespace:System;assembly=mscorlib"){sienna} (StartupUri=){red}:::{style="color: sienna;"}"Views\MainWindow.xaml"){sienna} > <!-- StartupUri="Views\Window3.xaml" --> (<Application.Resources> ::: (<x:Array){darkblue} (x:Key){red}=("TestArray"){sienna} x:Type=("sys:Int32"){sienna}> (<sys:Int32>){darkblue}87<(/sys:Int32>){darkblue}kllj (</x:Array> ::: (<hlp:DebugConverter){darkblue} (x:Key){red}=("DebugConverter"){sienna}/> (<my:ViewModelRoot){darkblue} (x:Key){red}=("RootModel"){sienna} /> (<hlp:BoolConverter){darkblue} (x:Key){red}=("BoolBrushConverter"){sienna}> (<SolidColorBrush>){darkblue}#FFC8C8(</SolidColorBrush>){darkblue} (<SolidColorBrush>){darkblue}White(</SolidColorBrush>){darkblue} ( </hlp:BoolConverter>){darkblue} Von zugegebenermaßen fragwürdiger Ästhetik, sone Knallfarbe mit reinzunehmen, aber das Set zueinander kontrastierender Farben ist recht begrenzt, und grün sind schon die Kommentare. Und unsereiner ists rot vom VS her gewohnt

Der frühe Apfel fängt den Wurm.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo HiGHteK,

vielen Dank, das Add-On kannte ich noch nicht. Habe mir jetzt für die Codeblöcke überall Consolas eingestellt und die Farben dem Farbschema von Visual Studio angepasst – sieht sehr viel besser aus!

Hier die CSS-Styles für Stylish für alle Interessierten:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.mycsharp.de") {
    code {
        font-family: Consolas;
        font-size: 10pt;
    }

    .xmltag {
        color: #a31515 !important;
    }

    .xmlattr {
        color: #ff0000 !important;
    }

    .xmlcomment {
        color: #008000 !important;
    }

    .xmlstring {
        color: #0000ff !important;
    }
}

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo zusammen,

freut mich, dass es damit jetzt eine relativ einfache Lösung gibt, mit der es jeder selbst in der Hand hat, die Farben (und Schriften) einzustellen, die er am besten findet.

Damit sehe ich mich auch der Pflicht enthoben, "sone Knallfarbe von zugegebenermaßen fragwürdiger Ästhetik reinzunehmen". Die kann jetzt ja jeder selbst einstellen, wenn er sie will.

herbivore