Text-Editor

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
Holle
Posts: 180
Joined: 01 Oct 2013, 23:19

Text-Editor

09 Apr 2014, 11:16

Hallo,
ich habe einen Text-Editor geschrieben. Es ist nichts besonderes, aber zumindest kann er folgendes:

-Suchen
-Ersetzen
-RegEx-Suchen
-Case Sensitive-Unterstützung
-Rückgängig machen
-Datei-Kodierung ändern
-Anzeige von Zeile/Spalte/Zeichen

Special thanks to "just me", deine Funktionen waren mir dabei eine große Hilfe!

Bitte postet Lob/Kritik/BugReport/Verbesserungsvorschläge. Vielen Dank.

Eine Verbesserung fällt mir selber schon spontan ein (bin aber zu faul das umzusetzen ;) ...diese habe ich direkt am Anfang als Kommentar mit eingefügt.

So, hier ist das Script:

Code: [Select all] [Expand] [Download] (SimpleEditor.ahk)GeSHi © Codebox Plus



Die benötigte Lib findet ihr hier: Holles_Lib.ahk

Letzte Änderung: Die zuletzt geöffnete Datei wird bei der Dateiauswahl "voreingestellt"
Last edited by Holle on 10 Apr 2014, 04:10, edited 3 times in total.
Johnny R
Posts: 209
Joined: 03 Oct 2013, 02:07

Re: Text-Editor

09 Apr 2014, 15:01

Und wo hat der Osterhase Holles_Lib.ahk versteckt?
User avatar
Holle
Posts: 180
Joined: 01 Oct 2013, 23:19

Re: Text-Editor

09 Apr 2014, 15:57

Verdammt, ich wusste doch dass ich was vergessen habe ;-)
Bin gerade per Handy on, lade die Lib dann morgen hoch. Sorry!

Edit: So, habe die Lib in einen eigenen Thread gepostet. Der Link ist im ersten Beitrag (ganz unten) hinzugefügt.
Johnny R
Posts: 209
Joined: 03 Oct 2013, 02:07

Re: Text-Editor

10 Apr 2014, 06:05

Haut bei mir (AHK 1.1.14.03 A32; Win7 SP1) leider nicht hin. Wenn ich eine Datei lade, bleibt der Editor leer. Die Datei wird zwar in der Ladeleiste aber nicht im Editor angezeigt.

#NoEnv wurde im Skript ergänzt.
User avatar
Holle
Posts: 180
Joined: 01 Oct 2013, 23:19

Re: Text-Editor

10 Apr 2014, 08:06

Komisch, ich nutze Version 1.1.13.01 (über Scite4AutoHotkey) auf einem Win7 (64 Bit SP1)-Notebook und bekomme keinen Fehler.

Kommt irgendeine Fehlermeldung?

Edit: Habe gerade ein Update auf 1.1.14.04 (32 Bit Unicode) gemacht, klappt immer noch wunderbar.
aaffe
Posts: 133
Joined: 16 Jan 2014, 04:23

Re: Text-Editor

27 Oct 2014, 01:58

Johnny R wrote:Haut bei mir (AHK 1.1.14.03 A32; Win7 SP1) leider nicht hin. Wenn ich eine Datei lade, bleibt der Editor leer. Die Datei wird zwar in der Ladeleiste aber nicht im Editor angezeigt.

#NoEnv wurde im Skript ergänzt.


Bei mir das gleiche. AHK 1.1.16.05, UTF-8, Windows 8.1
Öffne ich eine DAtei im Editor, steht in der ersten Zeile des Inhalts immer nur:
C:\Users\<MeinName>\AppData\Local\Temp
garry
Posts: 906
Joined: 22 Dec 2013, 12:50

Re: Text-Editor

04 Jul 2015, 01:34

Hallo Holle , gefällt mir gut
eine Frage betr. Cursor :
- ich möchte in ini-file letzte Text-Datei speichern mit Position von Cursor ( Zeile / Spalte bzw. Zeichen ( ist im script schon vorhanden ) )
und der Cursor sollte bei Start ( if file exist ) hierher springen / scrollen .
garry
Posts: 906
Joined: 22 Dec 2013, 12:50

Re: Text-Editor

30 Jul 2015, 07:04

habe jetzt das gleiche Problem wie user aaffe
und möchte noch beim Oeffnen dass der cursor auf die position springt wo ich zuletzt war ( speichert File und Cursor-Position )
User avatar
Gerdi
Posts: 60
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Text-Editor

03 Aug 2015, 19:02

wenn ich Dateien auserhalb von A_ScriptDir öffne ist es wie bei aaffe
Bei mir das gleiche. AHK 1.1.16.05, UTF-8, Windows 8.1
Öffne ich eine DAtei im Editor, steht in der ersten Zeile des Inhalts immer nur:
C:\Users\<MeinName>\AppData\Local\Temp

Wenn ich Dateien im Skriptverzeichnis öffne sieht alles OK aus

Gerdi
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 60
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Text-Editor

04 Aug 2015, 01:23

einmal ersetzen von

Code: [Select all] [Download] GeSHi © Codebox Plus

        SplitPath,FileName,FileName

durch

Code: [Select all] [Download] GeSHi © Codebox Plus

        SplitPath,FileName,NurFileName

einmal ersetzen von

Code: [Select all] [Download] GeSHi © Codebox Plus

        SplitPath,NewFileName,FileName

durch

Code: [Select all] [Download] GeSHi © Codebox Plus

        FileName:=NewFileName
SplitPath,NewFileName,NurFileName

zweimal ersetzen von

Code: [Select all] [Download] GeSHi © Codebox Plus

        GuiControl,Main:,SelectFile,%FileName%

durch

Code: [Select all] [Download] GeSHi © Codebox Plus

        GuiControl,Main:,SelectFile,%NurFileName%


behebt bei mir das Problem
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
garry
Posts: 906
Joined: 22 Dec 2013, 12:50

Re: Text-Editor

04 Aug 2015, 15:05

danke Gerdi , dies hat funktioniert
jetzt möchte ich noch dass :
-der Editor beim starten das letzte file öffnet ( ifexist) . ( ( im ini ist der Pfad schon gespeichert , Zeile / Spalte / Zeichen ist im Editor erfasst) )
und der cursor auf die position springt wo ich zuletzt war ( speichert File und Cursor-Position )
just me
Posts: 4440
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Text-Editor

05 Aug 2015, 00:28

Gerdi wrote:wenn ich Dateien auserhalb von A_ScriptDir öffne ist es wie bei aaffe
Bei mir das gleiche. AHK 1.1.16.05, UTF-8, Windows 8.1
Öffne ich eine DAtei im Editor, steht in der ersten Zeile des Inhalts immer nur:
C:\Users\<MeinName>\AppData\Local\Temp

Wenn ich Dateien im Skriptverzeichnis öffne sieht alles OK aus

Gerdi


Bei C:\Users\<MeinName>\AppData\Local\Temp dürfte es sich um den Inhalt der Environmentvariablen TEMP handeln. Um das abzustellen, sollte ein #NoEnv am Anfang des Skripts ausreichen, wie Johnny R es bereits oben gesagt hat.

Gerdis Änderungen (Willkommen im Club!) treffen aber des Pudels Kern, weil die TEMP Variable nur dann gezogen wird, wenn die FileRead,temp,%FileName% Anweisung erfolglos bleibt.

Edit: Ich würde allerdings SplitPath,FileName,FileName einfach löschen und SplitPath,NewFileName,FileName durch FileName := NewFileName ersetzen, weil ich meine, dass es Sinn macht, den kompletten Dateipfad anzuzeigen.
Last edited by just me on 05 Aug 2015, 03:00, edited 1 time in total.
User avatar
Gerdi
Posts: 60
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Text-Editor

05 Aug 2015, 02:33

Hallo Garry,

die letzte Datei laden sollte so (vor Ende des Hauptprogramms einfügen)

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



mit

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



gehen. Du rufst das Skript dann mit dem Übergabeparameter Last auf.
Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und sprechen mit Ihrem Artzt oder Apotheker.
(Nebenwirkungen sind nicht geprüft!)

Das mit dem genauen Ort in der Datei müsste Holle machen.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 4440
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Text-Editor

05 Aug 2015, 02:59

Hallo Gerdi,

Das mit dem genauen Ort in der Datei müsste Holle machen.
Ich fürchte, Holle kommt nicht mehr oft hierher.

Es geht ja darum, den richtigen Punkt im Skript zu finden, an dem das Wegschreiben der Position Sinn macht. Ich möchte mich aber nur ungern einmischen, weil ich die für mich kaum zu unterdrückende Angewohnheit habe, fremde Skripte auf meine Art der Programmierung umzustellen. Und bei diesem Skript springt dieser Trieb voll an.

Das hat nichts mit 'besser' oder 'schlechter' zu tun, ich kann halt nicht anders. ;)
Last edited by just me on 05 Aug 2015, 03:03, edited 1 time in total.
User avatar
jNizM
Posts: 2204
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Text-Editor

05 Aug 2015, 03:01

just me wrote:Ich fürchte, Holle kommt nicht mehr oft hierher.

Jup, sieht so aus...
Last active: Sun Mar 01, 2015 5:12 pm



just me wrote:... weil ich die für mich kaum zu unterdrückende Angewohnhet habe, fremde Skripte auf meine Art der Programmierung umzustellen. Und bei diesem Skript springt dieser Trieb voll an.

Haha :D Kenn ich nur zu gut, geht mir meinstens genauso ;)
[AHK] 1.1.26.01 x64 Unicode | [WIN] 10 Pro (Version 1703) x64
My GitHub Profile | Donations are appreciated if I could help you
User avatar
Gerdi
Posts: 60
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Text-Editor

05 Aug 2015, 04:31

Hallo Just Me
Es geht ja darum, den richtigen Punkt im Skript zu finden, an dem das Wegschreiben der Position Sinn macht.

wäre zur Einarbeitung ins Skript eventuell gar nicht schlecht.
Eigentlich bin ich nämlich daran interessiert einen Varianten-Editor zu erhalten (bzw. zur Not zu koden).
Unter einem Varianten-Editor verstehe ich einen Editor der z.B. die 2 Varianten eine Skriptes für
- AHK-Version 1.x
- AHK-Version 2.x
(beide Varianten sollen das gleiche tun,
die 1. mit AHK-Version 1.x
die 2. mit AHK-Version 2.x )
in einer Anzeige und einer Komplett-Datei unterstützt.
Die Zeilen die in V1 gleich sind wie in V2 werden ganz normal schwarz angezeigt.
Die Zeilen(-Teile) die sich unterscheiden werden übereinander ggf. in unterschiedlicher Farbe angezeigt.
Mal sehen ob ich die Zeit finde.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
garry
Posts: 906
Joined: 22 Dec 2013, 12:50

Re: Text-Editor

05 Aug 2015, 14:31

Vielen Dank für die Hilfe , Gerdi
es fehlt mir nur noch dass es zur letztbenutzten Cursor-Stellung scrollt

Angaben sind vorhanden : Filename , Zeile , Spalte , Zeichen
Zeile , Spalte , Zeichen noch im ini-file speichern
garry
Posts: 906
Joined: 22 Dec 2013, 12:50

Re: Text-Editor

05 Aug 2015, 14:33

@Gerdi
Die Zeilen die in V1 gleich sind wie in V2 werden ganz normal schwarz angezeigt.
Die Zeilen(-Teile) die sich unterscheiden werden übereinander ggf. in unterschiedlicher Farbe angezeigt.


ein kleines script , die Wörter , welche übereinstimmen , im msgbox angezeigt

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
Gerdi
Posts: 60
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Text-Editor

06 Aug 2015, 02:24

Danke Garry,

mit

Code: [Select all] [Download] GeSHi © Codebox Plus

        IniWrite, %CursorZeile%, SimpleEditor.ini, Position, CursorZeile
IniWrite, %CursorPos%, SimpleEditor.ini, Position, CursorPos


im Unterprogramm MainButtonSpeichern bekomme ich das Abspeichern hin,
aber das Einlesen mit

Code: [Select all] [Download] GeSHi © Codebox Plus

    IniRead, CursorZeile, SimpleEditor.ini, Position, CursorZeile,%A_Space%
IniRead, CursorPos, SimpleEditor.ini, Position, CursorPos,%A_Space%

war nicht erfolgreich, es wird irgendwo überschrieben.
Hier kannst Du probieren ob Du die Werte aktiv bringen kannst.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 4440
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Text-Editor

06 Aug 2015, 05:18

Moin zusammen!

Wenn ihr weitermachen wollt, hätte ich ein paar Tipps.

Das Skript hat leider (Verzeih bitte, Holle) einige Schwachpunkte. Dazu gehört auch das Ermitteln der Cursor/Zeichenposition. Holle macht das mit:

Code: [Select all] [Download] GeSHi © Codebox Plus

    ControlGet,CursorZeile,CurrentLine,,Edit3,A
ControlGet,CursorSpalte,CurrentCol,,Edit3,A
CursorPos := 0
Loop,%CursorZeile% {
ControlGet,Zeile,Line,%A_Index%,Edit3,A
CursorPos += (A_Index!=CursorZeile)?StrLen(Zeile)+!RegExMatch(zeile,"\s$"):CursorSpalte
}
Dabei wird zu StrLen(Zeile) abhängig vom Ergebnis des RegEx entweder 0 oder 1 addiert. Mir ist schon nicht wirklich klar, was der RegEx bezwecken soll. Tatsache ist aber, dass Edit Controls als Zeilentrenner 2 (unsichtbare) Zeichen verwenden: `r`n. In mehrzeiligen Edits mag die ermittelte Cursorposition deshalb vielleicht bezogen auf die sichtbaren Zeichen korrekt sein, nicht aber in Bezug auf die in der Datei enthaltenen sichtbaren und unsichtbaren Zeichen. Wenn man die Einfügemarke setzen will (dafür gibt es die Message EM_SETSEL), werden die unsichtbaren Zeichen aber immer mitgezählt.

Lange Rede, kurzer Sinn: Um die korrekte Position der Einfügemarke zu ermitteln, sollte man die Message EM_GETSEL nutzen. Die gibt den Start und das Ende der aktuellen Auswahl zurück. Wenn nichts ausgewählt ist, sind Start und Ende identisch. In jedem Fall entspricht aber Ende genau der Zeichenposition, an der das Edit Control die Einfügemarke anzeigt. Der Wert ist allerdings ein 0-basierter Index. Um ihn für den Benutzer etwas logischer zu machen, sollte man deshalb 1 addieren.

Die INI-Datei würde ich um zwei Einträge ergänzen:
LastModified - Zeitstempel der letzten Änderung, damit man überprüfen kann, ob die Datei zwischenzeitlich außerhalb des Skripts verändert wurde. Den Wert kann man sich nach dem Speichern mit FileGetTime holen.
LastPos - Position der Einfügemarke zu Zeitpunkt des Speicherns.

Man kann dann am Anfang des Skripts prüfen, ob die Datei existiert und nicht geändert wurde. Dann kann man die Einfügemarke per EM_SETSEL() mit Start und End = LastPos setzen.
Will man dafür sorgen, dass die Zeile mit der Einfügemarke in jedem Fall sichtbar ist, nutzt man dafür die Message EM_SCROLLCARET. Dann noch ein Gosub, WindowsMessage und vielleicht ein GuiControl, Focus, und schon sollte der Himmel glänzen.

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 1 guest