Linux」カテゴリーアーカイブ

Geany テキストエディタの続き

GNOME で使うと ibus 入力メソッドの変換候補位置がおかしかった件。
編集::設定::各種タブを開く。
editor_ime_interaction を 1 に変更で一般的な位置に出るようになった。
一度 Geany を再起動しないと摘要されないので注意。

前回終了時に開いていたタブを記憶するのがデフォルトなのは流行なのか?
スマホがそうだし時代か、いや IDE としてプログラミング専用なら都合いいか。
筆者は Gedit のように使うからセッションの保存は OFF にしたけど。

設定は GSettings ではなく ~/.config/geany 以下にすべてありますね。
他 OS 版もあるみたいだしそりゃそうするか、バックアップが簡単だし。
Kate は設定ファイルの多さ細かさに唖然としたからこのほうがいい。

Ctrl+z の元に戻すが酷くて使えない、複数行をズバッと戻されてしまう。
SourceView のようにパラグラフ毎に戻せるようにはならんのかなぁ。
やりなおしが Ctrl+y なのも変、Ctrl+Shift+z に変更できるけど。

HTML 閉じタグ自動補完が独立して存在するのがいいね。
綴じカッコの自動補完というゴミ機能と違ってコレだけはありがたい。

検索や置換のダイアログが完全に昔の Gedit で笑う。
設定が編集メニューの中にあるのが完全に昔の GTK+ アプリで笑う。

Themes | Geany

Gedit テーマがあって笑う!

gedit

マジで進化した Gedit じゃん、外観は Gedit2 だけどさ。
表示::色の設定で変更できます、よししばらくは Geany でいこう。

Geany テキストエディタ

Gedit が死亡してテキストエディタ難民になっている皆さん。
筆者は Kate を騙し騙し使っていました、でもやっと本命を見つけました。
Geany というアプリです、IDE と解説されていますが普通の編集もできます。

サイドバーやツールバーを消せば普通に軽量なテキストエディタです。
ただ開発者はハンバーガーメニューが嫌いなのか古くさいメニューバーです。

geany

GTK3 アプリですが各言語の最新仕様な色分けは独自に対応しています。
スクリプト言語であれば F5 キーで独自窓にて実行結果を表示できます。
その窓は Enter キーで閉じる、Gedit のボトムパネルより便利じゃん。
JavaScript は未定義なので Gjs あたりをビルドコマンドに設定する。

gjs "%f"

Ctrl+D で行の複製が最初から可能、Gedit では自作したのに。
他の文書を閉じる機能も最初からある、Gedit では自作したのに。

コードスニペットはデフォルトで有効、設定は snippets.conf にて。
各言語で for とかタイプした後に Tab キーを叩いてみてください。
Kate では Tab キーじゃないのが地味に苦痛だったので嬉しい。

snippets.conf に追記すれば独自スニペットも可能。
Gedit ほど柔軟ではなくデフォルトも指定できないし $0 も無いのが残念。
スニペットにカーソルを移動にキー割り当てがされていないので自分で設定。
筆者は Ctrl+Tab にしてみた。

geany

snippets.conf にこんな感じで追記していきます。
コメントアウトはデフォルトなのでデフォルトを変更したい場合に外して書き換え。
[Keybindings] でショートカット指定も可能、Kate はコレもできないんだよな。
変数は使えないみたい、%selection% が欲しいんですけど。

そして筆者には絶対に必要な機能。
Gedit プラグインまで自作してしまった html タグのエスケープ。
Python は使えないけど選択範囲を stdout に送る機能はある、ならば。

編集::書式::選択範囲を送る::カスタムコマンドを設定。

python -c 'import sys, html; sys.stdout.write(html.escape(sys.stdin.read(), quote=False))'

コレでイケるじゃないの。
ちなみに登録順に Ctrl+1 から自動で割り当てされる。

# アンエスケープ
python -c 'import sys, html; sys.stdout.write(html.unescape(sys.stdin.read()))'
# 赤文字にする
python -c "import sys; sys.stdout.write(f'<span style=\"color: red\">{sys.stdin.read()}</span>')"

どんどん登録しよう、プログラミングって楽しいよね。

世の中にはプログラミングのためのエディタを探しているはずなのに。
何故かプラグインを探してばかりで自力で拡張をちっとも書かない人が沢山いる。
そういう人って実はプログラミングなんて全然していないんだろうね。

シンボルを補完をオフ、自動補完はイライラするだけなんだよ。
行の入れ替えは Alt+Up(Down) に変更、何故 SourceView から変えた?
それだけで十分使えるな、プログラミングを本当にしている人なら気に入るはず。

ただ今は ibus の調子が悪いな、これは Fedora 側の問題なのかな?
多分そのうち修正されるだろう、ということで。

Fedora 41 Upgrade

Fedora に 41 へのアップグレード通知が来たので更新。

nautilus

おいおい Nautilus のサイドバーが更に使い辛くなってもーた。
別ページだった Network や使っていない Recent や Star が一等地に。
DnD で下に移動させようとしてもできないし、勘弁してくださいよ。

Whats new in Fedora Workstation 41 – Fedora Magazine

なんか色分けで解りやすいダイアログが増えたようで。
でもどうせ GTK4 ではなく Adw のほうだろう。

Adw.AlertDialog.set_response_appearance

普通に見つかった、Adw やるやん。
Adw.AboutWindow が廃止で Adw.AboutDialog を使えになっとる。
Adw.MessageDialog も廃止かよ、Tips ページを書き換えしなきゃ。

そうそう、Python は出たばかりの 3.13 が入っているよ。
もしかしてこれに合わせて 41 をリリースしたのか、偶然か。

あとは、筆者の使用範囲では 40 と違いが解らないなぁ。
関係ないけど mpv の osd タイトル設定が反映されなくなっている。

# タイトルはファイル名 -- タイトル名
#title=${filename} -- ${media-title}
windowcontrols_title=${filename} -- ${media-title}

osc.conf をこう書き換えたら摘要されるようになった。
mpv は以前のまま、また ffmpeg 側の仕様変更に巻き添えくらったか。

あとはまた何か見つけたら。

Gedit to Kate

以前書いたように Gedit が 2024 年以降もう期待できない。
ただでさえ GTK3 のままなのに、多分また開発者がいないのだろう。
言語の新しいキーワードに対応できないし追加機能もない。

他への乗り換えをしようと色々試してはいるんですが。
Sublime Text や Pulsar は日本語が入力できない。
GTK3 製やイライラする vscode は論外だし他は機能がチト。
Qt があまり好みではないけど無難な Kate にしようかと。

kate

Kate ってメニューバーを消すと自動でハンバーガーメニューになるんだ。
これなら GNOME で使っても見た目の違和感が少ないかもね。
PHP8 のヒアドキュメントインデントにもしっかり対応しているし。
ツールバーの「開く」を「Open」に書き換えできるのは笑った。

kate

拡張子が無いファイルも見分けしてくれた。
vi や Eaacs のモードラインは認識しないけどシバンを読んでいるようだ。
Kate 独自のモードラインには色分けつきでデフォルト対応。

Kate Modelines – Kate

ツールメニューに「Run Current Document」なんてのがある。
F4 で内蔵ターミナルを出した状態で実行するとシバンでスクリプトを実行する。
残念ながら F5 に指定できないみたいなので Ctrl+F5 に割付してみた。
フォーカスはエディタ側にある状態で実行してくださいね。

kate

Ctrl+Shift+Up(Down) で行の入れ替えも普通にできる。
アクティブなタブ以外を全部閉じる機能も最初からある。
Gedit では自分でプラグインを作ったのに、いや今は珍しくもない機能だが。
後は html エンティティー変換さえあれば自作 Gedit プラグインは再現できる。
スニペットから JavaScript を使えばあっさり作れそうだけど。

Kate Snippets

そのスニペットなんだけど、 Gedit 同様に選択文字列取得もできるけど。
Ctrl+Space から選択するしか流し込みする手段が無いんかいなぁ。
Gedit みたくキーワードから Tab キーの一発で流し込みをしたいんだが。
模索しているけど今のところネックはこれだけ。

てか Kate ってドエリャア多機能だ、知らなかったよ。
何故人気がイマイチなのか、まあ KDE の人気がね。

Gedit 46 Syntax Highlighting

Fedora 40 の Gedit でハイライト定義の変更が無視される件。
以下に定義を入れれば摘要されるはずなんですけど。

~/.local/share/gtksourceview-4

GtkSourceView4 に何か変更があったのか?
そう思って単純なテストコードを書いてみた。

#!/usr/bin/env python3

import sys, gi
gi.require_version('Gtk', '3.0')
gi.require_version('GtkSource', '4')
from gi.repository import Gtk, GtkSource
 
TEXTVIEW_CSS = b'''
#MySourceView {
    font: 10pt Monospace;
}'''

PYTHON_CODE = '''#!/usr/bin/env python3

fst = 'fstring'
print(f'Test {fstr} Syntax Highlighi')'''
 
class Win(Gtk.ApplicationWindow):
    def __init__(self, a):
        Gtk.ApplicationWindow.__init__(self, application=a, title='SourceViewTest')
        # GtkTextView
        view = GtkSource.View(show_line_numbers=True, name='MySourceView')
        # CSS
        provider = Gtk.CssProvider()
        provider.load_from_data(TEXTVIEW_CSS)
        view.get_style_context().add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
        # Python3 Highlighte
        lang_man = GtkSource.LanguageManager()
        lang = lang_man.guess_language(None, 'text/x-python3')
        view.props.buffer.set_language(lang)
        view.props.buffer.set_text(PYTHON_CODE)
        # GtkScrolledWindow
        sw = Gtk.ScrolledWindow(child=view)
        self.add(sw)
        self.resize(400, 100)
        self.show_all()

app = Gtk.Application()
app.connect('activate', lambda a: Win(a).present())
app.run(sys.argv)

01

普通に摘要されとるじゃん。
Gedit 派生の奴も試してみよう。

って Pluma は調べてみると Gedit2 派生かよ。
プラグイン作りに Python2 や PyGtk も必要だよな、ありえん。
Xed なら Gedit3 ベースだな、ツールバーを消せばなんとか。

02

やっぱり Gedit だけ摘要されない、マジで何でだよ。
他を試すのも面倒だし、しばらく Xed に乗り換えするかな。

と思ったけどコードスニペットと外部ツールが無いやんけ。
Atom や Sublime Text は別の手段があったけど Xed には無さそう。
単語補完というプラグインがあるけど、違うそうじゃない。
自作プラグインは Gedit 3.10 以前のを小変更で使えるかもだが。
新規タブが Ctrl+N に変更されているのはなんで?

Xed って Old Gedit のふりをした vscode になりたいの?
まあナンチャッテプログラマーにはこういうのがウケるんだろうけど。

だめだ Gedit をなんとかしなきゃ。
とにかく Gedit は他アプリとは別の場所を見ているってことだよな。
もしかしてと思って /usr/share の中を探してみる。

03

あった、こんな所に。
Gedit 46 は GTK3 ライブラリでなくフォークした奴を使っているのか。

libgedit-gtksourceview 300 Reference Manual: libgedit-gtksourceview 300 Reference Manual

それだから libgedit-46.so のサイズが 583MB もあるわけだ。
静的リンクにしたほうが Mac や Windows に移植しやすいよね。
もう面倒だ、直接このディレクトリに python3.lang をコピーしちゃえ!

04

それだとエラーで python3.lang がロードできないようです。

def.lang: Update Unicode identifier regexes (!149) ? マージリクエスト ? GNOME / gtksourceview ? GitLab

Gedit が使う GtkSourceView にはこの定義が無いってことですね。
正式な GtkSourceView-4 にはメンテで追加されているという皮肉。
原因は解ったけどコレでは対策手段が無い、お手上げです。

あと関係ないけど Nautilus のリネームで日本語が打てないね。
経験上 GNOME 45 の間はこのままかと、リネームアプリでも作るか。