isGrep

開発日記

2020.3.5

C++ Builder10.3 Community Edition(以下CPB10)でビルドが通るように修正、動くようになった!
検索も動く。現isGrepに比べて10%くらい速い感じ。
最近のC++コンパイラーはClangが主流みたい。
現isGrep(C++Builder5)からの移植については、TntLibに対応したお陰で移植がやや大変だったが、大幅に見直すところも無かった。互換性が高い、というよりほとんど進化していないと言うことだろうか。

今日久しぶりにVisual Studio Code(以下VSCode)を使ってみた。VSCodeは実は色んな分野でデファクトになっているらしい。そんなに凄いのかと思い最新版を試したところ、isGrepに似た検索機能がある。
しばらくVSCodeを使ってみようかと思う。

もしisGrepに劣らない便利さであれば、isGrepの開発は終了か?

2020.3.11

VSCodeはよくできていて、メインのエディターを秀丸からVSCodeに乗り換えるべく色々と勉強中。
ただVSCodeをフルで使うとなると結構重いので(IntelliJみたいなあの感じ)、サクサクと編集したいときは秀丸のほうが良さそう。
isGrepとの比較はあまり進んでませんが、簡単な速度比較をしてみた。
と言ってもVSCodeもそこそこ高速化されているため十分速いし、客観的に計測する条件が今のところ見つけられていません。
(検索速度と言うより、ファイルの検索に時間がかかるためどちらかというとOS側の処理に時間がかかる)

とりあえず現在の感覚としてはisGrepと同等か、ときにはisGrepのほうが速いという感じでしょうか。
それと、isGrepのCPU負荷率は60%程度ですが、VSCodeは100%と使い切る。(6core12threadの場合)
同じ検索速度でCPU負荷が低いという観点からはisGrepのほうに軍配が上がるような感じです。

検索速度という点では五分五分、これだけでisGrepの開発終了という結論は無さそう。

あとは使い勝手や機能でしょうか。
VSCodeにはすでにpreview機能がありますし、我慢できるレベルであればisGrepの開発は終了するつもり。
それくらいVSCodeはよくできている。ただ、ちょっと重い。

2020.3.16

VSCodeとはいい勝負と言うことで、改善したisGrepを開発版として近々公開しようかと思います。
今のところVSCodeのgrep検索よりisGrepのほうが便利な気がします。
64bit版の開発も進めていましたが、こちらの利点は今のところ見つからないので一旦保留。

個人的な感想として、VSCodeはかなり高機能なのですが、キーボードだけですべてをやりたい人としてはほとんどのキーがアサインされていて新規のキーアサインに悩む。

2020.4.26 VSCode用isGrep拡張機能作成の巻き

VSCodeから容易にisGrepを使えるようにと、VSCodeの拡張機能を作ってみた。
こういうのは大抵罠があるのだが、、、やっぱりあった。

vsce publish
ERROR Missing publisher name. Learn more: https://code.visualstudio.com/api/working-with-extensions/publishing-extension#publishing-extensions

参照先を見てもpublishの仕方が書いてあるだけ。
ここに提案されているが、9ヶ月経った今でも改善されていない。
vsceおよび(あるいは)generatorを作った奴は馬鹿かと思う。

しかしこれを解決してもまた別のエラーが大量に出る。大量に出るが中身が何にもない。どういうエラーなのか書いていない。
vsce publish code ELIFECYCLE
これでググると同じようなエラーが出ていろんな対策が書かれているが、いずれもダメ。
エラーメッセージの中にある tsc というコマンドを実行しようとするとないと言われる。

npm install -g typescript

とやったらtscが入った。(あれ?今までtypescriptで動いていたのでは?)
んで、

tsc -p ./

とやったら、実は extension.ts にエラーがあった。

Qiitaとかにある紹介記事ほど簡単ではなかったけどようやく一般公開できた。

https://marketplace.visualstudio.com/items?itemName=TaN.isgrepext

以上の作業で丸々一日かかった。

VSCodeは色んな面でよくできている。
秀丸だとマクロを追加したり、キーの割り当てなどをかなりやらないと自分の期待した動作にならないけど、VSCodeだと必要な拡張機能の追加(これは好みと言うより、何をやるかによる)とショートカットキーのカスタマイズ程度をするだけでだいたい満足できる。
しかもショートカットキーなどはjsonをコピペすれば良いので複数のPCがあっても設定を容易に移せる。
秀丸はマウス無しでも操作できる設計になっているけど、VSCodeも基本的にそのようになっている。(まだマウスを使わなければいけない場面はあるけど、使っているうちに見つかる?)

しかし問題はgrep機能が今ひとつ。
最も大きいのがあの狭い画面でgrepするところだろうか。
検索速度はisGrepと同等かもしかすると速いときがあるけど、サイドバーのちっちゃな画面でgrep結果を見るのはかなり厳しい。これは秀丸のほうに軍配が上がる。
grep以外にもいくつか問題点はありますが、いずれ解決することを祈る。
それまではisGrepの存在価値はまだあるかな?
# 不思議なのはみんなgrepは何を使っているの?っていうのはある

いずれにせよMicrosoftが作った製品の中で久しぶりにまともな製品(?)ではないかと思う。
(その前はVisual Source Safeかな?あれも問題が色々あったけど当時としてはかなり良かった)

2020.5.13 VSCodeの不満点

VSCodeを使い始めてまだ2〜3ヶ月程度だと思うが、なかなか解決できない不満点がある。
特に秀丸にできてVSCodeでできない、よく使う機能は結構きつい。 今のところ大きなところでこんな感じだろうか。拡張機能を作れば対応できそうだが、、、
ググってもなかなか出てこないので、作るしかないかなぁ
逆にこれらの問題が解決できれば、ほぼ最強のエディターではないかと思う。

最強と言っても、今のところ秀丸から完全に乗り移る必要はない感じ。
その一つはVSCodeは基本的にプロジェクト単位で使った方がいいから。
プロジェクトとは関係のないファイルは今でも秀丸(などのエディター)を使っており、プログラミング言語でなければそれで機能的に十分。VSCodeはプログラミングをするためのエディターであるけど、それ以外であれば好みのエディターで十分という感じでしょうか。(markdownはVSCodeがいいかなぁ、HTMLは未だにHome Page Builder)

2020.5.18 VSCode Remote Developmentの巻き

Windows(VSCode) -> Linux(remote) での話。

問題点:
(1) Makefileで cd subdir; make みたいなことをやるとエラージャンプがそのままではできない
(2) isGrepでファイルジャンプができない(VSCodeにファイル名を渡してもRemote Developmentのウインドウで表示できない=別プロジェクト扱いになってしまう)

(1)に関してはtasks.jsonのfileLocationを書き換えることで対応できるが、そういうMakefileが複数あるとそのたびにtasks.jsonを書き換える必要があり、かなり面倒。
(stackoverflowなどで同様の問題がいくつかあり)

(2)に関してはisGrepが対応すればできそうな気がするが、どうやっていいのかわからない。
例えばエラーのあったファイルが
/home/user/project/test.cpp
だったとして、
Code.exe /home/user/project/test.cpp
と渡してもVSCodeが別プロジェクトと判断して新しいVSCodeのウインドウで起動してしまう。

「Remote Developmentは凄い」みたいな記事を見たような気がするけど、C/C++ではまだまだかもしれない。
ちなみにLinuxはCentOSで、gdbを使ったデバッグはgdbが古いだったか何だかの理由で使用できない。
gitもバージョンが古いと怒られる。
しかもログインした時点で「サポートしていないOSです」と警告が出る。
現在の環境でRemote Developmentにする利点はビルドエラーのジャンプ機能くらいしか無く、それすら面倒なところもあるので、vimを使ったビルドに戻そうかと思う今日この頃。

ということで、isGrepをRemote Developmentに対応する必要は(個人的に)なさそう。

2020.6.27

VSCodeを真面目に使い始めてそこそこ時間が経ちますが、VSCodeから離れられない最大の理由。

F12による変数参照
Alt+←→によるブラウザーのようなBack/Forward

これらがなかったらVSCodeから一旦離れたかな。
Visual StudioにもF12キーはあるけど、ほとんど使い物にならなかった。VSCodeの場合はそこそこ使える。Hitしない場合はisGrepで検索。

まだまだVSCodeには不満はあるのだが、上記二点があるせいで離れられない。。

2021.1.29 VSCodeで日本語の曜日の入力 - 曜日を日本語化

今日の日付を入力したい、曜日は日本語で。
そういう需要はあるはずなのに見つからなかった。
一番近かったのは、こちら
スニペットに落ち着いたようですが、できればキーボード一発にしたい。
(スニペットでいいのなら、ATOKなどのIMEを使った方がいい)

拡張機能を作ろうかと思ったけど色々と面倒なことをやらないといけないので、他人が作った拡張機能をtweakしました。

元の拡張機能:Insert Date String をインストール
変更ファイル:C:\Users\%USERNAME%\.vscode\extensions\jsynowiec.vscode-insertdatestring-2.3.1\out\src\extension.js
※拡張機能のバージョン番号によって変わるので注意
変更箇所:

function getFormattedDateString(userFormat = getConfiguredFormat()) {
    const now = new Date();
    return now.format(userFormat);
}
というところがあるはずなので、次のように追加します。
function getFormattedDateString(userFormat = getConfiguredFormat()) {
    const now = new Date();
    let weekday = ["日", "月", "火", "水", "木", "金", "土"];
    let regex = new RegExp('(w|W)', 'g');
    userFormat = userFormat.replace(regex, function(str){return weekday[now.getDay()];});
    return now.format(userFormat);
}
※変更したらVSCodeをreloadしてください。(Ctrl+Shift+P reload window)

それと、"Insert Date String"の設定に、
YYYY-MM-DD(W)
みたいな感じで設定します。

Insert Date Stringで日付を入力すると

2022-01-29()
めでたし。
(ここまでたどり着くのにウン時間かかった。。)

転載・拡散歓迎。
「私が作りました」と自慢してください(笑)