【Intellij IDEA / AndroidStudio】コードを縦に揃えて、あるカラムでソートできるプラグイン - String Manipulation

どちらがいいか、考えたことありますよね。


int robert_age = 32;
int annalouise_age = 25;
int bob_age = 250;
int dorothy_age = 56;


int robert_age     = 32;
int annalouise_age = 25;
int bob_age        = 250;
int dorothy_age    = 56;

意見が分かれることは私も知ってます。

コーディングは、自分自身の考えを表現する創造的な方法です。表現したアイデアを難しく見せてしまうようなツールであるのなら、インデントではなく、ツール自体を改善すべきでしょう。

👉 私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD hatena-bookmark

縦位置は揃っていた方が良いが、別に揃っていなくても我慢できなくはありません。むしろ、縦位置なんて諦めた方が総合的には幸せになれると思います。

👉 変数や配列の縦位置を揃えてはいけない!!(ほとんどの場合は) - Qiita hatena-bookmark

Android アプリ開発時 Gradle Version Catalog で TOML を使う場合に、見づらいので、縦に揃えたくなることありますよね?

idmodule でソートしたくなることありますよね?


そんな AndroidStudio (Intellij IDEA) プラグインがあります。

【AndroidStudio】コードを縦に揃えて、あるカラムでソートできるプラグイン - String Manipulation



Separators として、" " (半角スペース) のみを指定するのがおすすめです。

右上の column index を見ながら、id でソートできます。

【AndroidStudio】コードを縦に揃えて、あるカラムでソートできるプラグイン - String Manipulation

実際にファイルに反映するのも良し、見てチェックだけするのも良し。

便利です。他にも色々できます。

👉 String Manipulation - IntelliJ IDEs Plugin | Marketplace hatena-bookmark
👉 krasa/StringManipulation: IntelliJ plugin - https://plugins.jetbrains.com/plugin/2162 hatena-bookmark


CRITICAL WARNING: This version of python seems to be incorrectly compiled (internal generated filenames are not absolute)

PyCharm や Intellij IDEA Ultimate の 「Debug」 で見かけました。


/path/to/python3.11 /path/to/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/222.4345.14/IntelliJ IDEA.app.plugins/python/helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client 127.0.0.1 --port 59014 --file /path/to/test.py 
-------------------------------------------------------------------------------
pydev debugger: CRITICAL WARNING: This version of python seems to be incorrectly compiled (internal generated filenames are not absolute)
pydev debugger: The debugger may still function, but it will work slower and may miss breakpoints.
pydev debugger: Related bug: http://bugs.python.org/issue1666807
-------------------------------------------------------------------------------
Connected to pydev debugger (build 222.4345.14)
pydev debugger: Unable to find real location for: <frozen codecs>
pydev debugger: Unable to find real location for: <frozen importlib._bootstrap>
pydev debugger: Unable to find real location for: <frozen importlib._bootstrap_external>
pydev debugger: Unable to find real location for: <frozen zipimport>
pydev debugger: Unable to find real location for: <string>
pydev debugger: Unable to find real location for: <frozen posixpath>
pydev debugger: Unable to find real location for: <frozen _collections_abc>
pydev debugger: Unable to find real location for: <frozen os>
pydev debugger: Unable to find real location for: <frozen abc>
pydev debugger: Unable to find real location for: <__array_function__ internals>
pydev debugger: Unable to find real location for: <frozen genericpath>
pydev debugger: Unable to find real location for: <frozen io>

以下を Edit Configrations から Interpreter options に追加すれば消える。


-Xfrozen_modules=off

CRITICAL WARNING: This version of python seems to be incorrectly compiled (internal generated filenames are not absolute)

「Run」 や OS の Termnal から実行すると出ない。

IDE に同梱されてる pydevd が古くて、

Debug するスクリプト(インターラプタ) と pydev の バージョン間の相性がイマイチ

という感じか。

非stable な 3.11.x なども、コマンドのオプションとしてつけると消える。

👉 課題 1666807: Incorrect file path reported by inspect.getabsfile() - Python tracker hatena-bookmark
👉 "CRITICAL WARNING" error debugging Python 3.11 code : PY-56939 hatena-bookmark
👉 fabioz/PyDev.Debugger: Sources for the debugger used in PyDev, PyCharm and VSCode Python hatena-bookmark


Java home is different. が消えない。

私の場合は ./gradlew --info での表示に気づきましたが。


Java home is different.

これが消えない。

前にも似たようなことがありました。



設定の3ヶ所を確認する。


- IDE設定の変更

- 環境変数 JAVA_HOME の変更

- gradle.properties の org.gradle.java.home

👉 AndroidStudio 利用する Java (JDK) の選択・設定の方法 hatena-bookmark

3つの設定内容は一致している。

しかし、消えない。

調べるとこんな。

The last thing that helped is deleting both the .gradle and .idea projects. All of sudden, everything worked magically!
– Vinayak Ponangi Jun 2 at 19:00

👉 java - IntelliJ Build Error Context Mismatch - Stack Overflow hatena-bookmark

プロジェクト root 直下のディレクトリごと 2つ消します。


.gradle/

.idea/

削除後は、再度プロジェクトディレクトリを読み込むと、2つのディレクトリは新たに作成されます。

これで直りました。

なんすかね。

最近は、環境まわりではハマること多くなってきてません?

👉 Gradle sync failed: Java home is different. : IDEA-266535 hatena-bookmark


Macで通知センターの株価ウィジェットに「ドル円」などの為替情報を表示する方法

地味に出せない。

ここに「ドル円」を表示したい。

こんな感じでできるようです。

ドル円 mac ウィジェット

こうなりました。

Macで通知センターの株価ウィジェットに「ドル円」などの為替情報を表示する方法

SOL は「SOL-JPY」ですね、今気付きました。

👉 Macで通知センターの「株価」ウィジェットをカスタマイズする - Apple サポート (日本) hatena-bookmark


【Android Studio】TOML内のすべてをインライン・テーブルに書き換える Live Templates 用 Groovy スクリプト

以前書いたやつですが1行ごとでは面倒な場合が多いです。

toml live template
👉 【Android Studio】Gradle Version Catalog「Live Template」を使って インライン・テーブル に瞬時に書き換える hatena-bookmark

一括でまとめて


"androidx.cardview:cardview:1.0.0"

のような記述を


{ module = "androidx.cardview:cardview", version = "1.0.0" }

のように置き換えたいです。

今回は、簡単な Groovy スクリプト を使ってそんなツールを作ってみました。

Android Studio 単体で利用できます。

 

■ 使い方

Android Studio 上で、

TOMLなどの以下のような箇所を含む複数行をクリップボードにコピーします。


[libraries]
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-cardview = "androidx.cardview:cardview:1.0.0"

[plugins]
android-application = "com.android.application:7.3.1"
kotlin-android = "org.jetbrains.kotlin.android:1.7.20"

inl」 (inline) と文字入力して、Live Templates で一括置換したものを入力します。


[libraries]
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-cardview = { module = "androidx.cardview:cardview", version = "1.0.0" }

[plugins]
android-application = { id = "com.android.application", version = "7.3.1" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version = "1.7.20" }

必要な部分だけ置換します。

 

■ 設定

以下のスクリプト inline.groovy をどこかに配置します。

Android Studio の Live Templates にそのスクリプトを実行するように設定します。

注意する点は、スクリプトを配置した「絶対パス」を設定することです。

 

■ 追記

強引に正規表現で別ファイルを使わない版。
最近はこれを使ってます。


groovyScript("def ls = System.lineSeparator();return _1.split(ls).collect() { l -> l.replaceAll(/^([a-z0-9\\-]+) = \"([^\\:\"]+):([^\\:\"]+)\"/) { _, k, i, v -> \"$k = { id = \\\"$i\\\", version = \\\"$v\\\" }\"}.replaceAll(/^([a-z0-9\\-]+) = \"([^\\:\"]+):([^\\:\"]+):([^\\:\"]+)\"/) { _, k, g, a, v -> \"$k = { module = \\\"$g:$a\\\", version = \\\"$v\\\" }\"}}.join(ls)", clipboard());

👉 Gist - comment - inline.groovy hatena-bookmark

👉 Jetpack Compose Samples でも使われている「Version catalog update plugin」で libs.versions.toml を書き出してみる hatena-bookmark
👉 How to debug groovy script using in live template? – IDEs Support (IntelliJ Platform) | JetBrains hatena-bookmark
👉 Live template variables | IntelliJ IDEA hatena-bookmark