[gnome-builder/1074-vala-language-server-add-support-using-gvls: 23/24] GVls: Some fixes for Ide.Identer implementation
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/1074-vala-language-server-add-support-using-gvls: 23/24] GVls: Some fixes for Ide.Identer implementation
- Date: Sat, 14 Dec 2019 04:50:16 +0000 (UTC)
commit 0b4e8d0bd4386a90df9706538a6f7111f15a705f
Author: Daniel Espinosa Ortiz <esodan gmail com>
Date: Fri Dec 13 20:38:12 2019 -0600
GVls: Some fixes for Ide.Identer implementation
src/plugins/gvls/gvls_plugin.py | 43 ++++++++++++++++++++++-------------------
1 file changed, 23 insertions(+), 20 deletions(-)
---
diff --git a/src/plugins/gvls/gvls_plugin.py b/src/plugins/gvls/gvls_plugin.py
index ec97ab4d1..3346eab68 100644
--- a/src/plugins/gvls/gvls_plugin.py
+++ b/src/plugins/gvls/gvls_plugin.py
@@ -33,6 +33,7 @@ from gi.repository import GObject
from gi.repository import Ide
from gi.repository import Gdk
from gi.repository import Gtk
+from gi.repository import GtkSource
DEV_MODE = True
@@ -230,16 +231,17 @@ class GVlsDiagnosticProvider(Ide.LspDiagnosticProvider):
#
# Stolen from src/plugins/vala-pack/ide-vala-identer.vala
# Copyright 2015 Christian Hergert <christian hergert me>
+# Copyright 2019 Daniel Espinosa <esodan gnome org>
#
class GVlsIdenter (Ide.Object, Ide.Indenter):
def is_trigger (self, evkey):
- val = evkey.get_keyval ()
+ val = evkey.keyval
if val == Gdk.KEY_Return or val == Gdk.KEY_KP_Enter:
return True
if val == Gdk.KDEY_slash:
return True
return False
- def format (self, textView, begin, end, evkey):
+ def format (self, text_view, begin, end, evkey):
source_view = text_view
was_newline = self.is_newline_keyval (evkey.keyval)
copy = end
@@ -247,18 +249,18 @@ class GVlsIdenter (Ide.Object, Ide.Indenter):
# Move us back to the just inserted character
copy.backward_char ()
# If we are in a comment, continue the indentation
- if (in_comment (text_view, copy)):
+ if (self.in_comment (text_view, copy)):
# maybe close a multiline comment
if (copy.get_char () == '/'):
close = copy
if (close.backward_char () and close.get_char () == ' ' and close.backward_char () and
close.get_char () == '*'):
- begin.backward_char ();
- begin.backward_char ();
- return ("/", cursor_offset);
+ begin.backward_char ()
+ begin.backward_char ()
+ return ("/", cursor_offset)
if (was_newline):
- return indent_comment (text_view, copy);
- if (is_newline_in_braces (copy)):
- prefix = copy_indent (text_view, copy);
+ return indent_comment (text_view, copy)
+ if (self.is_newline_in_braces (copy)):
+ prefix = self.copy_indent (text_view, copy)
if (source_view.insert_spaces_instead_of_tabs):
indent = " "
else:
@@ -266,7 +268,7 @@ class GVlsIdenter (Ide.Object, Ide.Indenter):
cursor_offset = -prefix.length - 1
return (prefix + indent + "\n" + prefix, cursor_offset)
if (was_newline):
- return (copy_indent (text_view, copy), cursor_offset)
+ return (self.copy_indent (text_view, copy), cursor_offset)
return null
def copy_indent (self, text_view, iter):
begin = iter
@@ -284,31 +286,32 @@ class GVlsIdenter (Ide.Object, Ide.Indenter):
end.forward_to_line_end ()
return begin.get_slice (end)
def indent_comment (self, text_view, iter):
- line = get_line_text (iter).strip ();
+ line = self.get_line_text (iter).strip ();
# continue with another single line comment
if line.has_prefix ("//"):
return copy_indent (text_view, iter) + "// "
# comment is closed, copy indent, possibly trimming extra space
if (line.has_suffix ("*/")):
if (line.has_prefix ("*")):
- s = GLib.String.new (copy_indent (text_view, iter))
- if (str(s).endswith (" ")):
+ s = GLib.String ()
+ s.append (self.copy_indent (text_view, iter))
+ if (s.str.endswith (" ")):
s.truncate (len (s) - 1)
- return str(s);
+ return s.str
if (line.endswith ("/*") and not line.endswith ("*/")):
- return copy_indent (text_view, iter) + " * "
+ return self.copy_indent (text_view, iter) + " * "
elif (line.has_prefix ("*")):
- return copy_indent (text_view, iter) + "* "
- return copy_indent (text_view, iter)
+ return self.copy_indent (text_view, iter) + "* "
+ return self.copy_indent (text_view, iter)
def in_comment (self, text_view, iter):
- buffer = text_view.buffer
+ buffer = text_view.get_buffer ()
copy = iter
copy.backward_char ()
return buffer.iter_has_context_class (copy, "comment")
def is_newline_keyval (self, keyval):
if keyval == Gdk.KEY_Return or keyval == Gdk.KEY_KP_Enter:
- return true
- return false
+ return True
+ return False
def is_newline_in_braces (self, iter):
prev = iter
next = iter
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]