我成功地降级至 gedit 3.10.4这样我就可以继续使用 rgedit 插件了。虽然 gedit 似乎打开了,并且出现了 rgedit 菜单,但 rgedit 按钮并未添加到工具栏,并且该插件无法打开终端选项卡。该插件是用 python 编写的,我对此不太了解。
我如何让 gedit 识别这个插件的 python 代码,尤其是可配置的首选项?
编辑2:我确定这个问题不是代码问题,而是 Python 版本问题(16.04 附带 v3.5.1)。我可能会尝试安装 3.4,看看会有什么结果。
从终端启动 gedit 最初出现有关使用require_version
for 的错误Vte
,因此我在文件顶部添加了:
import gi
gi.require_version('Vte', '2.91')
现在错误已经消失,但是终端却出现了这个错误:
Traceback (most recent call last):
File "/home/jon/.local/share/gedit/plugins/RCtrl.py", line 2321, in on_create_new_R_tab
self.createRGeditTerminal(profile)
File "/home/jon/.local/share/gedit/plugins/RCtrl.py", line 2807, in createRGeditTerminal
self.R_widget = RGeditTerminal(self._plugin)
File "/home/jon/.local/share/gedit/plugins/RCtrl.py", line 231, in __init__
self.reconfigure_vte(self._vte,1)
File "/home/jon/.local/share/gedit/plugins/RCtrl.py", line 321, in reconfigure_vte
_vteN.set_colors(fg, bg, palette)
TypeError: argument foreground: Expected Gdk.RGBA, but got gi.overrides.Gdk.Color
RCtrl.py 中相关块的代码(约第 300 行):
# colors
_vteN.ensure_style()
style = _vteN.get_style()
if self._plugin.prefs['foreground'+str(tab_number)] == None:
fg = style.text[Gtk.StateType.NORMAL]
else:
fg = Gdk.color_parse(self._plugin.prefs['foreground'+str(tab_number)])
if self._plugin.prefs['background'+str(tab_number)] == None:
bg = style.base[Gtk.StateType.NORMAL]
else:
bg = Gdk.color_parse(self._plugin.prefs['background'+str(tab_number)])
palette = []
if isinstance(fg,tuple):
fg = fg[1]
if isinstance(bg,tuple):
bg = bg[1]
_vteN.set_colors(fg, bg, palette)
fg
我可以将和硬编码bg
为 Gdk.RGBA 值 和Gdk.RGBA(0.0, 0.0, 0.0, 1.0)
,Gdk.RGBA(1.0, 1.0, 1.0, 1.0)
但似乎真正的问题是prefs
未找到整个属性。我认为在第 2980 行左右它的定义如下:
class RCtrlPlugin(GObject.Object, Gedit.WindowActivatable):
__gtype_name__ = "RCtrlPlugin"
window = GObject.property(type=Gedit.Window)
# The plugin preferences:
prefs = {...[removed for simplicity]...}
除非用户在交互式点击窗口中更改首选项,否则首选项将设置为默认值,我可以显示该窗口,但 gedit 或 python3 或 ??? 似乎仍无法识别它。
有其他人成功运行过这个吗?