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

Re: Gedit/LaTeXPlugin/XDvi & Reverse Search



Hi, here are two patches fixing the problem for me (with
LaTeXPlugin-0.1.3.1 and gedit-2.20.3) with (at least I suppose from the
initial code) two features more: 1) the line corresponding to the point clicked on in the dvi is
highlighted in the source, instead of just having the cursor on it;
2) the gedit window is pulled to the front.

I don't know if I achieved this the "correct" way, as I'm really new to
PyGTK and to LaTeXPlugin, which is definitely not a ten-lines plugin, but
at least it works!

Many thanks to Michael for this really great plugin! It is really useful.

Best regards,
Yannick Voglaire


PS: I dont know how to attach files so here are the patches:


---------------- DBusController.patch ----------------

--- DBusController.py +++ DBusController.py.modif
@@ -23,6 +23,8 @@
BUS_NAME = 'org.gedit.LaTeXPlugin'
OBJECT_PATH = '/org/gedit/DBusInterface'

+DVI_INVERSE_SEARCH = 2   # 0, 1 are ERROR, WARNING in
builder/Messages.py
+
try:
	from dbus import SessionBus
	from dbus.service import Object, method, BusName
@@ -42,9 +44,16 @@
		def inverse(self, filename, line):
			debug(self, "Got inverse DVI search: %s %s" % (filename, line))
			
-			self.__instance.set_active_tab_by_filename(filename)
-			wrapper = self.__instance.get_active_wrapper()
-			wrapper.select_line(line - 1)
+			tab = self.__instance.window.get_tab_from_uri(filename)
+			self.__instance.window.set_active_tab(tab)
+
+			helper =
self.__instance.document_helper_manager.find_helper(filename)
+			helper.jump_to_line(line - 1)
+
+			helper.language_helper.reset_dvi_highlight()
+			helper.language_helper.highlight_line(line-1, DVI_INVERSE_SEARCH)
+
+			self.__instance.window.present()
			
except ImportError:
	error(self, None, "Failed to import D-Bus bindings")




---------------- LatexLanguageHelper.patch ----------------

--- LatexLanguageHelper.py +++ LatexLanguageHelper.py.modif
@@ -28,10 +28,12 @@
from LaTeXPlugin.autocomplete.Controller import Controller
from LaTeXPlugin.common import TEXT, MATH, ConditionalSource,
PrefaceSource
from LaTeXPlugin.builder.Message import ERROR, WARNING
+from LaTeXPlugin.ipc.DBusController import DVI_INVERSE_SEARCH
from LaTeXPlugin.bibtex.BibTeXFile import BibTeXFile

ERROR_COLOR = "#ffe6e6"
WARNING_COLOR = "#fff2cc"
+DVI_INVERSE_SEARCH_COLOR = "#edf2ff"

_pattern_indent = compile("[ \t]+")

@@ -51,6 +53,7 @@
		try:
			self.__buffer.create_tag("error", background=ERROR_COLOR)
			self.__buffer.create_tag("warning", background=WARNING_COLOR)
+			self.__buffer.create_tag("dvi_inverse_search",
background=DVI_INVERSE_SEARCH_COLOR)
		except TypeError, s:
			# FIXME: this happens when deactivating and reactivating the plugin
			error(self, "__init__", s)
@@ -337,6 +340,8 @@
		
		if severity == WARNING:
			self.__buffer.apply_tag_by_name("warning", iter_l, iter_r)
+		elif severity == DVI_INVERSE_SEARCH:
+			self.__buffer.apply_tag_by_name("dvi_inverse_search", iter_l, iter_r)
		else:
			self.__buffer.apply_tag_by_name("error", iter_l, iter_r)
	
@@ -349,6 +354,17 @@
		self.__buffer.remove_tag_by_name("error",
self.__buffer.get_start_iter(), self.__buffer.get_end_iter())
		self.__buffer.remove_tag_by_name("warning",
self.__buffer.get_start_iter(),
+										self.__buffer.get_end_iter())
+		self.__buffer.remove_tag_by_name("dvi_inverse_search",
self.__buffer.get_start_iter(),
+										self.__buffer.get_end_iter())
+
+	def reset_dvi_highlight(self):
+		"""
+		Undo dvi inverse search highlighting
+		
+		Called at inverse from DBusInterface
+		"""
+		self.__buffer.remove_tag_by_name("dvi_inverse_search",
self.__buffer.get_start_iter(),
										self.__buffer.get_end_iter())
	
	@property




Reply to: