日別アーカイブ: 2021/05/01

Gedit 40 Plugin

Gedit v40 は何も変わっていないように見えるが実は凄い進化をしていた。
ファイルをいくつ開いていても Ctrl+Q で終了できるようになっていた。
いや昔はそうだったような、記憶があいまいだけど。
とにかく最近は Ctrl+W で全部閉じた後に自身を Ctrl+W で閉じる必要があった。

地味に面倒くさかったのでこれは嬉しい。
Mac の Finder もこうしてくれないかなぁ、同じなんだが。

ところで。

筆者は自作 Gedit プラグインを公開していますけど。
repeat_line と a_href_picture の2つが v40 で動かなかった。
gir の指定を変更しなきゃなのかな。

gir3

3.0 のままじゃん。

gedit/meson.build ? master ? GNOME / gedit ? GitLab

本体は GTK3 のままで GtkSourceView4 になったってことみたい。
そりゃ IArg=3 指定のままプラグインは動いて当然だった。
よく考えたらプラグインで措定している Gtk も 3.0 のままだね。

repeat_line の不具合は簡単。
<Super> や Up|Down を set_accels_for_action 指定できなくなった。
困ったけどしかたがない、Ctrl+Alt+u Ctrl+Alt+d に変更しよう。

ついでにバグ修正、上記を実験している時に原因を発見したので。
行末でこのプラグインを動かしたら変な所にカーソルが飛ぶんだけど。
LF の後に流し込みをすると cursor_position も移動しちゃうのね。

# Check cursol position is LF?
is_lf = buf.get_iter_at_offset(buf.props.cursor_position).get_char() == '\n'

でカーソル位置が LF だった場合は自力で移動をしないことで回避。
最初に作った時はこんな処理いらなかったはずだけどなぁ。

a_href_picture のほうは結構困った。
「get_uri_for_display なんてメソッド無いよ?」
と怒られるんだけど公式サイトは以前のまま、解説が何も存在しない。
しかたがないので python の dir を使って自力で漁った。

doc = self.window.get_active_document()
#path = doc.get_uri_for_display() # under 3.38
#print(dir(doc)) # check method name
efile = doc.get_file()       # Gedit File Object
gfile = efile.get_location() # GFile
path = gfile.get_path()      # location string

無駄な処理をしている気がするけど今はこの手段しか見つからない。
そういえば GTK3 の最初期もこんなことをやったなぁ。
端末から gedit を立ち上げればこの stdout は出力できる。

修正はできたけどコレだけじゃ寂しいな。
そうだ html_escape にアンエスケープ機能の追加でも。
Python の html モジュールを使うだけ、2分で完成。
後は完全に GTK4 になった時に弄くるだろうしでそのまま。

しかし何故プラグインだけは古いバージョンの公開を続けているのか?
ページ内容が寂しかったという理由だけど今は公開数も増えたし。
最新版と一つ前だけ公開に変更しよう。

Gedit2 や Windows 版も今はもういいかなって。
Ubuntu は Gedit 3.12 にメニューバーを付けた前科を忘れないぞ。

Gedit 及び Eye of Gnome プラグイン – Paepoi

ということで Gedit version 40 版プラグイン公開しました。
関係ないけど EoG プラグインの画像が凄く古かったので差し替えた。