Wie bei den meisten Dingen bin ich sicher, dass dieses Konzept schon einmal ausprobiert wurde - ich bin nur nicht auf Editoren gestoßen, die das verwenden, was ich als "virtuelle Formatierung" bezeichnet habe. Das Prinzip ist, dass es einen schwebenden linken Rand gibt, der den Effekt der Auffüll- / Tabulatorzeichen simuliert, die herkömmlicherweise vom Entwickler oder vom Editor selbst eingefügt werden, um den Code zu formatieren. Der Editor analysiert während der Eingabe kontinuierlich Code (auch wenn er auskommentiert ist) und berechnet den erforderlichen Einzug basierend auf dem Kontext, in dem sich jeder Zeilenvorschub befindet
Ich entwickle diese Idee speziell mit einem XML-Editor, da XML einige besondere Probleme mit der Formatierung von Zeichen hat und in der Regel stark verschachtelt ist. Ich glaube jedoch, dass viele der Prinzipien für herkömmlichen Code immer noch gelten.
Haben Sie Erfahrung mit dem Codieren mit einem solchen Tool oder haben Sie eine Vorstellung davon, ob es helfen oder behindern würde? Würde es Probleme mit Versionskontrollsystemen verursachen? (Es erkennt und entfernt alle vorhandenen Füllzeichen.)
Wenn Sie es nicht ausprobiert haben, ist das Verhalten eines solchen Tools schwer zu beschreiben. Es sieht konventionell aus, bis Sie tatsächlich mit der Bearbeitung beginnen. Ich habe ein Screencast-Video erstellt, das einen Prototyp in Aktion zeigt, der das Bearbeiten von XML, das Ändern seiner Hierarchie und das Ausführen von Drag & Drop- und Kopier- und Einfügevorgängen sowie die Fehlerbehebung / Korrektur bei der Eingabe ungültiger Zeichen demonstriert.
Bearbeiten Alle Antworten / Kommentare waren bisher negativ. Um das Gleichgewicht wiederherzustellen, sollten Sie einige Vorteile der virtuellen Formatierung berücksichtigen:
- Keine Debatten mehr über Formatierungsstandards, platzieren Sie Zeilenvorschübe nur dort, wo dies Ihrer gewählten / vorgeschriebenen Konvention entspricht
- Wenn der Platz knapp ist (in einem Buch / Blog / einer Dokumentation), können Sie die Zeilen umbrechen, erhalten aber dennoch eine perfekte Einrückung
- Jeder Codeblock kann einen 'Mausgriff' unmittelbar neben dem Startpunkt haben, der nicht in den Bildschirmrand gedrückt wird. Klicken Sie hier, um den gesamten Block oder den inneren Block auszuwählen
- Ziehen, Ablegen und Vergessen - wird zum ersten Mal möglich
- Keine Zeit für die Neuformatierung des Codes anderer Leute
- Kein falsch formatierter Code (in dem Sinne, dass es keinen gibt - nur das Rendern)
- Wenn Sie die Rücktaste anstelle von Strg + Rücktaste verwenden, bleiben Ihre Finger auf den Tastaturführungstasten
- Flexibles Rendern - Passen Sie die gerenderte Formatierung an Ihre Umgebung an. Hat jemand versucht, Code auf einem Mobiltelefon / Tablet mit kleinem Bildschirm zu lesen?
- Bedenken Sie, dass es ungefähr 25% weniger bearbeitbare Zeichen gibt (in einem Beispiel-XSLT). Hat das nicht Effizienzvorteile?
Bearbeiten - Bisherige Schlussfolgerungen
Entwickler haben Tools und Arbeitsmethoden entwickelt, mit denen die meisten Nachteile der Verwendung von Füllzeichen zum Einrücken effizient überwunden werden können.
Es besteht die Sorge, dass das Entfernen von Formatierungszeichen einige differenzierende Tools nachteilig beeinflusst.
Entwickler möchten die Flexibilität, die Formatierung so zu optimieren, dass das automatisierte Rendern nicht möglich ist.
Das Entfernen führender Leerzeichen / Tabulatoren bedeutet, dass ein "Code-fähiges" Tool zur Code-Formatierung erforderlich ist, um diesen Code effizient zu überprüfen - ein Nur-Text-Editor würde keine Formatierung anzeigen.
Diejenigen, die der Meinung sind, dass es einige hypothetische Vorteile (für die virtuelle Einrückung) geben könnte, sind der Ansicht, dass die Nachteile diese potenziellen Vorteile überwiegen - schlüssig .
Bearbeiten - Urteil
Die Wahrnehmung der Hindernisse und der wenigen (wenn überhaupt) Vorteile ist so, dass es für mich als Einzelentwickler unklug wäre, dieses platzfreie Bearbeitungskonzept für allgemeine Sprachen zu verfolgen. Für XML / XSLT scheint es jedoch (aufgrund der speziellen Behandlung von Leerzeichen) zumindest eine gewisse Übereinstimmung des Potenzials zu geben.
Bearbeiten - Produkt versendet
Trotz der allgemein negativen Stimmung, die hier zu finden ist, habe ich den Herausgeber verschickt. Ich habe eine kostenlose Version erstellt, in der Hoffnung, dass sie Kritik in Form konkreterer Themen auf der Grundlage realer Erfahrungen hervorruft. Etwas frustrierend ist, dass es bisher keine Beschwerden gab (tatsächlich kaum Feedback bezüglich des Download-Volumens). Ich würde gerne glauben, dass dies daran lag, dass sich die Benutzer so gut auf die Idee eingestellt haben, dass sie dies als "na und?" Art von Feature - aber es gibt keine Möglichkeit zu sagen ...
quelle
Antworten:
Das größte Problem wäre, wie Dateien für andere Tools angezeigt werden, insbesondere für Tools zur Versionskontrolle. Zeilenenden sind für diese Werkzeuge von Bedeutung. Ich möchte keinen Zusammenführungsbildschirm sehen, auf dem ich eine ganze Klasse in einer Zeile habe, und versuchen, einen Teil des Textes in Spalte 347 zusammenzuführen.
quelle
Das wäre toll. Emacs macht das mehr oder weniger und macht es meistens richtig. Haben Sie den nXML-Modus von Emacs ausprobiert? Wie würden Sie das verbessern?
Sie können keinen neuen Editor erstellen, bis Sie die bereits verfügbaren Daten getestet haben.
Auf jeden Fall muss der Einzug in der Ausgabedatei gespeichert werden, damit die Datei mit anderen Tools angezeigt werden kann. Ich werde wahrscheinlich keinen neuen Editor verwenden, es sei denn, er unterstützt Laufzeitanpassungen wie Emacs.
quelle
cat
Ich habe diese Idee schon einmal gesehen, aber ich habe noch nie gesehen, dass sie tatsächlich funktioniert. Die meiste Zeit, wenn ich die Idee kommt gesehen habe, es wurde von jedem Entwickler da draußen abgeschossen - oder wenn es wird umgesetzt, und zwar aus der Versionskontrolle praktisch nutzlos , da nur sieht gefalteten Code würde die Datei ändern und weiter confuse das Diff-Tool. (Ein Beispiel dafür, wie schlimm das ist, ist das Witango Development Studio.)
Ich kann mir einige Hürden vorstellen, die Ihr Editor überwinden müsste, um für viele Entwickler nützlich zu sein:
diff -uw
Befehl * nix kein Rauschen verursachen . (Keine falschen Unterschiede!)Es ist unnötig zu erwähnen, dass dies eine gewisse Menge an Metadaten über die vorhandene Formatierung der Datei erfordert. Sie möchten es wahrscheinlich von den Quellen trennen, aber es wäre wahrscheinlich ziemlich schwierig, es mit einem sich ständig ändernden Repository synchron zu halten.
Als Vim-Benutzer würde ich auch der Meinung sein, dass der Editor die Modelines von Vim, Emacs und anderen Editoren respektieren und die verbotene Formatierung der Modeline beibehalten sollte, unabhängig davon, was letztendlich angezeigt wird.
Meiner Meinung nach machen die Anforderungen an eine solche Software sie unhaltbar. Zu viele Benutzer erwarten zu oft zu viel davon, um ein solches Projekt erfolgreich zu machen.
quelle
Lösung unter Verwendung textbasierter (z. B. XML) Formatierungskonfigurationsdateien:
Lassen Sie einen persönlichen Formatierer vom einzelnen Entwickler konfigurieren.
Speichern Sie diesen Formatierer lokal.
Dateien werden mit lokaler Formatierung geladen und bearbeitet.
Sie können ihren Formatierungsstil frei ändern, ohne etwas zu beschädigen.
Die automatische Formatierung kann deaktiviert werden, um unformatierte Dateien anzuzeigen und zu bearbeiten.
Lassen Sie einen minimalen Teamformatierer für den Teamstandard konfigurieren.
Speichern Sie diesen Formatierer in der Teamversionskontrolle.
Dateien werden mit Teamformatierung als Ersatz für andere Tools gespeichert .
Diffs leiden nicht unter Formatierungsproblemen.
Es ist lächerlich, sich Gedanken über die Wirtschaftlichkeit des Speicherns von Dateien ohne Leerzeichen zu machen, sodass Sie nichts verlieren, wenn Sie die Dateien mit einer Formatierung speichern, die von einem Teamstandard definiert wird. Im Fall eines Einzelentwicklers können Sie die Möglichkeit bieten, die Formatierung (für das "Team" von einem) gespiegelte Formatierungen zu speichern.
Wenn der Formatierer nicht ausreicht, haben Sie zwei Möglichkeiten:
Stellen Sie eine Schnittstelle für benutzerdefinierte Formatierer bereit.
Richtig gemacht, das ist die beste Lösung.
Falsch gemacht, es ist das Schlimmste.
Manuelles Überschreiben der automatischen Formatierung zulassen.
Die Benutzerfreundlichkeit leidet nicht - beachten Sie Strg- (Enter | Tab | Space).
Vernunft tut - wo speichern Sie diese Formatierung? Machst du?
quelle
Ich wäre in Ordnung mit Code AutoFormatted wird , wenn die Sprache nicht empfindlich formatiert wurde Husten Python Husten .
Emacs macht die Lisp-Formatierung wirklich gut und sie wird sofort formatiert. Ich würde mich sehr freuen. Ich kann das automatische Einfügen von Parens oder anderen Trennzeichen nicht ertragen: Keiner der Autoinserter, die ich versucht habe, hat es für meine Eingabe annähernd richtig gemacht.
quelle
Ich liebe die Idee im Konzept . Und obwohl Sie vielleicht Erfolg haben, muss ich noch einen Editor finden, der alles tut, was ich in Bezug auf die Formatierung möchte. Hier sind einige Straßensperren (IMO):
Könnten Sie etwas schaffen, das die meisten Kriterien einigermaßen gut erfüllt? Wahrscheinlich. Aber wir Programmierer sind pingelig und wählerisch und hassen es, uns zu ändern, und werden beim ersten Anzeichen von Ärger sofort loslegen. Hier wird es Probleme geben, wenn die Ausgabe eine andere Person im Entwicklerteam abhakt oder wenn sie mit dem Versionsverwaltungssystem nicht 100% gut funktioniert oder wenn sie meinen Code nicht genau so formatiert oder wenn dies der Fall ist versteht die Sprache falsch und rückt meinen Code falsch ein oder wenn er eine Millisekunde hinter dem zurückbleibt, was ich erwarte. Denn so sehr ich die Idee auch mag, ich werde sofort zu meinen bevorzugten Redakteuren springen.
quelle
Es gibt einen noch radikaleren Ansatz - einen reinen semantischen Editor. Eine IDE behandelt einen Code, der sogar intern als AST dargestellt wird, nicht als einfacher Text. Siehe beispielsweise JetBrains MPS .
quelle
Nachdem ich den in meiner Frage beschriebenen XML-Editor veröffentlicht habe, bin ich in einer besseren (aber nicht idealen) Position, um zu versuchen, dies selbst zu beantworten - also werde ich:
Nach weit über 500 Downloads in weniger als 2 Wochen war die Reaktion auf dieses bahnbrechende neue Konzept in der dynamischen Code-Formatierung ...
NULL
Keine Beschwerden, kein Lob. Meine (hoffnungsvolle) Interpretation davon ist, dass die Leute nur einen Editor wollen und erwarten, der sich normal anfühlt und ihren Code nicht durcheinander bringt. Benutzer werden kaum bemerken, dass ihre Formatierung vollständig virtuell ist, und es gibt Hinweise darauf, dass sie sich noch weniger darum kümmern.
Es wäre jedoch ein Fehler, zu viel in diese Nichtreaktion zu lesen. Dieses Tool ist kostenlos, und dies bedeutet leider, dass zumindest einige Benutzer weniger geneigt sind, Kritik zu üben. Wenn sie es nicht mochten, haben sie es vielleicht einfach weggeworfen und etwas anderes benutzt.
quelle