editorconfig Gedit 41

「秀丸エディタ」が10年以上ぶりのメジャーバージョンアップ ?v9.00が正式版に – 窓の杜

Windows は会社でしか使わなくなって何年もたつので今頃知ったけど。
editorconfig って何だろう、モードラインよりイイのか?

チーム開発に効く環境構築術 | 第1回 EditorConfigのススメ | CodeGrid

モードラインじゃダメなのか?って感じだな。
あぁ VSCode というゴミクソエディタがモードラインを使えないからか。

EditorConfig

対応エディタって、よく見たら全部単なるプラグインじゃん。
Gedit のプラグインもあるのでチビッと試してみるか。

GitHub – editorconfig/editorconfig-gedit: EditorConfig plugin for Gedit

Gedit 41 だけど Gedit 3 用で動くだろう。
でもいきなり Installation が間違っています。

editorconfig.plugin
editorconfig_gedit3.py
editorconfig_plugin

editorconfig-core-py の中にある editorconfig
ディレクトリのコピーが必要でした。

editconfig

それと以下を書き換えする必要がありました。

editorconfig.plugin にて Loader=python3 に書き換え。
Loader=python のままでは Python2 を呼び出そうとする。

editorconfig_plugin/gedit3.py にて。
document.get_location は Gedit 40 から使えなくなっています。

#location = document.get_location()
location = document.get_file().get_location()

後は設定で有効にして .editorconfig を書いて。
筆者は Tab 設定を Python ガイドラインな半角スペース 4 つにしているので。

root = true

[*]
indent_style = tab
indent_size = 8

おぉ反映されるようになりました。
たださ。

// ex: noet ts=8

モードラインなら最終行にコレ書くだけでまったく同じことができるんだよね。
Gedit なら最初からプラグイン入っているし Atom にもプラグインあるし。

いや筆者はモードラインも拡張子が無いスクリプトに ft 指定するだけなんだが。
ただ Gedit も Atom もファイル判別が優秀すぎて滅多に必要が無いんだなこれが。

てかコレ別ファイルに記述なのでファイルタイプ指定ができないし。
拡張子が必ずある Windows 専用ですね。

pic 2022.01.30

今日のごじょ、、、、、ではなく久々の木曽川。
とにかく晴れそうになかったのでせめて違う場所にでもと。

monme

E-M5 ちゃん、こんなふうにしか使っていなくてごめんよ。
春になったらイッパイ使ってあげるから、多分。

sime

シメ、そうだココは冬にコイツが来るんだ。
地鳴きがけっこうやかましいということを今更知った。

haitaka

ハイタカ、だと思う。
何の鳥なのかわからずコッチを向いてくれるのをじっと待ったぜ。

tsunami

ツグミ、ココでは簡単に見つかりますね。
しかし見事に背景が真っ白な雲ばかりだなって。

shirohara

シロハラ、ツグミとはセットみたいなもの。
この鳥ってあまり人を恐れないというか普通に無視しますよね。

他にシジュウカラやコゲラやジョウビタキ等も撮影できました。
しかしココは今年の冬も鴨狙いのカメラマンばかりだなって。
フルサイズ換算 800mm でも米粒サイズでしか撮れない遠さなのに。

mpv @ Lua to Javascript

mpv を Lua で拡張するのが楽しい皆様。
こんなトコを見つけました。

GitHub – samhippo/mpv-scripts

参考になります、いやコピペでそのまま使ってもいいんだけど。
Windows 限定のコードが所々あるので macOS や Fedora の人は注意です。

そういえばこの人は複数拡張子のマッチをどうやっているんだろう?

mpv-scripts/next-file.lua at master ? samhippo/mpv-scripts ? GitHub

拡張子文字列で連想配列を作り値を全部 true に。

lua_nil

存在しなければエラーではなく nil になる、なるほど。
酷い手段だけど Lua 自体が色々とショボいからしかたがないか。

いやまて、この方法でディレクトリ内を列挙できるんだよな。
ls コマンドが不要なら正規表現が強力な Javascript を使うという手が。
とりあえず mp.utils を Javascript ではどう呼び出すか試す。

// ~/.config/mpv/scripts/test.js

function on_test() {
    //let dir = mp.utils.split_path(mp.get_property('path')); // ES5...
    var dir = mp.utils.split_path(mp.get_property('path'));
    mp.osd_message('Playng File: ' + dir[1]);
}
mp.add_key_binding('Ctrl+3', 'test_func', on_test);

なんだ、ドットで普通に使えるヤン。
しかし let 宣言でエラー、まさか今更 ECMAScript 5…

mpv.io

mpv.io にも書いていた、for-of とかも当然使えないな。
ES5 でも正規表現は同じはずだ、使ってみる。
以前書いたディレクトリ内で次のファイルを js で丸ごと書き換え。

// ~/.config/mpv/scripts/next_prev.js

var re = /\.(mov|m4v|mp4)$/i;

// Ctrl+DOWN でディレクトリ内の次ファイルを再生
function on_nextfile() {
    var dir = mp.utils.split_path(mp.get_property('path'));
    // カレントディレクトリだとドットになるので
    if (dir[0] == '.') dir[0] = mp.utils.getcwd();
    // ls
    var ls = mp.utils.readdir(dir[0], 'files');
    ls.sort();
    if (mp.last_error() == '') {
        // for-of が使いたい...
        var len = ls.length;
        var ex = false;
        for (var i=0; i<len; i++) {
            var f = ls[i];
            if (re.test(f) && ex) {
                mp.commandv('loadfile', mp.utils.join_path(dir[0], f));
                if (mp.get_property_bool('pause'))
                    mp.set_property_bool('pause', false);
                break;
            }
            ex = f == dir[1];
        }
    }
}
mp.add_key_binding('Ctrl+DOWN', 'nextfile_func', on_nextfile);

// Ctrl+UP でディレクトリ内の手前ファイルを再生
function on_prevfile() {
    var prevfn = '';
    var dir = mp.utils.split_path(mp.get_property('path'));
    if (dir[0] == '.') dir[0] = mp.utils.getcwd();
    var ls = mp.utils.readdir(dir[0], 'files');
    ls.sort();
    if (mp.last_error() == '') {
        var len = ls.length;
        var ex = false;
        for (var i=0; i<len; i++) {
            var f = ls[i];
            if (re.test(f)) {
                if (dir[1] == f && prevfn != '') {
                    mp.commandv('loadfile', mp.utils.join_path(dir[0], prevfn));
                    if (mp.get_property_bool('pause'))
                        mp.set_property_bool('pause', false);
                    break;
                }
                prevfn = f;
            }
        }
    }
}
mp.add_key_binding('Ctrl+UP', 'prevfile_func', on_prevfile);

動くジャン。
ただ ls と違ってソートしないとよくワカラン順番になるみたい。

loadfile は半角スペース付きでもダブルクォートで囲む必要は無かったのね。
というか URI にする必要すら無かった、とほほ。

とにかくコレで完璧な拡張子判別ができるようになった。
慣れた言語はやっぱり楽だね、言語仕様を調べる必要が無いし。
自由に改造して使ってください、Windows でも多分動くと思う。

pic 2022.01.22

今日の五条川。
雲一つない写真日和だけど夜勤明けで辛いので近所。

kisekirei

キセキレイ、今日も iso 800 のままでいってみる。
ブレやすいセキレイもいい感じになるね。

tsugumi

ツグミ、今年やっと撮れたけど遠い。
いや三月くらいになったらアホみたく簡単に撮れるはずだけど。

後は、イツメンしかいないなって。
でも前回に続いてトリミング無しでもイケるのが撮影できた。
ということで以下 5184x3888px そのまま付きで。

mozu
Full (5184x3888px 5.2MB

モズ、筆者に気がつかないのか近くにきてくれた。
ルミックスブルーが、いやそんなワードは無いけど空は綺麗です。

kawasemi
Full (5184x3888px 6.6MB

カワセミ、これまた凄く近い所に突如現れた。
あまり動かないんだからもっと iso 感度は下げてもよかったかな。

前回のメジロは顔ピンできなかったけど今日はイケた。
こんな日もあるから野鳥撮影は楽しいんです。

iso 800

今日の五条川。
久しぶりに涼宮ハルヒ緑地周辺へ。

突然ですが今日は iso 感度を 800 に固定して撮影する実験。
被写体ブレを減らしたいけどシャッター速度優先ではロクな写真にならない。
ならば iso 感度を許せる範囲まで上げて固定作戦、ということで。

yosigamo

ヨシガモ、こんな毛色が美しい鴨いるんだ。
あんまり綺麗に撮れなかったのが残念。

ooban

オオバン、おぉ羽が水を弾いているのも綺麗に撮れてます。
この鳥ずっとチョコマカ動いているのですぐ被写体ブレするんですよ。

hidorigamo

ヒドリガモとオオバンのコラボ、地上にいるのが目面しかったので。
うんいい感じ、iso 800 固定で何も問題ないな。

kawarahiwa

カワラヒワ、この鳥は警戒中だと動かないので楽です。
いや枝被りしてますけど、単なる次への前振り。

mejiro

メジロ、スゲェ久々に撮れたトリミング無し。
嬉しいのでこれまた久々にフルサイズ 2030万画素へ直リンク。
mejiro20220116.jpg (5184x3888px 5.6MB

しかし SILKYPIX でフルサイズ現像したらたったの 5.6MB って。
Lightroom の 20MB はいったい何の要素でこんなに巨大になるんだ?
同じ 5184x3888px なのに三倍も差が出るとは。

そんなこんなで、Adobe CC フォトプランを解約することにしました。
お金の問題ではなく上記とクラウドを使うメリットが筆者には無いのがさ。
てか、Photoshop をまったく使っていないという現実が一番の理由だけどね。
Lightroom のおかげで RAW 現像の勉強になりました、今までありがとう。

筆者は SILKYPIX の LUMIX 限定版でいいや。
E-M5 はそもそも Olympus Workspace でしか現像していないっていう。
この使用歩度で Abobe CC 会員を維持するのはちとオーバーかと。