Auto-correct changes word while typing if auto-complete is enabled

Auto-correct changes word while typing if auto-complete is enabled

13
Basic UserBasic User
13

    Dec 16, 2012#1

    Ich habe in Progress viele Routinen die Bindestriche "-" enthalten. Nun hat Ultraedit die Angewohnheit die wohl als Trennzeichen zu betrachten und zeigt mir dann die kompletten Namen teilweise nicht. Ein Beispiel eine Funktion die "IS-EMPTY" heist wenn ich "IS" Tippe und dann Control-Space zeigt er mir halt alles an was mit "IS" beginnt auch irgendwo (das ist das Problem, es gibt sehr viele Routinen die mit "IS" anfangen) halt dann "IS-EMPTY". Wenn ich z. B. dann "IS-" eintippen, dann sollte er normalerweise alle Routinen die mit "IS-" anfangen anzeigen. Tut er aber nicht. Erstens muss ich Control-Space eingeben damit die Liste überhaupt erscheint, obwohl er ab dem dritten Zeichen den Dialog für die Autovervollständigung anzeigen soll und zweitens zeigt er mir dann alle an was sowohl im Template als auch bei der gewählten Programmiersprache definiert ist. So als würde ich Control-Space an einem leerem Platz eingeben.

    Kann man das irgendwie ausstellen, dass er "-" als Trennzeichen auffasst? Ich habe mir alle Optionen angeschaut, das einzige was in die Richtig geht, ist der Bindestrich als Zeichen an dem er den Text umbrechen darf (Anzeige/Formatierungen) kenne leider die englischen Begriffe nicht. Das ist übrigens auch so eine Sache, warum darf ich die englische Version eigentlich nicht installieren? Er sagt dann immer dass bereits eine Version installiert ist. Er soll natürlich die deutsche Version ersetzen, ist ja klar, tut er aber nicht.

    Dann ist da noch die lästige Angewohnheit, wenn man Keywörter automatisch korrigieren lässt, dass die Korrektur nicht zurückgenommen wird wenn man denn weitertippt. Wieder ein Beispiel, unsere Charactervariablen fangen mit "lc" für local character an, leider ist "LC" auch ein Befehl in Progress (LowerCase). Ultraedit macht also das LC von LCTest gross und leider schein bevor er erkennen kann, dass es nach "LC" noch weitergeht und nicht die Funktione "LC" gemeint sein kann, das führt dann dazu, dass man entweder irgendwas vor das "LC" tippt und es dann wieder löscht oder man korrigiert es danach. Kann man das irgendwie umgehen?

    6,603548
    Grand MasterGrand Master
    6,603548

      Dec 16, 2012#2

      Tja, das Problem mit dem Zeichen - besonders in der deutschen Sprache. Die Mehrzahl der Menschen verwendet dieses Zeichen für alles, was mit einer waagrechten Linie dargestellt wird, unabhängig von der Bedeutung. Bindestrich, geschützter Bindestrich, Trennstrich, bedingter Trennstrich, Gedankenstrich, Geviertstrich und als Minuszeichen sind in der Unicode Zeichentabelle und teilweise auch in der ANSI 1252 und der ISO 8859-1 Zeichentabelle enthalten. In Dateien wie MS Word, aber auch in HTML sollte man immer darauf achten, dass man wirklich das richtige Zeichen verwendet, wegen der unterschiedlichen Darstellung (Länge und vertikale Position des Strichs) und der Bedeutung zum Beispiel für die Rechtschreibprüfung, siehe zum Beispiel Binde-, Gedanken-, Geviertstrich – Welcher Strich wofür?

      Nun aber zum Problem mit dem - tja, was nun, Bindestrich oder Trennstrich? - in Bezug auf die Funktion der automatischen Vervollständigung.

      Die Definition der Trennzeichen für Left delimiters for Ctrl + Dbl Click und Right delimiters for Ctrl + Dbl Click sind ausschließlich für die Funktion der erweiterten Selektierung mittels Doppelklick bei gedrückt gehaltener Steuerungstaste Strg. Hier kann man also eine verkleinerte Liste von Trennzeichen definieren, um eine String zu selektieren, welcher mehrere Wörter enthält, zum Beispiel einen Dateinamen mit oder ohne Pfad. Diese Konfigurationsmöglichkeit hilft nicht bei der automatischen Vervollständigung.

      Dann kann man im Wordfile für eine Sprache die Trennzeichen definieren. In progress91.uew ist das Zeichen - nicht in der Liste der Delimiters enthalten, was ja in diesem Fall für OpenEdge auch die bessere Wahl ist. Nur leider verwendet UltraEdit diese Liste von Trennzeichen nur für die Syntaxhervorhebung und nicht für die Funktion der automatischen Vervollständigung.

      Also was tun? Leider kann man gar nichts tun. UltraEdit verwendet für die automatische Vervollständigung eine Funktion aus einer Bibliothek von Microsoft, welche einen String in Wörter zerlegt. Diese Funktion interpretiert das Zeichen - als Trennzeichen. Daher kann man hier gar nichts machen, außer einen Erweiterungswunsch per eMail an IDM Support mit der Bitte senden, die Funktion selbst auszuprogrammieren, und die Trennzeichenliste konfigurierbar zu machen, und für Dateien mit aktiver Syntaxhervorhebung die Liste der Trennzeichen aus der Worddatei zu verwenden.

      Diese Problematik mit der Interpretation von - als Binde- oder Trennstrich ist auch der Grund, warum die meisten C/C++ Programmierer auf dieses Zeichen in Funktionsnamen verzichten und lieber den Unterstrich verwenden oder eine CamelCase Notation verwenden. (CamelCase = Wörter zusammengeschrieben mit dem 1. Buchstaben jedes Wortes groß geschrieben, wodurch sie Höcker wie bei einem Kamel bilden).

      Warum man UltraEdit nicht in mehreren Sprachen gleichzeitig installieren kann, ist relativ einfach zu erklären. Bei UltraEdit gibt es für jede unterstützte Sprache genau 1 Installationsdatei. Damit muss man nicht ein sinnlos aufgeblähte Datei herunterladen, die alle möglichen Sprachen enthält, wovon man nur 1 Sprache wirklich braucht.

      Als Negativbeispiele referenziere ich da immer wieder gerne Treiber von Intel, Nvidia und anderen großen Softwarefirmen. Da muss man oft nach mühseligem Navigieren durch Listen mit Abfrage der Hardwarebezeichnung (die man nicht leicht ermitteln kann, vor allem wenn noch kein Treiber installiert ist), des Betriebssystems und der Sprache eine über 100 MB große Datei herunterladen, die erst wieder die Treiber plus oft sinnlose Zusatzprogramme in allen Sprachen für alle Betriebssysteme und eine ganze Palette ähnlicher Hardwarekomponenten enthalten. Bei der Installation wird dann auch gleich der Einfachheit halber die Zusatzsoftware in allen Sprachen installiert. Das führt die ganzen Abfragen zuvor ad absurdum.

      Das Problem der Variante von UltraEdit mit genau 1 Sprache in der Installationsdatei ist aber, dass UltraEdit nur einmal installiert werden kann, weil der Microsoft Installer (MSI) all die Dateien und Pfade in der Windows Registrierung festhält und somit die gleichzeitige Installation von 2 UltraEdit in 2 Sprachen praktisch verhindert. Man kann dieses System von Microsoft mit entsprechendem Know How überwinden, aber dann muss man bei Updates extrem aufpassen, dass nicht irrtümlich mit der deutschen Version von UltraEdit die englische Version aktualisiert wird und das Chaos dann perfekt ist. Die automatische Updatefunktion innerhalb von UltraEdit muss außerdem wissen, welche Installationsdatei heruntergeladen und ausgeführt werden soll. Da während des Updates UltraEdit beendet werden muss, werden die Informationen in der Windows Registrierung verwendet, um das Update oder sogar das Upgrade korrekt auszuführen. Bei 2 installierten UltraEdit muss man viel per Hand machen, damit nichts passiert, was die Funktionsweise eines der beiden UltraEdit stört. Außerdem muss man auch noch die automatische Prüfung auf Vollständigkeit der installierten Dateien von UltraEdit durch MSI abschalten, die bei jedem Starten von UltraEdit gemacht wird. Das System der Softwareverwaltung von Microsoft ist für Programmpakete, die in einzelnen Sprachen angeboten werden und nicht als Mehrfachsprachpaket leider ziemlich schlecht.

      Das Problem mit der automatischen Korrekturfunktion konnte ich mit ihrer Konfiguration nachvollziehen. Nach der Eingabe von lc werden diese sofort in Großbuchstaben umgewandelt. Seltsamerweise passiert das aber nur bei aktiviertem, automatischen Vervollständigem nach 3 Zeichen. Ist diese Funktion nicht aktiviert, bleiben die beiden Zeichen solange klein, bis ich ein Trennzeichen wie ein Leerzeichen, einen Zeilenumbruch, oder ähnliches eingebe. Tippe ich aber selbst nach längerer Pause weiter, bleiben die beiden Zeichen klein.

      Ich sehe keinen Grund, warum die Funktion der automatischen Korrektur bei aktiviertem automatischen Vervollständigen nicht bis zur Eingabe eines Trennzeichen bzw. Bewegen des Textcursors weg vom eben eingegebenen Wort mit der Prüfung des Wortes wartet. Nach meiner Einschätzung handelt es sich dabei um einen Programmfehler. Ich werde dieses nicht korrekte Verhalten per eMail an den IDM Support melden.

      Als Umgehungslösung schlage ich vor in progress91.uew noch eine weitere Sprache anzuhängen:

      /C7"No Auto-Correct"
      lc


      Damit wird lc jetzt nicht mehr automatisch auf LC korrigiert, sondern man muss das selbst mit Format - To Upper Case im Bedarfsfall machen. Als Farbe weißt man der Gruppe No Auto-Correct die Farbe für den normalen Text zu.

      Noch 2 Hinweise:

      Unter Here's help for finding settings in Configuration gibt es in einem selbstextrahierenden RAR Archiv TXT und RTF Dateien mit allen Einstellungen in englischer Sprache in der richtigen Reihenfolge. Damit kann man für eine deutsche Einstellung recht einfach die englische Bezeichnung ermitteln.

      Und unter Menu Commands (UE) bzw. deren Unterseiten findet man auch die englische Bezeichnungen für die Menübefehle. Da die Onlinehilfe in allen Sprachen verfügbar ist, kenne ich nun endlich die deutsche Bezeichnung für Templates: Textbausteine. Und die Einstellung auto-complete heißt auf Deutsch AutoVervollständigung, was ich als interessante Wortkreation ansehe.

      13
      Basic UserBasic User
      13

        Dec 16, 2012#3

        Ja, das mit dem Bindestrich als Trennzeichen hab ich mir fast gedacht, das ist schade weil es halt in Progress sehr viele Funktionsnamen (Befehle) mit Bindestrich (Minuszeichen) gibt. Kann man nichts machen. Wir haben jahrelang einen Editor verwendet der das sehr wohl getrennt hat, was auch Sinn ergibt. Egal es ist halt so wie es ist. Muss ich halt mit leben.

        Das mit dem korrigieren bei z. B. "LC" nur wenn man die Autovervollständigung bei X Zeichen einblenden gesetzt hat, ist ein interessanter Hinweis, das hätte ich ja nie getestet. Mich wundert halt nur warum die Zeichen schon korrigiert werden bevor überhaupt klar sein kann was gemeint ist. Vielleicht korrigiert IDM das ja, wäre schön, nervig ist das nämlich schon.