[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