[Gambas-user] [Git][gambas/gambas][master] Enhance automatic string close behaviour.

Benoît Minisini gitlab at mg.gitlab.com
Wed Jan 31 19:46:11 CET 2018


Benoît Minisini pushed to branch master at Gambas / gambas


Commits:
b520218c by gambas at 2018-01-31T19:45:09+01:00
Enhance automatic string close behaviour.

[GB.FORM.EDITOR]
* NEW: Enhance automatic string close behaviour.

- - - - -


2 changed files:

- comp/src/gb.form.editor/.src/TextEditorMode.class
- comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class


Changes:

=====================================
comp/src/gb.form.editor/.src/TextEditorMode.class
=====================================
--- a/comp/src/gb.form.editor/.src/TextEditorMode.class
+++ b/comp/src/gb.form.editor/.src/TextEditorMode.class
@@ -9,6 +9,8 @@ Static Public Const BETWEEN_BRACES_LEFT As String = "([{"
 Static Public Const BETWEEN_BRACES_RIGHT As String = ")]}"
 
 Public CloseBraces As Boolean
+Public InsideStringEscape As Boolean
+Public InsideStringDelim As String
 
 'Private $bCanCloseBraces As Boolean
 'Private $bCanCloseBracesComputed As Boolean
@@ -41,6 +43,9 @@ Public Sub InsideString(hEditor As TextEditor) As Boolean
   iLen = hEditor.Current.Length
   sDelim = Me.STRING_DELIM
   
+  InsideStringEscape = False
+  InsideStringDelim = False
+  
   For I = 1 To hEditor.Column
     sCar = String.Mid$(sLine, I, 1)
     If sCar = sInside Then
@@ -48,10 +53,14 @@ Public Sub InsideString(hEditor As TextEditor) As Boolean
     Else If InStr(sDelim, sCar) Then
       If Not sInside Then sInside = sCar
     Else If sCar = "\\" Then
-      If sInside Then Inc I
+      If sInside Then 
+        Inc I
+        InsideStringEscape = I > hEditor.Column
+      Endif
     Endif
   Next
   
+  InsideStringDelim = sInside
   Return sInside
   
 End
@@ -95,6 +104,8 @@ Public Sub OnKeyPress(hEditor As TextEditor) As Boolean
   
   Dim iPos As Integer
   
+  InsideStringEscape = False
+  
   iPos = InStr(Me.BRACES_OPEN, Key.Text)
   
   If iPos And If CanCloseBraces(hEditor) Then
@@ -111,11 +122,24 @@ Public Sub OnKeyPress(hEditor As TextEditor) As Boolean
   
   If iPos Then
     
-    If String.Mid$(hEditor.Current.Text, hEditor.Column + 1, 1) = Key.Text Then
+    If Not InsideStringEscape And If String.Mid$(hEditor.Current.Text, hEditor.Column + 1, 1) = Key.Text Then
       hEditor.Goto(hEditor.Column + 1, hEditor.Line)
       Return True
     Endif
     
+    If InStr(Me.STRING_DELIM, Key.Text) And If hEditor.Column < hEditor.Current.Length Then
+      If InsideStringEscape Then Return
+      If InsideStringDelim = Key.Text Then
+        hEditor.SaveCursor()
+        hEditor.Insert(Key.Text)
+        hEditor.Insert(Mid$(Me.BRACES_OPEN, iPos, 1))
+        hEditor.RestoreCursor()
+        hEditor.Goto(hEditor.Column + 1, hEditor.Line)
+        '$bCanCloseBracesComputed = False
+        Return True
+      Endif
+    Endif
+    
   Endif
   
   '$bCanCloseBracesComputed = False


=====================================
comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class
=====================================
--- a/comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class
+++ b/comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class
@@ -60,6 +60,9 @@ Public Sub InsideString(hEditor As TextEditor) As Boolean
   sLine = hEditor.Current.Text
   iLen = hEditor.Current.Length
   
+  Me.InsideStringEscape = False
+  Me.InsideStringDelim = ""
+  
   For I = 1 To hEditor.Column
     sCar = String.Mid$(sLine, I, 1)
     If sCar = sInside Then
@@ -70,10 +73,14 @@ Public Sub InsideString(hEditor As TextEditor) As Boolean
         If sCar = "'" Then Return True
       Endif
     Else If sCar = "\\" Then
-      If sInside Then Inc I
+      If sInside Then 
+        Inc I
+        Me.InsideStringEscape = I > hEditor.Column
+      Endif
     Endif
   Next
   
+  Me.InsideStringDelim = sInside
   Return sInside
   
 End



View it on GitLab: https://gitlab.com/gambas/gambas/commit/b520218ce45881c9bf09af3d3ad9740d209619eb

---
View it on GitLab: https://gitlab.com/gambas/gambas/commit/b520218ce45881c9bf09af3d3ad9740d209619eb
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20180131/7b2cff26/attachment-0001.html>


More information about the User mailing list