plug-in de trechos de gedit não funciona para codificações diferentes de UTF-8

1

Acabei de encontrar um problema com o plugin de snippets do gedit 3.4.1 rodando no Ubuntu 12.04. O problema é que o plug-in de trechos para de funcionar (ou seja, não reage aos atalhos de teclado e à conclusão de tabulação) quando um arquivo possui uma codificação diferente de UTF-8, e. g. ISO-8859-1. Nesse caso, o plug-in de trechos não funciona mais e a saída de erro nos estados do console:

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

Aparentemente, há um problema no arquivo /usr/lib/gedit/plugins/snippets/document.py onde uma função GLib.convert é chamada sempre que a codificação do documento não é UTF-8. Conseqüentemente, se eu salvar o mesmo arquivo como UTF-8, tudo funcionará bem.

Eu não gosto muito de Python, então qualquer ponteiro como corrigir isso seria muito apreciado.

    
por ilpssun 25.09.2012 / 13:54

1 resposta

1

Aparentemente, esse bug está prestes a ser corrigido em uma das próximas versões do Ubuntu. Para uma correção imediata, basta editar /usr/lib/gedit/plugins/snippets/document.py , alterando a linha 22 de

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

para

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

(ou seja, inclua a GLib import). Não esqueça de relançar o gedit: -)

    
por ilpssun 25.09.2012 / 14:53