[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 3/4] kedit: Automatisch erzeugte Einrueckung bei Leerzeilen loeschen



+ kedit: Wenn zweimal direkt Enter gedrueckt wird, wird zuneachst die
  richtige Einrueckung beibehalten. Beim zweiten Enter wird die
  Einrueckung der ersten Zeile wieder geloescht, damit eine saubere
  Leerzeile entsteht.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/pas/kedit/kedit.pas |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/modules/pas/kedit/kedit.pas b/src/modules/pas/kedit/kedit.pas
index 420cc9e..3542b07 100644
--- a/src/modules/pas/kedit/kedit.pas
+++ b/src/modules/pas/kedit/kedit.pas
@@ -85,10 +85,19 @@ end;
 
 procedure Edit;
 
+    var
+        autoindent: boolean;
+        old_autoindent: boolean;
+
     procedure DoInput;
     var
         key: UnicodeChar;
     begin
+        // old_autoindent ist nur gesetzt, wenn schon der letzte Tastendruck
+        // ein Enter war.
+        old_autoindent := autoindent;
+        autoindent := false;
+
         with state do begin
             key := ReadUnicodeChar;
             case key of
@@ -149,10 +158,18 @@ procedure Edit;
                         cursX := 1;
 
                         if length(text^[cursY-1]) > 0 then begin
+                            autoindent := true;
                             while (cursX <= MaxColumns) and (text^[cursY-1, cursX] = ' ') do begin
                                 text^[cursY] := ' ' + text^[cursY];
                                 inc(cursX);
                             end;
+
+                            if old_autoindent then begin
+                                if text^[cursY-1] = Space(length(text^[cursY-1])) then begin
+                                    text^[cursY-1] := '';
+                                end;
+                            end;
+
                         end;
 
                         changed:=true;
@@ -194,6 +211,7 @@ procedure Edit;
 begin
     exitEditor := false;
     redrawEditor := true;
+    autoindent := false;
     repeat
         if redrawEditor then begin
             DrawEditor(@state);
-- 
1.6.0.2