LSP (language server protocol) server での定義 jump は便利ですね。IDE は便利です。でも部分的にしか program を理解できなかったり、そもそも LSP は壊れたりします、おま環 (死語) ではありますが…。
結局 grep だとか ag が便利です。結局 print debug が便利なのに似てゐるかもしれません。
普段 Scala と TypeScript を書いてゐるので、その識別子の定義を探す ag wrapper です。
#!/usr/bin/env bb ;; -*- mode: clojure; -*- (require '[babashka.process :refer [process]]) ;; ag -G '\.scala$' "(class|def|object|trait|type|val|var) $1(?=\W)" (-> ["ag" "-G" "\\.scala$" "--color" (str "(class|def|object|trait|type|val|var) " (first *command-line-args*) "(?=\\W)")] (process {:in :inherit}) :out slurp println)
#!/usr/bin/env bb ;; -*- mode: clojure; -*- (require '[babashka.process :refer [process]]) ;; ag -G '(?<!\.test)\.ts(x?)$' "(class|const|function|interface|let|type|var|(^ *)) $1" (-> ["ag" "-G" "(?<!\\.test)\\.ts(x?)$" "--color" (str "(class|const|function|interface|let|type|var|(^ *)) " (first *command-line-args*))] (process {:in :inherit}) :out slurp println)
Clojure (Babashka) で書いてゐるのは、さういふ誓ひを立てたから…。
といふ會話をしたら、Go の發明者も似た事をしてゐると紹介する記事を書いていただけました。
動いてゐる閒は IDE は便利なので、使ってゐます。Emacs です (ぉ。上記のを ivy に組み込むといいんだよねぇ、氣が向いたら。