basyura's blog

あしたになったらほんきだす。

inkdrop - 独自コマンドを追加

↑ この辺を見ながらプラグイン化せずに ctrl+@ で active 一覧を表示する独自コマンドを追加してみる。

init.js

inkdrop.commands.add(document.body, 'mycmd:select-active', () => {
  inkdrop.commands.dispatch(document.body, "core:note-list-show-notes-with-status", {
    "status" : "active"
  })
})

keymap.cson

'body':
    'ctrl-@': 'mycmd:select-active'

inkdrop - sidetoc plugin

f:id:basyura:20200408222807p:plain

inkdrop で toc をサイドバーに表示するプラグイン。ある程度できたので公開。いきなり v1.1.0 になってしまったりとかあったけど。事前に tag をつけないで ipm publish minor で良かったっぽい。

↓ publish するとメッセージが表示されて嬉しかった。

f:id:basyura:20200408223221p:plain

機能

  • ヘッダ行を階層表示
  • カーソル移動時、スクロールバー操作時に該当位置のヘッダをハイライト
  • クリックで該当箇所にジャンプ
  • 設定でハイライト色とサイドバーの幅を変更可
  • サイドバー表示、非表示のショートカットキーあり (デフォルトは Ctrl+l)

キー入力やカーソル移動のイベントのたびに評価が走るので性能が微妙かと思ったけど特に問題は無さそう。いくつか TODO があるので勉強しながら継続改善予定。

plugin を作ると永久無料になる特典があるのだけど、 年契約でまだ半年も経ってないし応援したいのもあるので plugin 作成をもうちょっと頑張ってから申請してみたいなと思っている。

Redmine - view customize plugin でプロジェクト判定

特定のプロジェクトの場合に処理をしたい。 今まで Path pattern にプロジェクトの url が含まれているかで判定してた。

チケットを開くと url からプロジェクトが消えてチケット番号だけになったときに発動しなくて不便だった。

Path pattern を .* にして .current-project を見ればよかった。

Path pattern:    .*
Type:   JavaScript

$(document).ready(function(){
  if ($(".current-project").text() != "ほげぷろじぇくと") {
     return;
  }
  // やりたいこと
  // ・・・
}

inkdrop - sidetoc plugin

inkdrop で # 始まりのセクションをサイドバーに表示するプラグインを勉強がてら作成中。 パフォーマンスを無視してるけどひとまずカーソル位置のセクションを強調表示することができた。

React のあれこれがようやく繋がりだしてきたけどまだまだ先は遠そう。

vim + lsp で書いてるけど js は編集 (補完) が重い (設定の問題の可能性高し)。 Visual Studio Code は軽いのだけど VSCodeVim のキー設定がしっくりこなくて無駄に時間がかかってしまうので結局 vim で書いてる。

Visual Studio Code

食わず嫌いも良くないと思って触ってみたメモ

設定ファイル

  • ~/Library/Application Support/Code/User/
    • settings.json
    • keybindings.json

ショートカットキーメモ

key desc
Cmd+P Go to File
Cmd+B Open,Close SideBar
Shift+Cmd+P Show All Commands
Shift+Cmd+F Find in Files
^` Toggle Terminal

キーボードショートカットの設定起動

f:id:basyura:20200314233756p:plain:w300

VsCodeVim

細かいキー設定ができないのが若干つらい。Ctrl の組み合わせを除くと ↓ みたいな cc とか連続したキー入力を拾ってくれないみたい。

"vim.normalModeKeyBindings": [
    {
        "before": ["c","c"],
        "after": ["c","w"]
    }
]

v で visual モードに入った際に再度 v で行末まで選択する挙動も怪しかったけど これは Timeout を 100 にしたらいい感じになった。けど、上記の cc はやっぱり反応してくれない。

"vim.visualModeKeyBindings": [
    {
        "before": ["v"],
        "after": ["$", "h"]
    },
]

ドキュメントを見た感じできそうなのでもうちょっと調べてみる。

IME OFF

設定はあるのだけど期待した挙動じゃなさそうなのと C-jEsc 派としては色々なところ (Go to File のウインドウとか) でキャンセル(ウインドウ閉じるとか)したいので Karabiner-Element で ime-off もセットで設定。

Outline

サイドバーに表示はされてる。 eclipse (10年前) の outline が最強で便利だった記憶 (記憶補正あり)。 ポップアップで出て絞り込めてジャンプできて便利だった。 visual studio の拡張で自作したりはしてるんだけど VSCode もやるのはだるい。 拡張を検索してみたけどそれっぽいのもない (デフォルトで入ってるし)。

タブ移動

unite.vim に慣れてるので <C-n> で選択ウインドウが出て <C-n> or <C-p> で上下に選択対象を移動しつて <C-e> で開けるといいのだけどキーバインディングが柔軟じゃないので <C-.> , <C-,> でタブを左右に選択(移動)できるようにした。ブラウザの挙動で慣れてるので問題はなさそうに思うが、さっき触ったファルが右にあるのか左にあるのかを考えないといけないのはタブへの視線移動も発生してちょっと辛い。

タブを開きまくったときにどうなるか。今のところは <C-q> をタブを閉じるに当てているので要らなくなったらすぐ消せて気にならない程度にはなってる。

その他

  • 一回触ると編集を戻しても更新対象としてマークされちゃうのが地味に邪魔。

感想

  • MS 製品に染まりたくなくて避けてたけど、やっぱり便利。
  • 特に設定もなく js を開くと組み込みの宣言に飛べたりしてすごい。
  • visual studio ではかゆいけど手が届かない系が届くようになってきてる印象。

と、ここまで書いて慣れてきた visual studio を使ったほうが幸せになれるんじゃないかと思い始めたりしたけど、mac 版は触ったことないのでどうかなぁ。

雑に TOC を横に表示する inkdrop の plugin を作ってみた

年休が4月の繰越で消えてしまう分があるので休み気味 (年明けから帯状疱疹にかかったりして働いてないけど)。ここ数年でフレックスになるまではほとんどが遅刻対策の午前休に消えていて余るどころか足りない状態なので思ったほど休めてなかったのだと実感。フレックスもテレワークも最近使える(浸透してきた)ようになったのでいいのだけど、ずっと前から言ってたのにおせーよという印象しかない。そしてそれが当たり前に適用されている若者に若干の嫉妬を感じるけど、自分もそういうのを知らずと享受しているだろうからもっと良くなればいいねと考えることにする。

天気がいいので、カフェで mac でドヤリング。 駅周辺の店はコロナの影響でいつのまにか 11:00 開始になっていたので難民になりかけた。 相変わらず活動している人の数が減っているようだけど田舎育ちとしてはこれぐらいの方がむしろ良いと思っていたりする。

ちょっと趣味でプログラミングでもと思いつつ inkdrop に書き溜めてたノートを整理してたら時間があっという間に過ぎてた。

ノートを整理しながらちょうど pin 機能が欲しいなと思ったところだったので期待。 inkdrop の最新版が出たのは分かったけど、直ちに最新版に更新する方法が分からない。待ってれば通知が来るんだけど。

サンプルを参考に雑に TOC を横に表示するプラグインを作ってみた。

https://raw.githubusercontent.com/basyura/inkdrop-sidetoc/master/images/screenshot.png

inkdrop - plugin を作ってみる

evernote から inkdrop に切り替えて数ヶ月。いい感じ。 気になるのは検索をする時に手数が多くキーボードで完結しないのと検索を解除したときに元の状態 (開いてたタグとかノートとか)に戻らないところかな。 evernote は Ctrl+Q で検索窓にフォーカスがあたって便利な検索窓が出て連動してくれる。

windows の描画がやっぱり微妙で自分でスタイルを書いてフォントを UD Digi Kyokasho N-R にすることでどうにか落ち着いた。 ピッタリのフォントが見つかるまでもうちょっと時間かかりそう。

便利な plugin 機能があるので自分でも書いてみたなぁと思っているのだけど、React 周りが分かってないので勉強中。

試しにサンプルの wordcount を動かそうとしていたのだけど plugin が動かないどころかエラーが出て inkdrop にノートが表示されない。plugin の中身を色々削りながら試していったのだけど、結局の所原因はログに出てた。

Error: Cannot find module 'core-js/modules/web.dom.iterable'Require

ライブラリを入れたら起動した。

$ npm i core-js@2

これでいいのかはよく分からない。