плагин gedit snippets не работает для кодировок, отличных от UTF-8

Я только что столкнулся с проблемой с плагином snippets из gedit 3.4.1, работающим на Ubuntu 12.04. Проблема заключается в том, что плагин snippets перестает работать (т.е. не реагирует на сочетания клавиш и завершение табуляции), когда файл имеет кодировку, отличную от UTF-8, т.е. г. ISO-8859-1. В этом случае плагин snippets больше не работает, и вывод ошибок в консоли приводит к следующему состоянию:

Traceback (most recent call last):
  File "/usr/lib/gedit/plugins/snippets/library.py", line 678, in accelerator_activated
    ret = cb(group, obj, keyval, mod)
  File "/usr/lib/gedit/plugins/snippets/windowactivatable.py", line 216, in accelerator_activated
    return controller.accelerator_activate(keyval, mod)
  File "/usr/lib/gedit/plugins/snippets/document.py", line 148, in accelerator_activate
    self.apply_snippet(snippets[0])
  File "/usr/lib/gedit/plugins/snippets/document.py", line 519, in apply_snippet
    env = self.get_environment()
  File "/usr/lib/gedit/plugins/snippets/document.py", line 483, in get_environment
    v = variables[var](buf)
  File "/usr/lib/gedit/plugins/snippets/document.py", line 348, in env_get_current_line
    return {'utf8': u8, 'noenc': self.string_in_native_doc_encoding(buf, u8)}
  File "/usr/lib/gedit/plugins/snippets/document.py", line 320, in string_in_native_doc_encoding
    except GLib.GError:
NameError: global name 'GLib' is not defined

По-видимому, существует проблема в файле / usr / lib / gedit / plugins / snippets / document.py, где функция GLib.convert вызывается всякий раз, когда кодировка документа не является UTF-8. Следовательно, если я сохраняю тот же файл, что и UTF-8, все работает хорошо.

Я не сильно разбираюсь в Python, поэтому любой указатель, как это исправить, будет высоко оценен.

1
задан 25 September 2012 в 15:54

1 ответ

По-видимому, эта ошибка собирается быть исправлена ​​в одной из следующих версий Ubuntu. Для немедленного исправления просто отредактируйте /usr/lib/gedit/plugins/snippets/document.py, изменив строку 22 с

from gi.repository import Gtk, Gdk, Gio, GtkSource, Gedit

на

from gi.repository import Gtk, Gdk, Gio, GLib, GtkSource, Gedit

(т.е. включите импорт GLib). Не забудьте перезапустить gedit: -)

0
ответ дан 25 September 2012 в 15:54

Другие вопросы по тегам:

Похожие вопросы: