最近vimいじり熱が再燃してindent-line-with-cursor-contextみたいなの作る機運がちょっと高まってきたんですけど、あれって何使って描画するといいんですかね?Neovim限定でもいいとは思ってるんですが

こんな感じのです
https://marketplace.visualstudio.com/items?itemName=SirTori.indenticator
Extension for Visual Studio Code - Highlights your current indent depth
Indenticator - Visual Studio Marketplace
https://github.com/lukas-reineke/indent-blankline.nvim があるんだけど、逆にtreesitterじゃなくてcursorの位置だけでcolorizeしたい
lukas-reineke/indent-blankline.nvim
Indent guides for Neovim
手間次第だけどdenopsでやりそうな気がする
matchadd?
denopsでやるならmatchaddpos使うのが手っ取り早そう
ただあのAPI遅いけど
カーソルコンテキストの表示なら問題なさそうな気はする
call nvim_buf_set_extmark(0, nvim_create_namespace('test'), 0, 0, { 'virt_text': [['a', 'Comment']], 'virt_text_pos': 'overlay', 'hl_mode': 'combine' })

これでいけた
CursorMovedで全行にこれ走らせるのヤバそう、既存のプラグイン見るとメモ化してるっぽいかな・・・
見えてる範囲だけでいいのでは感
あー、見えてる範囲なら毎回でもどうにかなる?
Neovimだけなら再描画しやすかったはず
あとdenopsならasyncでやってくれるのかな
lambdalisue 1日 09:41:54 Slack
ハイライトを async でやる旨味は無いのでは? 🤔
ひとまずNeovim限定で作って、set_extmarkのところをVimでも使えるように抽象化だけやって実装しておけばいいか
あ、highlight自体が最終的に同期実行されるからですかね?
Neovim、ScrollChangedイベントあったはずだしなんなら自動コールバックもあるので羨ましい
lambdalisue 1日 09:43:37 Slack
1. async の旨味は IO 待ち(ただし Deno プロセスに対しての IO 限定)
2. denops の旨味は CPU バウンドな処理が別プロセスに逃げる
ハイライトは上記の旨味のどっちも得られなさそう(Vim の CPU バウンドな処理なので)
お、それだとTextChangedとScrollChangedでどうにかなるのかな
理解しました、描画範囲のtextに関する処理とか別にありがたくないって感じですね多分
計算が複雑な場合に非同期になるくらいしか旨味なさそう
lambdalisue 1日 09:45:21 Slack
ですねー
textに関する計算処理、って書くべきだった
  • desune1
lambdalisue 1日 09:45:49 Slack
もちろん TypeScript で書ける!って旨味は消えませんがw
まぁめちゃくちゃな計算処理噛ませてもどうにかなってくれそうなのは便利
  • sorena1
TextChangedとScrollChangedで描画範囲のtext取得してextmark設定して終わりだと思ったより簡単そう?
削除とかちゃんとやろうとすると面倒なのかな
matchaddって文字列に対してハイライトをつける関数ですか?
pos指定して任意のhighlightするやつだった記憶が
:h matchadd
vim-jp-bot 1日 09:49:44 Slack

*matchadd()* *E798* *E799* *E801* *E957*
matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
カレントウィンドウで強調表示するパターンを定義する。このパター
ンのことを「マッチ」と呼ぶ。構文グループ {group}で強調する。戻
り値は、マッチを識別する ID である。この ID はウィンドウに紐付
けられている。|matchdelete()| でこの ID を指定してマッチを削除
することができる。この ID はウィンドウパターンは大文字小文字を
区別し、magic (|/magic|) として解釈される ({pattern} の中で明
示的に変更しない限り)。オプションの 'magic'、'smartcase'、
'ignorecase' は使用されない。
Concealは特別であり、マッチを隠す作用がある。

省略可能な引数 {priority} はマッチの優先度を指定する。優先度が
高いマッチは、より低いマッチの強調を上書きする。優先度は整数で
指定する(負の数も可能)。{priority} が指定されない場合は既定の
優先度 10 となる。'hlsearch' の優先度はゼロで、したがってゼロ
より大きい優先度のマッチはすべてそれを上書きする。構文ハイライ
ト('syntax' を参照)は独立したメカニズムであり、優先度がいくつ
であろうとマッチは構文ハイライトより優先する。

{id} は特定のマッチ ID を返すことを要求する。指定された ID が
すでに使われていたら、エラーメッセージが表示され、そのマッチは
登録されない。ID は正の整数を指定する(ゼロは除く)。ID 1, 2, 3
は |:match|, |:2match|, |:3match| 用に予約されている。{id} が
指定されないか -1 のときは、|matchadd()| が自動的に空いている
ID を取得する。

省略可能な引数 {dict} はより一層カスタマイズ可能な値を許す。
現在、これは|hl-Conceal|でハイライトされたマッチをconceal文字で
表示されるのを明示するために使われる。
この辞書は下記のメンバを持つことができる:

conceal マッチ(|hl-Conceal|のためだけにハイライトさ
れたマッチ、|:syn-cchar|を参照)の代わりに
表示する特別な文字
window 現在のウィンドウの代わりに、この番号もしく
はウィンドウ ID のウィンドウを使用する

コマンド |:match| と異なり、マッチの個数に上限はない。

例:
:highlight MyGroup ctermbg=green guibg=green
:let m = matchadd("MyGroup", "TODO")
このパターンを削除するには:
:call matchdelete(m)

|matchadd()| と |:match| で定義したマッチのリストは
|getmatches()| で取得できる。全てのマッチを削除するのは
|clearmatches()| 一発でできる。

|method| としても使用できる:
GetGroup()->matchadd('TODO')
pos指定はmatchaddposだったような…。
そうか、めっちゃ適当に覚えてたんでそうですね
matchaddでハイライト作ってconceal指定しといてmatchaddposすればいいのかな
まぁ、ひとまずNeovimの方が楽そうなんでそっちでやります
#neovim-plugins の方に投げたんですけど、リスト投げたら文字列マッチでハイライトさせる関数があるなら自分が欲しいちょっとしたプラグインを作れそうかなと。
こういうのあるしそんなに難しくないんじゃないですかね?
https://pocke.hatenablog.com/entry/2017/11/04/221926
speakerdeck.com また、作成に使っていたGoogle Slidesへのリンクはこちら。 The new syntax highlighter for Vim - VimConf2017 - Google スライド ボツになったスライドとか、メモとかが見れます。 何を話したのか 私が作っている、新しいVimのSyntax HighlighterであるIro.vimについて話しました。 Iro.vimは従来のSyntax Highlighterとは違い、ハイライトに言語が提供するパーサーを使用します。 例えばRubyにはRipperというパーサが提供されていますが、Iro.vimはR…
これmatchaddposで全部色付けてた気がしたけど違ったかな・・・
iro.vimはmatchaddposですね
ですよね
なんならこれにいい感じにリスト投げれるようにして終わりそう
https://github.com/t9md/vim-quickhl
t9md/vim-quickhl
quickly highlight <cword> or visually selected word
<https://github.com/t9md/vim-quickhl/blob/b63d478a7860dded6a6b675a0bdd891c022f1027/autoload/quickhl/manual.vim | manual.vim>

function! quickhl#manual#add(pattern, escaped) "{{{
if !s:manual.enabled | call quickhl#manual#enable() | endif
call s:manual.add(a:pattern, a:escaped)
call quickhl#manual#refresh()
endfunction "}}}
ただ、これライセンスがないから再利用できないですね…。
プラグインを作る事自体が目的なのか次第ですけど、個人的に使うだけならこれ入れてn回叩く関数用意したら終わりじゃないです?
そういう目的であれば問題ないと思われます。
もしプラグイン化も検討しているのであればSimilar productとしてこれを書いておいてdenopsなりで全て書き換えるのが良いと思います。
時間取れたら今日の夕方からdenopsでsugoi-indent-line作ろう
  • denops1
super-hyper-ultra-ultimate-indent-lineの方が名前映えするかも?
super-ultra-hyper-miracle-ultimate-indent-line にしよう
  • ultrafastparrot1
プラグイン名のインフレを見た
これはある意味逆のアプローチなのかな?(インデントの深さによって色が変わる)
https://github.com/thiagoalessio/rainbow_levels.vim
thiagoalessio/rainbow_levels.vim
A different approach to code highlighting.
小学生っぽいネーミングだなと思ったけど違うな、本物はとりあえずunkoと命名したりする
heavenshell 1日 15:35:43 Slack
💩 が縦に並ぶのか…。
iiindent-line にしましょう(いいインデントライン)
lambdalisue 1日 15:42:56 Slack
iiili
IIIlI
Tsuyoshi CHO 1日 15:46:27 Slack
ïndent-lïne (メタル・ウムラウト)
quickhl.vim、ライセンス追加してもらいましたよ
https://github.com/t9md/vim-quickhl/commit/be1f44169c3fdee3beab629e83380515da03835e
  • sasu_manbou9
そもそも作者生きてたんかワレ!と思いました。最終コミットが去年の地点でライセンス追加してもらおうにも対応してもらえる可能性ほぼゼロだろうと予想していましたし。
作者、過去に VimConf の運営メンバーやってた人です(面識あり)
  • naruhodo1
VimConfええなぁ
ちゃんとメンテはしてくれているのでたぶん私じゃなくても言えば対応してくれたと思うよ
heavenshell 1日 23:00:02 Slack
だいぶ失礼な物言いですね。ちゃんと言えば対応してくださる方だと思います。
生きワレは生きてていて嬉しい という意味も含まれてるので、まぁ…
  • naruhodo1
シンプルなプラグインだと、一度機能が安定してしまえばそんなに頻繁に更新する必要がなかったりするので、最終コミットの日付はあてにならないことも多いです。
  • sorena3
  • desune1
ダメ元で去年プルリク送ったら速攻リプライ来てビビりましたね
今はvscodeメインみたい
  • hee1
ATOMちゃんはもう…
空を超えて星の彼方まで行けるはずだったのに…
t9mdさんでさえVSCodeに乗り換えてしまったか
私の知ってるAtom使いももう誰も使ってない
t9md さんは割とカジュアルに環境を移しているイメージ (そして移した先を自分好みに開拓する)
https://github.com/shun/ddc-vim-lsp これってちゃんと動くやつですかね? 使い方がいまいちわからず…
shun/ddc-vim-lsp
vim-lsp source for ddc.vim
ちゃんと動きますね
  • 🙏1
そもそも source 名がわからないんですが
ddc-vim-lspがソース名みたいです
doc ディレクトリにドキュメントないし…プラグインの体を成していない
なるほど。ちなみにソース名ってどこ見ればわかるんでしょう?
ソースのファイル名かな(前はソース側が登録してたのでそこを見たような記憶が)
なるほど
ddc-vim-lsp ソース名にノイズが多すぎてアレ
  • wakaru1
雰囲気で導入できてしまったので気にしてなかったけど確かにdocないの不便
後、私はasyncompleteの動作に近付けるためにこんなの書いてます https://github.com/kuuote/dotvim/blob/fd5fe8e36d7ab8affa94cf060566e359622f48be/conf/ddc.toml#L25
<https://github.com/kuuote/dotvim/blob/fd5fe8e36d7ab8affa94cf060566e359622f48be/conf/ddc.toml | ddc.toml>

\ 'ddc-vim-lsp': {'forceCompletionPattern': '\.', 'minAutoCompleteLength': 0},
ddc-around とかも help がないんだよな。README はあるんだけども
help 全然引けなくてめっちゃ困ってる。しかたなく Vim を出てブラウザを開いている
設定の仕方参考にさせてもらおう
  • 👍1
さっき貼ったやつは.打つと発火するようにして文字数制限を撤廃する感じのあれです
今気付いたけどこれddc-vim-lspを先にしといた方がいいかな、後そろそろファイルタイプ制限取ってもいいか
そうか、順番関係あるんだったっけ
sourcesで指定した順番になります
優先順位に関わるってどこかに書いてあった気がする
従来のようなrankは廃止されました
Denite Uniteと同じ仕様
source filterにdocないのはどうせインストール時にしか読まれないことを考えた割り切りなんだけどどうしたものかな
deopleteでもまぁことごとく誰もdocは書かないんだよね、分量がないのもあるけど
params あるし、バージョンアップで更新される場合もありますからね
うーむ、とりあえずこちらで管理してるddc-sourcesについてはdoc追加しますか
ddc-vim-lspについてはissue作るのがよいと思います
本家に追従するみたいな動きもありますからねぇ。本家に help ないから自分のも書かなくていっか、みたいな流れができてしまう
eskk deoppetみたいなプラグイン同梱sourceの場合はdocに書いていたと思う
eskkはdoc見て設定しました
簡易的なものを追加することにして、READMEを簡素化かな
eskk も設定しようかとも思ったけど、一旦 skkeleton の人柱を始めてしまったから様子見…w
  • 🙇‍♂️1
補完ソースみたいな物だと自分はあまり気にしないけどプラグインだと気になってしまう
まだ言うほど人柱できていないのでもっと使わないと
Neovimのプラギンとかでよく見るけどあのdoc書かない文化はどこからやってきたのだろうか
宗教上の理由で使えない物が多すぎる
人は気を抜くと help を書かなくなる
カタカナモードほしー
1 件の返信 最終返信:3日 01:07:40
#←
チャンネルにも投稿済
実装しました
ういっす明日やります
  • sokudo2
そもそも、ドキュメント書く人が少ない
読む人も少ない
負のスパイラル
最低限の誰でも読むドキュメントとしてREADMEだけが整備されるようになったのであろう
自分も読まない事があるので何も言えない
neovim界隈ではプラグインが量産されてるから開発効率重視に見える
まあでも書いておくと、読んでないほうが悪いって言える
新しいプラグイン見てるとだいたいドキュメントがないか不十分
だから私はドキュメントちゃんと整備してますよ
  • erai1
skkeletonも最低限しか書いてないのでなんとかしないと
似たような問い合わせが多すぎるからドキュメントからコピペしている
ddc ももうちょい丁寧な記述は欲しさがある。不十分とまでは言わないけど。Shougo シリーズずっと使ってる人じゃないとわからんのでは、みたいなのは割とある
プルリクエストお待ちしています
  • hai-small1
ドキュメントあれだけ書いても不十分とはよく言われますね
ドキュメントを直せるほどプラグインの構造を理解できていない 😇
dein.vimのtomlの書き方がよくわからんというのは前に見たな
自分は分かりにくいとは思わなかったけど
最低限は書いてるけどあれは別にチュートリアルではないからね
チュートリアル望んでる人がいるのではないか
特に ddc は「無設定でも入れれば取りあえず動く」というものではないので、最低限使うためには何をすればいいのかが一番最初に step by step で書かれていると嬉しいような気がした (書くとは言っていない)
って書いてたら被ったな。チュートリアルですね
今は分かる人だけが使っている感じだと思われる
Shougo wareからはUNIXと同じ雰囲気を感じますね
有名プラグインは大量の紹介記事が書かれて
それがチュートリアルになってる感じはある
だから紹介記事かかれないと使われないね
作者が手取り足取りチュートリアルのドキュメント書くのはなんか違う気がするし
チュートリアルに関しては私もあんまり人のことは言えない…ドキュメントはリファレンス的に機能を網羅するようには書いているけど、導入に十分かと言うとそうでない場合が割とある
Vim「vimtutor 用意しといたで」
そもそも、設定ができない人が使うことを想定していない
設定ができる人がいかに自分の思ったとおりに設定できるかを強みにしているので、簡単に設定したいなら他を使うべきなんだよなぁ
  • sorena1
設定が簡単なプラグインはいくらでもあります
もうドキュメントの先頭に初心者お断りって書いておけばいい
ddc のドキュメントを見ても "What is source?" の説明は一切なく、その辺りは察している前提みたいになってますからね。一見さんお断りですよ
設定しないと完全に動かないから使うの無理ですね
そして「動かねーぞ」と言う Issue が… :totemoturai:
そういうのはまだ来てないですね
  • goodpoem2
denops自体ここの詳しい方々以外にはあまり普及してなさそうな気がしてる
(それともただの観察不足かな)
宣伝したので徐々に普及し始めてはいる
おそらくプラグインの依存関係で仕方なく入れる人が多くなるだろう
まあユーザーからするとそんなもんですよね
Deno自体なぜかvim-jpで異常に流行ったというだけでそこまで普及しているようにも思えないですし
これから普及させていくしかない
if_luaもPythonリモートプラグインも私がプラグイン作成に使ってたときはぜんぜん使われていなくて枯れてなかったよ
こういうのは慣れてる
枯れてない言語やフレームワークを触るのは何気に初めてなので楽しい
Denoもdenopsも目の前でどんどん成長しているので
それにまだまだ把握できる規模なので何かあってもバグ取りのPR送れる
cocに出したPR、2つともApprove貰ってるんだけどいつ入るんだろうこれ
ついでにDiagnostics対応も投げた
https://github.com/neoclide/coc.nvim/pull/3335
<https://github.com/neoclide/coc.nvim/pull/3335|#3335 Add option to show border on diagnostic float/popup window>
Added an option to show borders in the suggest window, similar to #3325 and #3326.

CleanShot 2021-09-02 at 08 48 56
他にfloat win使ってるところで設定可能にした方がよさそうなのあったっけ・・・
skudo_xx 2日 09:14:24 Slack
ドキュメント書いてなくてすみません。
書こうにもどう書くのが正解かがよくわかっていないのが現状です。
ここで皆さんがslackコマンドでhelpを出すのを見て、なんかちゃんとルールがあるんだろうな。。。と思いつつ書けていません。
もしよろしければ、ここ見れば良いとか教えていただければと思います。
適当なプラグインのhelpファイル見たらフォーマットは分かるかと!
ddc.vimのsourcesにドキュメントつける予定なのでそちらを見るのがよいかな
  • subara1
Gamou Tatsumi 2日 09:18:06 Slack
そういえばdps-ghosttextのdocを書くだけ書いたけどこれでいいのか自信がなくて放置してたのを思い出した
とりあえずpushした
基本的に横幅80文字まで

*foo* -> ジャンプされるリンク先
|foo| -> *foo* に飛ぶためのリンク
============================== -> 区切り

くらいしか自分も分かってないです
Gamou Tatsumi 2日 09:19:04 Slack
あれ、pushできたと思ったらできてない
sshが死んでる?
KosukeMizuno 2日 09:19:06 Slack
README.mdを:hで参照できるように整えてくれるツールとかないんですかね?
Masaaki Nakamura 2日 09:19:14 Slack
:help help-writing
vim-jp-bot 2日 09:19:14 Slack

3. ヘルプファイルの書き方 *help-writing*

プラグインのヘルプファイルは Vim の標準のヘルプファイルと同じ書式で書かれてい
ると便利です。あなたが新しいヘルプファイルを書くときは、既存のファイルをコピー
してそれをテンプレートとして使用するといいでしょう。

ヘルプファイルの 1 行目は次のように書きます:
Masaaki Nakamura 2日 09:19:37 Slack
ここをひととおり読むのがよいかと
  • 🙏1
coc-fzfがREADME to docをPython2のヤバそうなやつでやってます
https://github.com/antoinemadec/coc-fzf/blob/415535475c43fedb8bccd72fbcc00bb850113eb7/gen_doc_from_readme.sh
<https://github.com/antoinemadec/coc-fzf/blob/415535475c43fedb8bccd72fbcc00bb850113eb7/gen_doc_from_readme.sh | gen_doc_from_readme.sh>

#!/usr/bin/env bash

set -e

FILENAME="$(basename $PWD).txt"

# setup
git clone <https://github.com/xolox/vim-tools.git> || true
cd vim-tools
virtualenv --python=python2 html2vimdoc
html2vimdoc/bin/pip install beautifulsoup coloredlogs markdown

# fix Beatiful Soup error
sed -i "s/logger.addHandler(coloredlogs.ColoredStreamHandler(show_name=True))/coloredlogs.install(level='DEBUG')/" *.py

# gen vim doc
html2vimdoc/bin/python ./html2vimdoc.py --file=$FILENAME ../README.md > ../doc/$FILENAME

# hack the commands table
cd ../doc
sed -i 's/| Command | List |/| Command | List |~\n/' $FILENAME
sed -i 's/ | --- | --- | //' $FILENAME
sed -i "s/'\(:[^:]*\)'/\`\1\`/g" $FILENAME
echo "INFO: please align vimdoc's Commands table manually"

KosukeMizuno 2日 09:20:38 Slack
ヤバそうなやつ草
数日前にAwesome Neovim見てたとき他にもあった気がする
メモっとけばよかった
KosukeMizuno 2日 09:21:31 Slack
そういえば自作プラグインにはdocつけたことなし…README.mdあればいいだろと思って(小規模だし)
この前動画だけ付けましたね
https://github.com/yuki-yano/vim-textobj-cursor-context
fern-previewはREADMEしか書いてないな・・・
skudo_xx 2日 09:24:52 Slack
とりあえずコレくらいを守っておけばいいということですかね。。。
https://vim-jp.slack.com/archives/CLKR04BEF/p1630541924470300
基本的に横幅80文字まで

*foo* -> ジャンプされるリンク先
|foo| -> *foo* に飛ぶためのリンク
============================== -> 区切り

くらいしか自分も分かってないです
slacklog
KosukeMizuno 2日 09:25:18 Slack
他のプラグインのdoc読むときもgithubでみてるからあんまりhelp呼び出さないな…なんなら本体ヘルプもvimdocjaで見る
vim上でウィンドウきるのいつまで経っても慣れない
  • sorena1
1 件の返信 最終返信:09:31:22
#←
チャンネルにも投稿済
ウィンドウ以上に使ってない人が多そうですけど、広くしたいときはタブ切ってhelp見てます
<C-w>T で今のバッファを新規タブに飛ばせるので(使いやすいようmappingはしてますが)
pandoc で変換するやつを作ろうにもちょっと特殊なんですよね(用語のアンカーがあったり)
あとこういうコマンド作ってちょっと書きやすくしてます、もし参考になれば
function! s:option_to_edit() abort
setlocal buftype= modifiable noreadonly
setlocal list tabstop=8 shiftwidth=8 softtabstop=8 noexpandtab textwidth=78
setlocal colorcolumn=+1
setlocal conceallevel=0
endfunction

command! HelpEdit call <SID>option_to_edit()
  • 🙇‍♂️1
  • tips1
書いてるときconcealされると辛いとかがあるので
ウィンドウ以上に使ってない人が多そうですけど、広くしたいときはタブ切ってhelp見てます
<C-w>T で今のバッファを新規タブに飛ばせるので(使いやすいようmappingはしてますが)
このスレッドに返信しました : 他のプラグインのdoc読むときもgith ...
ddc-sourcesにdocを追加しました
  • otz4
  • goodjob2
今気付いたのだけど、ddc.vim とかのリポジトリの LICENSE ファイル、GitHub に内容が認識されてないですね。Copyright や年がないからだろうか (GitHub がどうやって判別しているのかはよくわからない)
定形フォーマットにどれぐらい近いかで判断しているのだと思います。
前は認識されてたんですけどね
結構チェックが厳密みたいですよ。
認識させるにはどうしたらよいのかよく分からないので放置してる
直すにも量が多すぎる
denops.vim のリポジトリとかは認識されている
どのみちフォーマットが間違っているのはそう
https://opensource.org/licenses/MIT
Copyright と年は最低限必要じゃないですかね。最初の行
Gamou Tatsumi 2日 10:19:17 Slack
ぽいですね、自動生成でもその二つはついてますし
Naoya Yamashita 2日 10:19:38 Slack
GitHubはどのgemでライセンスのチェックをしてるんでしょう。。?
Gamou Tatsumi 2日 10:19:47 Slack
<https://github.com/gamoutatsumi/dps-ghosttext.vim/blob/master/LICENSE | LICENSE>

MIT License

Copyright (c) 2021 Tatsumi Gamou

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Naoya Yamashita 2日 10:20:07 Slack
https://github.com/github/licensed
これかと思ったけど違うっぽい
github/licensed
A Ruby gem to cache and verify the licenses of dependencies
heavenshell 2日 10:21:45 Slack
  • naruhodo1
licensee/licensee
A Ruby Gem to detect under what license a project is distributed.
Yoshimasa Niwa 2日 10:21:48 Slack
LICENSE ファイルだけなのかな、見てるの。
Naoya Yamashita 2日 10:22:05 Slack
MIT、GPLと比較したときにCopyrightと年を更新しないといけないのが無限にめんどくさいと思っていたけど、Apache2.0ならその作業が必要ないと気づいて今度からそれを使うようにしたいと思っている
https://opensource.org/licenses/Apache-2.0
Yoshimasa Niwa 2日 10:22:12 Slack
SPDX とかは見ないのかな…
年の更新って必要なんです?そのソフトウェアが生まれた年固定だと思ってました
Yoshimasa Niwa 2日 10:22:38 Slack
Copyright の年は更新しなくていいという話 (IMNAL)
Yoshimasa Niwa 2日 10:22:54 Slack
変更があった時に、範囲指定は必要かも?
書こうと思ったら被りまくった。年は更新しなくて大丈夫ですね
Naoya Yamashita 2日 10:23:11 Slack
です。範囲指定の更新がいるかなと。
Naoya Yamashita 2日 10:23:26 Slack
プロジェクト作ったときにLICENSEを今年に変えるのも面倒
たしかに。ライセンスに変更があったら範囲指定とかは必要かも。でもそれもライセンス絡みの変更だけですよね?
Naoya Yamashita 2日 10:24:09 Slack
GPLならその作業いらなかったんですよね。でMIT面倒だなーと思ってたらApache2.0ならそもそもその行がないのでいらないと。
著作権表記(c) の年は、著作物が出た年だけ書けばいいはず。書きたければ範囲を書いてもいいけど、オプション。最新年だけを書くのは誤り
  • naruhodo2
Yoshimasa Niwa 2日 10:25:00 Slack
<https://github.com/licensee/licensee/blob/master/lib/licensee/matchers/spdx.rb | spdx.rb>

# frozen_string_literal: true

module Licensee
module Matchers
class Spdx < Licensee::Matchers::Package
# While we could parse the LICENSE.spdx file, prefer
# a lenient regex for speed and security. Moar parsing moar problems.
LICENSE_REGEX = /PackageLicenseDeclared:\s*([a-z\-0-9. +()]+)\s*/i.freeze

private

def license_property
match = @file.content.match LICENSE_REGEX
match[1].downcase if match && match[1]
end
end
end
end

ふむ、とりあえずddc.vimは修正してみるか
Ken Takata 2日 10:43:18 Slack
https://ja.wikipedia.org/wiki/%E8%91%97%E4%BD%9C%E6%A8%A9%E8%A1%A8%E7%A4%BA#%E6%9B%B8%E5%BC%8F
> 万国著作権条約に基づく著作権表示には、次の3つの表示が必要である。
> * ©(丸の中にC、丸C、マルシー)の記号 (symbol ©)
> * 著作権者の氏名 (name of the copyright proprietor)
> * 最初の発行の年 (the year of first publication)
> 順序は定められておらず、この順序でなくてもいい。慣習的に「©」を最初に書くことが多いが、氏名と年の順序はさまざまである。
著作権表示(ちょさくけんひょうじ)は、著作物の複製物につける著作権者や著作物の発行年等に関する表示である。著作者が著作権を取得するため、著作物の創作のほか、何らかの手続き等(方式)が必要な法域においては、著作権表示は重要な意味があるが、現在は、ほぼ全ての法域で著作権は、著作物の創作とともに発生するので、重要性は失われている。
raa0121 2021 © でも実は問題ないと
こっちで直したのPRで投げておきました。@Shougo
Gamou Tatsumi 2日 10:46:21 Slack
逆ポーランド記法っぽさがある
Naoya Yamashita 2日 10:47:04 Slack
PR、どんな変更なんだろうと思ったらGitHub落ちてて見えなかった
Tsuyoshi CHO 2日 10:47:23 Slack
https://ja.wikipedia.org/wiki/%E8%91%97%E4%BD%9C%E6%A8%A9%E3%83%9E%E3%83%BC%E3%82%AF
> この記号の使用は、アメリカ合衆国の著作権法[2]や、国際的には万国著作権条約[3]に規定されている。ただし、ベルヌ条約の下では登録・納入・著作権表示等の形式的手続がなくても著作物が創作された時に著作権が発生するという無方式主義が採用されたため、ほとんどの国で著作権マークによる明示をしなくても著作権を得ることができる[4]。
でもありますけどね....、まあテンプレに沿うのがアンパイ
Gamou Tatsumi 2日 10:47:45 Slack
このマークがカプセルコーポレーションにしか見えない
  • wakaru4
Naoya Yamashita 2日 10:47:46 Slack
ライセンスの変更は取り込みづらそう。
(ライセンスファイルの変更、オーナーがするものという認識がある)
  • wakaru1
Tsuyoshi CHO 2日 10:49:22 Slack
まあ、正しい内容になるのをオーナーが承認してマージするならアリな気がする
単に正しくMITライセンスと表示されるよう書き直しただけですね。
Naoya Yamashita 2日 10:54:46 Slack
いや、変更の意図は分かるんですが、、
Gamou Tatsumi 2日 10:55:45 Slack
結局はオーナーがそれを良しとするかじゃないですかね
個人的には取り込みづらいので「すまん自分でやるわ」って言ってcloseします
  • wakaru5
インデントプラグイン書いてたんですけど、空行のインデントってどう判定するべきなんですかね・・・
Vim スクリプトで書く場合は prevnonblank() で直前の空じゃない行を検索するのがよくあるやつですね。
既存のインデントプラグイン見るとよく分かるはず
twitter
delphinus @delphinus35
coq_nvim は全部入りで何も設定しなくて動くプラグインだが、新しいsource追加しようかと思ってコード読んだら、うへぇ、何もわからん、となったので、(source追加するだけなら)超簡単にできるddc.vimは神である。 #neovim #vim https://twitter.com/ShougoMatsu/status/1433275292626259968
Twitter
twitter
暗黒美無王 dark Vim @ShougoMatsu
デフォルトで良い感じにしようとすると、結局挙動をいじろうとしたときに苦労するわけですよ。
私は何度も見てきました。
そうなると、デフォルトで良い感じにするというのは幻想だと思いませんか。
Twitter
直前の空じゃない行見てもダメな場合がありそうなんですよねー
何のインデントを書いてて何が想定されてるんでしょう?
ちょっと今バグってるんでそこだけ直ったらスクショ貼ります!
@Milly こういう場合です、returnの上下の行は同じコンテキストのはずなんだけど上の行を見るだけだとインデントが取れない
インデント正しそう
↑の何行目のインデントを計算したいんです? 12? 13?
12と14を揃えたい、ですね
treesitter案件かなぁ
何が間違ってると思っているのかがわからない。
ここだけ見ても正しくインデントされているようにしか見えない
これはこれで正しいのか・・・?
どうなるのが正解だと思われてますか?
12行目と14行目がどっちも空白行なんですけど、表示されるインデントとしてはどちらも12行目にしたいと思ってます
……?
いや14行目にしたい、でした
画像でお願いします。
Tsuyoshi CHO 2日 14:12:23 Slack
正解画像とならべて、NGな部分を追記(ペンとかで)するのもありじゃないかな
上からインデント値を引き継ぎつつ計算するから 12 行目の空行のインデントが 0 扱いされてしまうというのをなんとかしたい的な話っぽい
空行は空行なのでインデントは一切関係ないのでは
14 行目も空行ですが、13 行目で計算したインデントをそのまま適用できている。12 行目はどうしよう…。という意味かと思います。
どっちが正しいかは分からないですけど、このどちらかにしたい、という意図です
今は前後の行によってインデントが描画されるかがずれてる
function foo() {
if (cond) {
| |
| foo
| |
}
}

function bar() {
if (cond) {
|
| bar
|
}
}
普通に計算したら同じになるのでは…?
  • 🙇‍♂️1
1 件の返信 最終返信:14:16:43
hrsh7th 2日 14:16:43
たしかに言われてみれば同じになりそうでした…🙇‍♂️
https://vim-jp.slack.com/archives/CLKR04BEF/p1630556085013300
多分これとほぼ同じことをしてるんですが、ずれるはず
Vim スクリプトで書く場合は prevnonblank() で直前の空じゃない行を検索するのがよくあるやつですね。
slacklog
たしかに…、見てみたら普通に同じになりそうだった…
と言うかこれって JS です? 既存のものだと問題があるから作り直そうとしているとかですか?
既存ので不満があるからちょっと書いてました、denopsですね
denops という言語はない…
TypeScript ですよね
インデントプラグインって vim にも付属してる runtimepath/indent/*.vim のことでしょうか、それとも別のものを指してますか?
あ、伝わるかと思って端折ったけどTSって意図でした
あー、すみません
今プラグイン書いてるって話でした・・・
インデントプラグインと言ったらそれ以外にはないはず
> インデントプラグインって vim にも付属してる runtimepath/indent/*.vim のことでしょうか
既存のいろいろやってくれる系のプラグインですね、indent-lineとかが有名?
インデントを可視化するプラグイン?
あ、そうです
全然別の話やんけ
めっちゃ言葉不足してた、昨日better indent-line作りたいみたいなことをここで書いてたんで勝手に繋げちゃってました
すみません
Extension for Visual Studio Code - Highlights your current indent depth
Indenticator - Visual Studio Marketplace
やっと話が見えてきた
つまり空行のインデント量が実際にはどれくらいか知りたいって話ですね
はい、そうです
https://vim-jp.slack.com/archives/CLKR04BEF/p1630556085013300
を見て伝わった上でそう実装するって話しに読んじゃってた
Vim スクリプトで書く場合は prevnonblank() で直前の空じゃない行を検索するのがよくあるやつですね。
slacklog
Vim が使っているインデントプラグインの結果でいいのであれば、以下の方法で出せます
let v:lnum = {調べたい行の番号}
let indent = eval(&l:indentexpr)
"Vim のインデントプラグイン" 書いてると思ってたわけであります。
私もそうだと思ってた
  • me-too1
これ、愚直にgetlineで取った値から自分で計算してるんですけど一気に取る方法あったりします?
上の処理を数千行ループさせたらどうなるんだろう
たぶんなさそう。そしてでかいと当然重いですね…
以前も誰かが言っていたけど、ひとまず見える範囲だけ計算するのがいいんですかね
ですね、見える範囲取るのってやったことないんですが何使えばいいんでしょう
line('w0')
ただ、折りたたみがあると結局かなりの行数が含まれることになりますね。
w0とw$か、なるほど
折り畳まれているかどうかも調べる…?
カーソル行 +- searchcount って方式もある。
スクロールしたかどうかってautocmdで取れたりします?
CursorMovedは重そう・・・
Tsuyoshi CHO 2日 14:35:14 Slack
nvimだとScroll系があるそうだけどvimにはない、のかな?
お、ひとまずneovimにあるならそれでやろう
あーそうなんだよねぇ。スクロールイベントないんだよね… WindowScrolled ほしい…
空行のインデント量、ざっくりと、前後の空行じゃない行のインデントのうち大きい方、とかでもいいのかもしれない (インデントプラグインの結果を計算するのはそれなりに重い & インデントプラグインがない場合もある)
描画範囲の空行だけひとまずVim経由で取るようにしてみます
ところで可視化するのはどうやってるんでしょう。
空行に対してEOLより後の位置に描画ってできるんですかね?
2 件の返信 最終返信:16:04:57
virtual textで存在する行に対してはoverlayで描画
空行に対してはeolで後ろに描画、で対応可能っぽいとこまでは確認しました
存在する行にはcolを指定して(必要に応じてhighlightを変えて)1文字ずつ描画
空行にはn個のvirtual textをcontextに応じて色を変えて繋げて描画
がやりたいことに対して必要な処理ですね

描画のモード?変えないといけないし計算も全然変わるしでめっちゃだるい
floatwin?
Neovim だと virtualtext とかもあるんだっけ
こんな感じです
[[ダウンロード: 無題(TypeScript)]]
const renderIndent = async (denops: Denops, lines: ReadonlyArray<Line>) => {
  await Promise.all(extmarkIds.map(async (id) => {
    if (id != null) {
      denops.call("nvim_buf_del_extmark", 0, await getNamespace(denops), id);
    }
  }));
  extmarkIds = [];

  const indentWidth = await getIndentWidth(denops);

  Promise.all(
    lines.map(async ({ indent }, i) => {
      if (indent <= 1) {
        return;
      }

      const lineNumber = startLine + i - 1;
      const virtText = ` ${
        `${" ".repeat(indentWidth - 1)}|`.repeat(indent - 1)
      }`;

      return await denops.call(
        "nvim_buf_set_extmark",
        0,
        await getNamespace(denops),
        lineNumber,
        0,
        {
          virt_text: [[virtText, "LineNr"]],
          virt_text_pos: "overlay",
          hl_mode: "combine",
        },
      ) as number;
    }),
  ).then((result) => {
    extmarkIds = result;
  });
};
で、これだと実現したいことが100%実現できない設計ミスに気付いたから1回寝かせます・・・
1行1行インデントの描画を完成させてからextmarkで差し込んでるので部分的にハイライトを変更することができない
これextmarkの仕組み的に空行への色を変えつつ差し込む対応が死ぬほど面倒そうだ
おそらく空行に存在する既存のVirtualTextもぶっ壊しちゃうからその復元処理も挟む必要が・・・
ddc.vim で、custom の設定値を取得することってできないでしょうか?
特定のバッファでグローバルの sources に source を追加したものを patch_buffer で設定したいです。
できます
ddc#custom#get_globalとかのAPIがあります
ドキュメントにないですね…
ドキュメント追加しました
  • sokudo2
ありがとうございます!
indent-lineっぽいものがひとまずdenopsで大分楽に作れたので供養しておきます
カーソル位置でインデントの色を切り替えるのはextmarkの付け方を根本的に作り直さないといけないからまた今度・・・
https://github.com/yuki-yano/dps-indent-line
  • otz1
yuki-yano/dps-indent-line
https://github.com/octaltree/cmp-look これを試したのだけど、文頭の単語が大文字になるときにうまく補完されない気がするな
octaltree/cmp-look
20 件の返信 最終返信:19:09:09
octaltree 2日 17:09:30
報告ありがとうございます まだdeoplete使っててエアプなので
thinca 2日 17:11:04
たぶん look にそのまま渡してると思うんですけど、文頭の大文字の場合は look には小文字に直して渡して、候補を返す時には候補の先頭を大文字に直す、みたいにするといい感じになりそうな気がします (たぶん) (想像)
octaltree 2日 17:18:03
手元のlookでは大文字無視されるんですがこれを試してもらえますか?
$ look -- AZ| head -n 5
azadrachta
azafrin
Azalea
azalea
Azande
thinca 2日 17:19:59
ちょっと違うけど小文字の候補もでますね…何がおかしいんだろう
look -- AZ | head -n 5
AZ
azalea
azalea's
azaleas
Azana
thinca 2日 17:21:06
あ、matcher_head に削られているのでは? 候補も先頭大文字にして返さないと入力と一致しないので
Shougo 2日 17:26:12
ignore_caseオプション使ってください
thinca 2日 17:26:53
なるほど
Shougo 2日 17:28:49
lookは入力に応じた大文字小文字自動変換しないのでnextword使う方がよいかなと思いますね
thinca 2日 17:33:16
ignoreCase オプションを試しましたが、候補には出るようになりましたが候補が小文字のままなので選択すると先頭の大文字が小文字になっちゃいますね
thinca 2日 17:33:47
nextword は特殊なツールを入れないと使えなさそうだったので、一旦見送りました…後日試すかも
octaltree 2日 17:36:16
変換して重複弾いてもよさそうですね
Shougo 2日 17:36:40
nextwordは確かにツールを入れないといけませんが、Windowsでも良いパフォーマンスが出ます
Shougo 2日 17:36:52
lookはWindowsだと重すぎます
thinca 2日 17:37:00
なるほどなるほど。検討してみます 🙏
Shougo 2日 17:38:00
一応deopleteには大文字小文字を自動変換してくれるconverter_caseがあるんですが、ddc.vimには移植してないですね。nextwordがあるし必要なくなってしまった。
octaltree 2日 18:50:22
変換して重複弾くの実装しデフォルトで有効にしました
thinca 2日 19:04:12
大文字で始めるとなぜか候補がうまく出ない…
thinca 2日 19:08:01
なんか普通にバグっていそうな予感です。テストケースをもっと足してみるとよいかもしれません。query に大文字と小文字が混じったパターンとか
Shougo 2日 19:08:32
issue作った方がよいと思います
thinca 2日 19:09:09
必要そうであればそうします (一旦様子見 👀)
thincaさんがNeovimを使っている…だと…みたいに思ったけど見たらddc対応と書いてあった
そのようですね
octaltree 2日 17:33:52 Slack
nextwordすごい 精度は知らんけどやってることの時代が進んでる
実装しました
このスレッドに返信しました : カタカナモードほしー
やることが決まっていたのでテストファーストをやっていたがいい感じだ
  • subara2
Vim から VOICEVOX テキスト投げて、読み上げさせたい気がしてきたので、denops.vim 使って作ろうと思います。
  • otxu2
カタカナモード動いた便利
  • 👍1
なんか足りない気がしていたけど、statusline にモードを表示する関数がないんだな
次に追加する予定です(内部的に出せるように布石は打っているのでやるだけなはず)
どんどん便利になっていく
eskk.vimという先行研究があるので何が必要なのか大体分かって便利
そう言えば eskk には結局数字変換は実装されなかった (過去形)
機能としては把握しているのでそのうち実装されます(あくまで予定)
ありがたすぎる
プログラム変換みたいなどうにもならん機能以外は入れていきたい
lisp が書けるアレねw
  • desune1
… denops なら行けるのでは…???
日本語入力のためにLispインタプリタ実装はやばい
deno(npm)ならライブラリくらいあるやろ (elisp 互換はさすがに無理そうだけど)
とりあえず(使えるかは別として)S式をパースするライブラリはあった
まあでも実際のところ別の機能(snippet とか)で用が足りるのでいらんですねw ネタ枠だなw
  • hai-small1
時代はS式
S 式までは多分簡単にできる。組み込み関数とかが eilsp 互換にするのはさすがに無理そう
  • sorena1
Google IME とかは 2021ねん を変換しようとすると 2021 の部分の候補に 令和3 が出てくる。ねん がない場合は出てこない
賢い
1600年→慶長5年 これも変換できるのか…便利…(?)
覚えていなくても西暦を和暦に変換できる
  • benri1
  • hee1
和暦に割ける記憶域が存在していないので全然分からないまま生きてきている
たいかがんねん (大化元年) で変換するとちゃんと 645年 が出てくる、と思いきや出てくる場合と出てこない場合があってよくわからなくなってきた
れいわがんねん は 2019 が出てくるな
  • 👀1
大分進んだんだけど、空行の取り扱いで心が折れてます・・・
CursorMovedで再描画してるからめっちゃ点滅するのも含めてどうにかしないといけない
heavenshell 3日 13:41:30 Slack
CursorHold とかにしたらチラつき減りそうですね(再描画までタイムラグが出るけど)
それもちょっと試してたんですけど、どっちにしてもチラつくんでなんか対策考えないとって感じですねー
  • naruhodo1
空行にフォーカス合わせた時以外は上手くいくようになったから一旦これでいいや・・・
前後行のコンテキストを見るのにめっちゃforとwhileぶん回しててコードが既に読めない
設定項目も何も準備できなくてハードコーディングなやつですが、人柱になってくれるって人がもしいればめっちゃありがたいです
https://github.com/yuki-yano/dps-indent-line
yuki-yano/dps-indent-line
1000行程度で毎回全部再描画すると大分きついからキャッシュ使うとかしないと話にならなそう、一回封印しよう
発想自体はそこまで悪くないと思ったんだけど、レンダリングしまくるせいでパフォーマンスチューニングかなり頑張る必要があるのむずい
goolord/alpha-nvim
vim-startify / dashboard-nvim alternative
いさな 3日 15:37:33 Slack
sexy! wow!で笑ったw
  • warau4
いつの間にかvistaのcoc連携がめちゃくちゃ優秀になってる気がする
以前は全然動いてくれなかった記憶があるけど、これなら常用したくなってくる・・・
skkeletonのconfig方式は完全にddcの影響を受けてあのスタイルになっているんだけど、プラグインの内容的に起動したタイミングでグローバル変数拾いにいくでもよかった気がするな
しかしbotが役に立っている所を見るとちゃんとhelp書いておいてよかった
vim-treesitter、ひとまず nvim-treesitter と同じ色がでる様になったと思う。
  • subara9
現状重たいので、バッファのサイズ次第で有効無効が切り替わる様にした。
すごい
さすがに検索まったく引っかからない。
vim-vsnip-integ さん、ddc と合わせて動いてるんですね(不思議だ)
ここのお陰みたいです。動いててよかった。
https://github.com/Shougo/ddc-nvim-lsp/blob/main/denops/ddc-sources/nvimlsp.ts#L153
  • desune1
<https://github.com/Shougo/ddc-nvim-lsp/blob/main/denops/ddc-sources/nvimlsp.ts | nvimlsp.ts>

lspitem: v,
1 件の返信 最終返信:19:02:32
Shougo 4日 19:02:32
ここはdeoplete-lspの時からあった機能で、neosnippetがこれを用いた展開に対応していたため、そのまま移植した経緯がありますね
ddc.vimの単一の機能のみを提供するという思想がよく示されていてとても良い記事ですね
2 件の返信 最終返信:19:17:33
matsui54 4日 19:04:58
めっちゃ光栄なお言葉だ。ありがとうございます!
Shougo 4日 19:17:33
私としてもプラグインの思想をちゃんとドキュメントで書かないといけないと気付かされました
matsui54 4日 19:06:25 Slack
lspまわりはnvim-cmpの実装をとても参考にさせていただきました。
@kuu skkeleton で、 ;nq が入力できないんですけど、バグか仕様かどっちですかね? (オリジナルの挙動を把握できていないので eskk 基準で動作を比べてしまいがちですが… 🙇‍♂️)
もしこれがバグで、必要であれば Issue 立てます
4 件の返信 最終返信:5日 17:43:55
#←
チャンネルにも投稿済
多分バグですね…報告ありがとうございます。
(仮にオリジナルがそうだとしても不便だと思う)
thinca 4日 20:58:47
<https://github.com/kuuote/denops-skkeleton.vim/issues/6|#6 `;nq` で `ン` が入力できない>
カタカナとして確定させた時に不完全な n にしてほしい。
#←
チャンネルにも投稿済
直しました!
多分バグですね…報告ありがとうございます。
このスレッドに返信しました : <@U9S4G0LJW> skkelet ...
バグかわからんけど困ってる挙動はどんどん立てた方がいい気もしてきた
Issue 立てます!
かな入力ルーチン雰囲気で書いてて腐ってるので根本から書き直したいなー
N 度目のリファクタ
Gamou Tatsumi 4日 21:05:09 Slack
ちょっとひねったらシュタゲのサブタイにできそう
そういえばIssue立てといた問題、こっちの手元でしか再現しないようなら本腰入れて調査しないと
この前作った自前 skkeleton in Docker を動かしたら <C-j> 後に何も入力されなくなってしまった…(再ビルドしたので skkeleton は最新のはず…)
あ、動いた
なんだろう、立ち上がりが遅いんだろうか…
L辞書を使っていたら遅かったりはする
そのうちなんとかしたい
今度は [denops] server terminated unexpectedly: 1 が出たw
結構不安定だなぁ。私の Docker 環境の作り方が悪いのかもしれないけど
そう言えば辞書登録時にうっかりそのまま <CR> すると空文字列が辞書に登録されてしまうんだけどこれもバグだろうか (SKK 何もわからん)
あ、もしかしたら古い記憶かもしれないです…
Tsuyoshi CHO 4日 21:17:13 Slack
他のSKKでもなる、かな
ユーザー辞書から除去しなきゃな... (corvusskk)
eskkは聞いてくるんですよね確か
今は大丈夫みたいでした 🙇‍♂️
よかった
eskk なんだかんだよくできてる
  • wakaru1
Gamou Tatsumi 4日 21:19:00 Slack
他の実装に慣れてると「あれ?」となる事も多いですけど一つの完成形ですよね
私の推測だと今月中には skkeleton が eskk の完成度を抜きます
  • high_pressure3
そうだ、Linuxだと何故か<C-j> で改行される問題調べなきゃ
Gamou Tatsumi 4日 21:21:35 Slack
あと26日ありますからね!
最小構成にしたら再現したなこれ、なんなんだ一体…
https://github.com/kuuote/denops-skkeleton.vim/issues/4
<https://github.com/kuuote/denops-skkeleton.vim/issues/4|#4 `l` でdisableにして再度enableしようとすると `&lt;C-j&gt;` を二回押下する必要がある>
タイトル通りです

かなモードから l で抜けた後でもう一度かなモードに入ろうとしたら <C-j> を二回押さないといけない模様
デバッグログをたくさん仕込まないと
Gamou Tatsumi 4日 21:23:00 Slack
一応enableが呼ばれてはいるっていうのが謎
後はテストたくさん足そう
とりあえず確認が取れたので調査します
Tsuyoshi CHO 4日 21:24:15 Slack
一応ユーザー辞書に空白(というか空文字列)のはないみたいなので、自動で弾いてるかな? (自分の環境)
検証放置しててすんません
Gamou Tatsumi 4日 21:25:55 Slack
分かっていれば実用に支障はないので個人的には問題ないです
でも見た感じここで他にこの現象出てる人いないような……?
language-mappingの有効化ができてなさそう
なぜ発生するのかが分からない、Vimなにも分からない…
Vim なにもわからない
:h i_^^
vim-jp-bot 4日 21:32:00 Slack

*i_CTRL-^*
CTRL-^ 入力言語を切替える。
言語マッピング|:lmap|が定義されているとき:
'iminsert' が1(言語マッピングが使われている)なら0(言語マッ
ピングを使わない)になる。
'iminsert' が他の値なら1になる。したがって言語マッピングが
有効になる。
言語マッピングが定義されていないとき:
'iminsert' が2(インプットメソッドが使われている)なら0(イン
プットメソッドを使わない)になる。
'iminsert' がその他の値なら2になる。したがってインプットメ
ソッドが有効になる。
'iminsert' を1にすると "b:keymap_name" の値、または 'keymap'
オプションか "<lang>" がステータスラインに表示される。
言語マッピングは通常はキーボードにない文字を打つのに使われる。
これらの値を設定するために 'keymap' オプションを使える。
^^;
このキーを送ると言語マッピングが有効になるのだが、送っても無視されている
i_^^の顔文字感ヤバい
Gamou Tatsumi 4日 21:32:44 Slack
あとcmapでかなモードに入って英字モードに戻すとかなモードに二度と入れなかった気が
  • 👀1
なんかに吸われているとか?
やっほー^^; ○○チャンは元気?おじさんはVimやってるからとても元気だよ😄
いまのなし
魚拓魚拓
Gamou Tatsumi 4日 21:33:47 Slack
余計な設定してるならともかく、最小で起きるのが謎
この辺り私も全然詳しくないのだけど、'iminsert' を直接変更するのではダメな感じなんですかね
<https://github.com/kuuote/denops-skkeleton.vim/blob/fa1992bd2d8b3f5d6549501f160abe0075f03ae3/denops/skkeleton/main.ts | main.ts>

await denops.cmd("setlocal iminsert=1");
:nazo:
ちなみに言語マッピングがその時点で有効なのかという状態には一切関係ありません、整合性のためにセットしている感じです
むずかしい…
cmapのそれも手元のプラグインマシマシ環境だと起きないけど最小だと起きる感じだ…
手元の変な状態に合わせてしまって崩れているという可能性はある
Gamou Tatsumi 4日 21:38:01 Slack
お互いの dein.toml のdiff取って検証するやつ
Tsuyoshi CHO 4日 21:39:13 Slack
なんかのプラグインがサイレントにセットしたマイナーなオプションの影響とかありそう....(妄想)
Gamou Tatsumi 4日 21:39:30 Slack
無限の沼だ
Neovimのバグでは?
Neovimでのみlmapが存在しない時の挙動がおかしい
Tsuyoshi CHO 4日 21:42:37 Slack
Vimだと平気?、なら可能性はありますな
Gamou Tatsumi 4日 21:42:46 Slack
あーなるほど
確かにVimだと大丈夫だ
手元で再現できないのはeskk.vimが入っているからだ(デフォルトでlmapを作る)
Gamou Tatsumi 4日 21:44:55 Slack
cmapはVimでも起きますね
また別種の問題か
また Neovim か (言ってみたかっただけ)
とりあえず両方ともダミーのマッピングを入れておけば解決できそうなので一旦はそれで修正入れます
Gamou Tatsumi 4日 21:48:35 Slack
skk系プラグインを二つ同時に入れてたら再現しないバグ、普通は逆でしょと思った
  • warau5
Tsuyoshi CHO 4日 21:49:28 Slack
むしろよく事故りませんねw
有効にした状態で一時的にlnoremapされるものが衝突しなければ大丈夫で、有効化動作だけぶつからないように配置したら全く問題ないですね
仮に同時に有効化しても上書きされるだけだと思う
検証時にeskk使いまくってるので助かる
@Gamou Tatsumi pushしましたのでアプデお願いします
Gamou Tatsumi 4日 21:55:35 Slack
正常動作確認しました
ありがとうございます
  • 👍2
denops.vim を使って、Vim から VOICEVOX に文章読ませられるようになった! sound_playfile() 関数バンザーイ
  • goodpoem7
<C-j> で ON/OFF トグルが個人的に skkeleton でできると嬉しい度の度合いが一番高い
  • naruho1
機能マッピング or かなマッピングカスタマイズの優先度を上げておこう
嬉しい…!!
私もその機能があると乗り換えの気運が高まります
  • naruho1
というか直接入力状態だとデフォルトで戻すようにしてもいいなと思ったけど <C-j> に確定でマッピングするのもどうなんだろう、うーん
記事更新しました。どんどん長くなっていくドキュメントだ
  • goodpoem4
めっちゃ今更なんですけど、textobj-functioncallってsandwichのfunction操作と似た挙動して欲しい場合は多分
let g:textobj_functioncall_no_default_key_mappings = 1

omap <silent> if <Plug>(textobj-functioncall-innerparen-i)
xmap <silent> if <Plug>(textobj-functioncall-innerparen-i)
omap <silent> af <Plug>(textobj-functioncall-i)
xmap <silent> af <Plug>(textobj-functioncall-i)

しないとですね

デフォのmapや関数使って生成した結果だと対象がずれる
ので、例えばGenerics操作のtextobjと、それを使ったsandwichでの操作を実現するためにはこうしないといけない
[[ダウンロード: 無題(プレーンテキスト)]]
let g:textobj_functioncall_generics_patterns = [
\ {
\   'header' : '\<\h\k*',
\   'bra'    : '<',
\   'ket'    : '>',
\   'footer' : '',
\ },
\ ]

onoremap <silent> <Plug>(textobj-functioncall-generics-i) :<C-u>call textobj#functioncall#ip('o', g:textobj_functioncall_generics_patterns)<CR>
xnoremap <silent> <Plug>(textobj-functioncall-generics-i) :<C-u>call textobj#functioncall#ip('x', g:textobj_functioncall_generics_patterns)<CR>
onoremap <silent> <Plug>(textobj-functioncall-generics-a) :<C-u>call textobj#functioncall#i('o', g:textobj_functioncall_generics_patterns)<CR>
xnoremap <silent> <Plug>(textobj-functioncall-generics-a) :<C-u>call textobj#functioncall#i('x', g:textobj_functioncall_generics_patterns)<CR>

omap <silent> ig <Plug>(textobj-functioncall-generics-i)
xmap <silent> ig <Plug>(textobj-functioncall-generics-i)
omap <silent> ag <Plug>(textobj-functioncall-generics-a)
xmap <silent> ag <Plug>(textobj-functioncall-generics-a)

let g:sandwich#recipes += [
\ {
\   'buns': ['InputGenerics()', '">"'],
\   'expr': 1,
\   'cursor': 'inner_tail',
\   'kind': ['add', 'replace'],
\   'action': ['add'],
\   'input': ['g']
\ },
\ {
\   'external': ['i<', "\<Plug>(textobj-functioncall-generics-a)"],
\   'noremap': 0,
\   'kind': ['delete', 'replace', 'query'],
\   'input': ['g']
\ },
\ ]

function! InputGenerics() abort
  let genericsname = input('Generics Name: ', '')
  if genericsname ==# ''
    throw 'OperatorSandwichCancel'
  endif
  return genericsname . '<'
endfunction
これはfunctioncall側の関数でtextobjを生成するのよりsandwichの関数でtextobj作れた気がするからそっち使えば勝手にいい感じに揃うのかもしれない(知見不足)
sandwich、Dark Poweredプラグインくらい設定しがいがあってすごい
  • 🥪3
先日の3つのPRはマージされずに直でcoc本体にfloatwinの設定入ってた
https://github.com/neoclide/coc.nvim/commit/eb47e40c52e21a5ce66bee6e51f1fafafe18a232
CursorMovedだとちょっと重いけど無駄なレンダリング省いてチラつかなくなったからドッグフーディングしよう
ヘルプの読み上げ、便利
  • sugoi5
ほー、ここまで読み上げてくれるんだ
各行毎にファイルを分けて、sleepさせてるので、ちょっと違和感があるけど
まぁ、こんなもんですね
直しました!
このスレッドに返信しました : <@U9S4G0LJW> skkelet ...
Gamou Tatsumi 5日 18:06:58 Slack
うっかりdps-ghosttextを壊してたのに気付いて直したついでにREADMEのデモをgifアニメに変更した
みんな進捗があってすごい
やること無限にあるので無理のない範囲で毎日やらないといつまで経っても終わらない
  • vim-jp1
興味を示して触ってみては挫折、を永遠に繰り返してる
  • wakaru1
Vimプラグインにどれくらい時間を突っ込むかは考え所だ、プラグイン作りは楽しいのだが集中しすぎるとそれ以外が全くできない
今日はプラグイン作りよりWindowsの環境構築してた
そのおかげで設定の問題点も分かったので良かった
  • cw_cracker10
raa0121/denops-voicevox
Talk text on Voicevox
Gamou Tatsumi 6日 10:04:18 Slack
一晩経って思ったけどやっぱりこれghosttextのデモかskkeletonのデモか分からない……
https://user-images.githubusercontent.com/47162587/132121358-5134b856-7549-4175-94be-c8f32dd3b3ba.gif
  • warau3
Gamou Tatsumi 6日 10:04:58 Slack
「skkeletonもちゃんと動きますよ!」ぐらいのつもりで入れたんですけど
denops 版 GhostText 割ともう動く感じです?少しずつ乗り換えようかな
Gamou Tatsumi 6日 10:33:34 Slack
実用に堪えるレベルではあると思ってます
あまりDog Foodingできてないのでバグ出し不十分かもしれませんが……
あとユーザー目線で期待されてる動作もいまいち分かってないので、変な動作があったら要望出していただけると助かります
  • 👌1
lambdalisue 6日 10:41:53 Slack
デモにしては画面が大きすぎるかなーと思います
lambdalisue 6日 10:42:08 Slack
読めないと「何やってんだろ?」感が強くて...
Gamou Tatsumi 6日 10:42:16 Slack
それはそうですね
Windowsの方で撮り直すか……
Gamou Tatsumi 6日 10:42:31 Slack
レイアウトを基本固定にしてるxmonadの弱点
  • naruhodo1
Gamou Tatsumi 6日 10:47:08 Slack
このあたりはMacの方が強い気がするんですよね
キー入力を表示するアプリとかLinuxだと心当たりないですし
Tiling WM本当に配信とか向いてないですよね
Gamou Tatsumi 6日 10:52:45 Slack
ですね
Linuxに拘りたいですけど割り切ってこの辺はWindows使う事にします……
Ghost Text使ってみようかな、Vimから入力勢としては気になる
Gamou Tatsumi 6日 11:35:08 Slack
done
パワポの画面録画機能が最高だという事が分かった
最近パワポで絵を描いてる人か録画してる人しか観測してない
Gamou Tatsumi 6日 11:39:39 Slack
パワポとは……スライドとは一体……
Gamou Tatsumi 6日 11:40:58 Slack
MOSのパワポだけ持ってないので録画ツールとしてしか使えないんだろうなと
denops GhostTextが何するものか分かっていない
Firefox 向け GhostText をダウンロード。Use your text editor to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).
Gamou Tatsumi 6日 11:51:16 Slack
公式へのリンクを追加しておきました
なるほど。確かにこれは良さそう
Gamou Tatsumi 6日 11:58:11 Slack
denoでポート被り検知できれば自動起動できるんですけどね
なかなか難しい
ありすえさんがこの前作ったやつ、自動で空いてるポート探して使ってなかったっけ
https://github.com/lambdalisue/guise.vim/blob/main/denops/guise/main.ts#L120
<https://github.com/lambdalisue/guise.vim/blob/main/denops/guise/main.ts | main.ts>

port: 0, // Automatically select free port
Gamou Tatsumi 6日 12:08:47 Slack
最初の待ち受けポートは決め打ちなんですよね
そこからランダムポートに誘導する
Gamou Tatsumi 6日 12:09:04 Slack
ランダムの方はもう自動で空いてるのを確保してくれるようにしてあります
使ってみました
Vimの起動直後はまだdenopsサーバーが起動しておらずエラーになるのはちょっと困りましたね
Gamou Tatsumi 6日 12:12:43 Slack
あー、それは待つようにするしかないですね……
autocmdのイベントとかありましたっけ
プラグインのmainの評価が終わるまでdenops側で遅延評価してほしいみたいな気持ちがある(無茶を言うな)
DenopsReady User autocmdを使うと良いかな
:h DenopsPluginPost
vim-jp-bot 6日 12:13:32 Slack

DenopsPluginPost:{name} *DenopsPluginPost*
Invoked just after denops called a "main" function of a plugin {name}.

=============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl
プラグイン単体だとこちらも :ari:
denopsのロードされるまでの制御はなかなか難しい。最初が遅い上に非同期だからね
ddcの遅延評価を参考にさせてもらいました
なかなか苦労しました
  • otz2
denopsだけでなく、sources filtersも遅延して読み込まれるから
この制御もなかなか大変
難易度
Gamou Tatsumi 6日 12:18:01 Slack
コマンドでも呼べるようにしようと思うと待ち受けがめんどくさそう
Gamou Tatsumi 6日 12:21:55 Slack
とりあえず DenopsPluginPost で自動起動するようにして無効のための変数も生やしたけど、コマンドで立ち上げる時にエラーの可能性があるのはどうするか
<https://github.com/kuuote/denops-skkeleton.vim/blob/f7db689893ceeb769d0efcdf1a74fb44db692706/plugin/skkeleton.vim | skkeleton.vim>

while !get(g:, 'skkeleton#init', v:false)
lambdalisue 6日 12:24:08 Slack
  • banjaku2
<https://github.com/lambdalisue/gin.vim/blob/main/plugin/gin.vim | gin.vim>

command! Gin echoerr "Gin is not loaded yet"
必要なのはwhileとsleepの部分だけ
lambdalisue 6日 12:25:27 Slack
「任意のプラグインが読み込まれるまで待つ」って関数は denops.vim 本体で用意しても良いかも?
  • tashikani4
lambdalisue 6日 12:25:54 Slack
call denops#wait('skkeleton')
lambdalisue 6日 12:25:56 Slack
みたいな?
便利そう
worker単位で独立してるので大変そうだけど
Tsuyoshi CHO 6日 12:26:55 Slack
denops#load#wait くらいの階層のほうがわかりやすそうだけど、命名的にどうなんでしょう?
lambdalisue 6日 12:27:16 Slack
やるなら denops#plugin#wait() ですかねー
  • naruhodo1
lambdalisue 6日 12:27:46 Slack
kuu さんのやつから最後の行取り除いたバージョンで良さそう?
lambdalisue 6日 12:28:05 Slack
あとはフラグ立ってたら即関数 return を加えれば盤石
lambdalisue 6日 12:28:33 Slack
あとフラグ変数はスクリプトローカルの辞書とかで良さそう
echoやらredrawやら生えてるのはメッセージ出すためなので待つだけならいらないですね
lambdalisue 6日 12:29:21 Slack
休み時間にサクッと書いときます〜
  • subara2
Gamou Tatsumi 6日 12:36:56 Slack
とりあえずkuuさんのを参考に待ち受けるようにした
けど、動作待ちの検証が手元だとうまくいかないのでちょっと考えどころ
  • 👍1
ddc.vimにsourceのタイムアウト機能を付けられないか検証しています
deopleteでもやりたかったけど結局できなかった機能
lambdalisue 6日 14:32:53 Slack
deadline
お、使ってみます
Gamou Tatsumi 6日 14:48:16 Slack
うーん、SandSで使ってるskkeletonがたまに変なバグり方するな……
Sa▽sあ みたいな表示になる
fcitx-skkの話ですが、▽sの段階で別のウィンドウに行って戻ると ▽sが確定されちゃって、続けて a打つと ▽sあ になるので、一瞬フォーカスがどっかに飛ぶとかしてると起きそうですね。
Gamou Tatsumi 6日 14:52:26 Slack
全部の文字がこんな感じになるんですよね
こうなると一度insert抜けてもダメ
  • totemoturai3
Gamou Tatsumi 6日 14:52:51 Slack
あれ、Vim再起動すれば前は直ったのに直らなくなった
Gamou Tatsumi 6日 14:53:48 Slack
ユーザー辞書にもそれっぽいの入ってないのに
おかしい
Gamou Tatsumi 6日 14:55:21 Slack
;sa なら動くけど Sa なら動かないパターンだった
他の子音だと動くパターンもあったので切り分けるか
Gamou Tatsumi 6日 15:03:34 Slack
あまりにもランダムすぎて分からなかったけど一瞬だけcocの候補窓が出てた……
Gamou Tatsumi 6日 15:04:32 Slack
候補窓が出る前に打てればちゃんと打てるけど、タイピングが遅いとローマ字変換が死ぬという人類の限界に挑戦してる現象だったのでcoc抑止する方法探します
Gamou Tatsumi 6日 15:09:18 Slack
autocmd User skkeleton-enable-pre call coc#config("suggest.autoTrigger", "none")
autocmd User skkeleton-disable-post call coc#config("suggest.autoTrigger", "always")
autocmd User skkeleton-enable-pre let b:coc_suggest_disable = v:true
autocmd User skkeleton-disable-pre let b:coc_suggest_disable = v:false
@Gamou Tatsumi
Gamou Tatsumi 6日 15:11:00 Slack
あ、それでよさそう
ありがとうございます
これhelp書いてなかったな…
ゴリラ(コンパイラ入門中) 6日 18:37:09 Slack
Gamou Tatsumi 6日 19:12:14 Slack
ありがとうございます
直しました 🙇‍♂️
  • 👍1
deadlineでddc.vimにタイムアウト機能を実装しました
  • 👀1
これは役立つはずです
最近、スペニットを使うと描画が壊れる。
疑わしいのが、coc, coc-neosnippet, neosnippet, treesitterと複数合って追跡がめんどい…
neosnippetとかDeprecatedになりつつものもあるので、ここらでプラグインの世代更新をしてもいい気がしてきた…
ultisnipsに移行勢
cocで補完するためのcoc extensionsは自作しました
https://github.com/yuki-yano/coc-ultisnips-select
yuki-yano/coc-ultisnips-select
coc-snippetは自前でultisnipsを頑張って展開しようとしててちゃんと動いてくれないので
一覧に表示とsnippetの中身の表示と確定時に展開するだけの簡単実装
LuaSnipかなりよさそうなんですけど、built-in lsp使ってるならいいとしてcoc使ってるから自分は優先度下げちゃう感じでした
それはそうとして描画が壊れるっていうのがどういう状態なのかちょっと気になります
deoppetを途中まで作ったのだけれど
作りかけのままdenopsの流れが来てしまっているのでなー
プラグイン開発、skkletonのddc.vim対応とddu.vimの開発どちらを優先するべきか悩ましい
ddc.vimは落ち着いたから次にいきたいのだけれど
個人的にはdduに期待しているのでそちらをやって欲しい気持ちはありますね
なるほど。期待されてるなぁ
  • hiee3
twitter
hrsh7th @hrsh7th
いやほんとに issue 多いな。いい加減やばすぎる。この 1 ヶ月で 123 件閉じてるんだがw
Twitter
やばばばば
ddc.vimは宣伝しても思ったよりissue来ないので、そろそろ次にいこうかと思ってるのに
ddc-vim-lsp で、vim-language-server で Vim script を書いているんですけど、 if isdi みたいに入れた時に isdirectory が補完されてほしいんですけど出てこない場合ってどこの設定を疑えばいいですかね…?
<C-x><C-o> での手動補完(omnifunc=lsp#complete)だと出てきます。
vim-lspとvim-language-serverは私使ってないのですよ
これddc-vim-lspに最小設定と共に質問して再現するか見てもらうのがよいと思いますね
ふと思ったけど、今LSP使ってない人ってどれくらいいるんだろう
他のパターンの補完だと出てくるのかとか補足情報もあった方がよいですね
Omochice 7日 13:15:10 Slack
https://gyazo.com/1164c4664e0919c538ef34426cf7a215
特殊な設定してないですけど手元だと出てます
call ddc#custom#patch_global(
\ 'sources', ['vsnip', 'ddc-vim-lsp', 'buffer']
\ )
call ddc#custom#patch_global('sourceOptions', {
\ '_': {
\ 'matchers': ['matcher_head'],
\ 'sorters': ['sorter_rank'],
\ 'converters': ['converter_remove_overlap'],
\ 'minAutoCompleteLength': 1,
\ 'smartCase': v:true,
\ },
\ 'ddc-vim-lsp': {'mark': 'LSP',
\ 'forceCompletionPattern': '\.|:|->|"\w+/'},
\ 'buffer': {'mark': 'Buffer'},
\ 'around': {'mark': 'Around'},
\ 'necovim': {'mark': 'Neco'},
\ 'vsnip': {'mark': 'Snippet'},
\ })
call ddc#custom#patch_filetype(
\ ['toml'], 'sources', ['necovim', 'buffer']
\ )
call ddc#custom#patch_filetype(
\ ['vim'], 'sources', ['vsnip', 'ddc-vim-lsp', 'necovim', 'buffer']
\ )
call ddc#enable()
ならなぜthincaさんの環境で出ないんだろう?
でも安心ですねthincaさんならソースコードを解読してスマートに原因を究明してくれるはずです
おそらくですが
if | この状態から isd と入力すると出ないみたいな感じだったりしませんかね?
if isd| この状態で i と入力して if isdi| になるケースだと出るけど。。。みたいな。
今戻ってきた。そういう感じです
でも omochice さんのスクショを見た感じだと動いてそうですね…うーん
原因が本体なのかsourceなのかvim-lspなのかきりわけがいりますね
あのスクショが if | から補完を開始したかどうか次第ですねえ。
これ、予想なんですけど、LSP の isIncomplete に対応できていないというのが原因だと思っています。
vim-language-server は if i の段階で isdirectory 候補を返却しておらず、if isdirectry という入力はキーワードの連続入力なので、新しい補完候補取得も行われず、という感じの動きをしている気がします。
だとすると、source設定でisVolatileセットしてもらうしかないですね
isVolatile で完全にソース側で自前制御すればおそらく LSP の補完ロジックほぼエミュレーションできるとは思いますね。(deoplete-vim-lsc がそれっぽいことをやっています。)
if isd まで入れてから挿入モード抜けて入り直して i を入れても候補が何も出ない (手動だと出る)
むむ
if is までだとなぜか存在していない is_bash という変数が候補に出る
Omochice 7日 13:29:27 Slack
戻りました
こんな感じです
私の vim-language-server が古いとかあるかも。更新してみます
うーん。ちゃんと帰ってきてるっぽいなあ。
なるほど。2 文字目から補完が走ってるからなのかな。
お、vim-language-server を更新したら出るようになりました… LS が古かっただけっぽいです 🙇‍♂️
Tsuyoshi CHO 7日 13:32:07 Slack
CLIからはほぼ利用しないけど、バージョン管理しないといけないという意味でLSのバージョンは鬼門ですね...
なるほど。それなら良かった
vim-lsp-settings で入れている LS をまとめて更新する機能とかないんかな
Gamou Tatsumi 7日 13:32:41 Slack
LSの管理、割と課題な感じしてる
手元だと isd| の段階で補完走らないと返ってこないですね。(is| で補完が走るとアウト)ddc の minlength の設定のおかげかな。
LSPプラグインのissuesではLSPサーバーのバージョン、クライアントのバージョンもちゃんと聞かないとまずいと。
デバッグ大変だな
やはり再現Dockerfileが必要
「Windows でのみ再現します」
よくある
Windowsでだけ起こるというよりWindowsだと遅すぎて起こったりもする
WindowsでなやんでラズパイのUbuntuつけるとそれはそれでラズパイだから動かないってなったりして困ることがあったりする
1時間ちょいくらいカスタマイズしてて起動時間が無事300msを切った
やっつけだから絶対に不具合が出る自信がある
Gamou Tatsumi 7日 22:22:12 Slack
skkeletonへのkeepStateの実装、なかなか力押し感がある
https://github.com/gamoutatsumi/denops-skkeleton.vim/commit/98e8e922ffc2736c814a6a88773f9d8646bea466
helpの方がstateKeepになっているのが気になる
  • kiduki1
後、この実装ではiminsertを見ているけど別に必要なさそうな気がする
Gamou Tatsumi 7日 22:27:43 Slack
これないと問答無用でenableになっちゃうので……
Gamou Tatsumi 7日 22:27:48 Slack
helpの方は直しておきます
Gamou Tatsumi 7日 22:28:17 Slack
あーいや、ならないか
iminsert無効な状態でここ通ることあったっけ(作者が把握できてないやつ)
Gamou Tatsumi 7日 22:28:40 Slack
escape呼ばれるのって元がenableの時だけですもんね
ロクに検証してなかった
あっちにもコメントしておいた
Gamou Tatsumi 7日 22:30:30 Slack
ありがとうございます
さてforce pushするか(forkしてるのをいい事に無茶する)
fork先だとよくやる
Gamou Tatsumi 7日 22:32:16 Slack
Dメール送った
  • zabuton31
Gamou Tatsumi 7日 22:37:24 Slack
とりあえずPRにしときました
本当はカタカナモードも保持したかったけど厳しそうなのでひらがなモードで妥協
ステート使い捨てしてるもんですみません
Gamou Tatsumi 7日 22:38:52 Slack
ステートをこの為だけに引き回すようにしたかったんですけど、コアの部分で破棄されてたので断念した感じですね
まあややこしくなるよりはいいかと
破壊してないのでどうにかして引き回したら復元はできるはず
Gamou Tatsumi 7日 22:40:41 Slack
正確にはautocmdで呼べるように main.ts に入れたかったんですよね
でもそこまで中身を保持したcontextを引き回す方法が見つからなかった(&面倒になった)ので断念
多分動くからマージしようぜ!
Done
Tsuyoshi CHO 7日 22:40:50 Slack
なんか認識の齟齬がいろいろ...w
Tsuyoshi CHO 7日 22:40:57 Slack
まあ動くだろう、でw
Gamou Tatsumi 7日 22:41:37 Slack
今回は実装してない機能について妥協しただけなので今回入れた実装は動くはずです……
たぶんきっとメイビー
気が向いたらまともな実装に直します…多分contextの破棄自体する必要ないと思うので
Gamou Tatsumi 7日 22:42:30 Slack
今回はそんなややこしいステートの引き回しもしてませんし
state typeをinputに戻すだけで行けそうな気がする
Gamou Tatsumi 7日 22:44:03 Slack
eskkに近づけるだけでもめちゃくちゃ苦労しそうな気配があるなあ
fcitxやCorvusやAquaやddskkの実装も取り込もうと思うと無限に深みがでる
ずっと開発できる
  • benri1
Gamou Tatsumi 7日 22:45:22 Slack
SandSだけはVimの仕様上ほぼ不可能に近いのが考えどころ
eskkでも最近いろいろ検討してた記憶があるけどどうなったんだっけか
SandSは考慮しません
OSレベルで頑張ってほしい
Gamou Tatsumi 7日 22:46:19 Slack
僕はxkeysnailとautohotkeyで頑張ってます
macでもKarabinerで対応できるか
Naoya Yamashita 8日 00:55:11 Slack
Skkeletonのデバッグでddskkのバグがもう既に1個見つかってるのでやはり車輪の再開発は有意義
Naoya Yamashita 8日 00:56:05 Slack
そしてddskkのバグは修正難易度高め。Skkeletonで実装できてるのすごい。
  • sasu1
  • goodjob5
  • goodpoem1
2 件の返信 最終返信:10:53:43
気になってたんですが、これどんな問題です?
Naoya Yamashita 8日 10:53:43
もしかしたら修正できるアイデアがある人がいるかも知れないので、スレッドじゃなくて #tech-emacs で話しますー!
なんだろう
厳密にddskkの真似をしたわけじゃないのでしれっと実装してしまってる気がする
Gamou Tatsumi 8日 08:11:14 Slack
記号を全角にして z, をダッシュにしたい気持ちがある
この辺のマップ変更ってまだないんでしたっけ
0 件の返信 最終返信:
#←
チャンネルにも投稿済
APIだけ作りました
すみません、まだですね
APIが悩ましい
ブランチ切ってそこで実験するのがいいかな
rom_hira.tsを書き換えると変更できます
マッピングテーブル弄れるのはeskkの利点であった
  • wakaru1
Gamou Tatsumi 8日 08:25:57 Slack
eskkだとテーブルをコピーして上書きして登録ってインターフェースか
テーブルいじりは私もしていたので早く欲しい所ではある
そもそもテーブルがJSサイドにあるので辞書渡して上書きみたいなIFにすると思います
自分が移行するには何が必要か確認した方が良さそうか
必要な機能をまとめてissuesにしておきます
  • 🙇‍♂️1
fzf-previewのひどすぎる実装でパフォーマンスが死んでたのを修正してリリースしました
もし使っている人がいれば更新お願いします
  • slow-loris2
後でアプデせねば
パフォーマンスでクリティカルな部分をメトリクス取って可視化したい
issues作りました
skkletonにtoggleがないのが意外なんですがこれ難しいですかね?
現在、skkletonのコードを確認しています
直したいところがいろいろ見つかったのでごちらで修正作業します
ちなみに skkeleton が正しい綴りです
skkeletonなるほど。スペルむずい
skeleton の k がダブった感じですね
Tsuyoshi CHO 8日 10:26:18 Slack
すっけるとん
脳内ではそのまま「すけるとん」って読んでる
  • me-too7
Naoya Yamashita 8日 10:26:56 Slack
「すくけるとん」派
Naoya Yamashita 8日 10:27:43 Slack
「すくくるとん」という読み方も考えられて、やはり発音むずい
eskk.vim の最大の弱点であった「発音すると skk.vim と区別が付かない」という問題を見事に解消した
  • benri1
Gamou Tatsumi 8日 10:28:10 Slack
「えせけーけー」
「えすけーけるとん」派
はじめて見たときの読みが定着している模様
ଳ (kato) 8日 10:30:04 Slack
いーえすけーけー
ଳ (kato) 8日 10:30:19 Slack
すけけーるとん
すっけるとん派(派とは)
譲れないこだわりのことです(違う)
イーエスケーケーと読んでたから発音問題はなかった
  • me-too1
ddu.vimの作業するかと思ってたけど
skkeletonの修正を優先した方が良さそうに思った
  • 🙇‍♂️1
eskk は地味にログ出力が豊富だったので、この辺り整えておくと開発に役立つのかもしれない
  • tashikani1
初期化周りの処理を整理しつつtoggleの実装をやります
  • otxu1
細かい警告が出てるのも直さないといけないな
toggleがないのは確定処理とバッティングしたからで、fernのsmart-actionみたいに機能を連結できるようにしようかと思っていました
確定処理にハードコードしようかとも思ったけど無効化処理がdenops依存なので面倒だった
実装を把握してないんですけど、確定は変換中のみに必要な操作なので原理的にはバッティングはしてないはずですよね。
はい、なので実装が悪い
■モードと▽モードのコードを共用しようとしたのでこうなってる
そういえば、skkeletonはskkeletonって読んでます
マジレスすると脳内ではこれ https://vim-jp.slack.com/archives/CLKR04BEF/p1631064601305600
「えすけーけるとん」派
はじめて見たときの読みが定着している模様
slacklog
ゴリラ(コンパイラ入門中) 8日 10:56:00 Slack
スケルトンと読める💀
ゴリラ(コンパイラ入門中) 8日 10:56:07 Slack
かっこいい
lambdalisue 8日 10:56:27 Slack
ゴリラ(コンパイラ入門中) 8日 10:57:01 Slack
公式の読みはスケルトンに一票
  • 👍2
スッケルトン
  • sorena3
骨だけ(skeleton)の割りに肉付き(コード量)がいい
多少違和感があるレベルで早くなっているから作業効率上がっていそう
  • goodpoem3
パフォーマンスだいじ
eskkはもっさりしてるのが欠点
状態がおかしくなる不具合も処理が遅いからかなと思ったりする
むしろPure Vim scriptでよくあそこまでやっているなと感心する
内部状態が複雑すぎて問題を直せないんだよなぁ
わかる
そういえばeskkって補完が完了したかってどうやって識別してます?
CRにマッピングされていたはず
CompleteDoneを見ても辞書登録しかしてないし、ステートの処理をどうやってるのか気になってます
CRなるほど
補完のマッピングについてソースコードにベタ書きで細かいカスタマイズができないのがなかなか辛いところ
  • sorena1
そもそもeskk 10年前のプラグインなのか
うへぇ
472.000  032.000  031.000: sourcing C:\home\.cache\dein\.cache\.vimrc\.dein\autoload\fern\mapping.vim

手元の startuptime のプラグインの処理でで割と重かったの、fern のマッピング読み込みだった。
2 件の返信 最終返信:12:42:35
lambdalisue 8日 12:39:35
mapping.vim はそんな変なことしてないのでvitalの初回読み込みがちょうどそのファイルとかですかね
raa0121 8日 12:42:35
あー なるほど
@kuu skkeletonにプルリクエスト出したので確認お願いします
5 件の返信 最終返信:19:27:02
PRありがとうございます、後で見ます
typoとかfmtのエラーとか見付けたんですがこちらで直した方がいいですか?
Shougo 8日 19:24:09
typoは直しました
Shougo 8日 19:25:15
fmt直しました
ありがとうございます、マージしました。
ddc の source で Vim 本体のキーワード補完的に別バッファから単語拾ってくれるようなのってありますかね?
matsui54 8日 18:06:13 Slack
  • subara4
matsui54/ddc-buffer
Buffer source for ddc.vim
はい
ありがとうございます!
これがあれば around は不要だったりします? そんなことはない?
matsui54 8日 18:36:06 Slack
aroundは文字を打つたびに候補を集めるのに対して、bufferはInsertLeaveとかBufReadなどでしか集めないので打ったばかりの文字を補完したければ必要です。
重複は削除されるので自分はどちらも入れてます。
  • naruhodo5
なるほど。ありがとうございます。
はい
このあたりの仕様はdeopleteと同じ
eskkの補完完全に理解した
  • kanzen_rikai2
s:handle_popupmenu_keys()の中でpreeditの中身と実際のバッファを見比べて違ったら候補が選ばれていると判定している
何のキーがどのようにハンドリングされるのかはよく理解していないが、雰囲気は掴めた
Tsuyoshi CHO 8日 23:07:24 Slack
実害はほぼなくてすんでるけどレポートを出した
https://github.com/Shougo/dein.vim/issues/425
分かり難いかもな記述だ...
そういえばプラグインのインストールやアップデート直後のVim起動は捨てているな、何が起きているのか分からないので
  • wakaru1
Tsuyoshi CHO 8日 23:10:54 Slack
これはインストール直後の起動の次の起動だけで出ました
そういえば自分もそうしてるけど「捨てる」って表現いいすね
  • 👍1
Tsuyoshi CHO 8日 23:11:25 Slack
自分の環境だと複数回出てるように見えるけど、ミニマルな再現環境だとそうなった
それは厳しい
Tsuyoshi CHO 8日 23:12:27 Slack
なので、ミニマルの現象だけ報告、結果自分のがどうなるかは観測するしかないかなと
なんというか、雰囲気として「捨てる」が一番近い気がするんですよね
  • wakaru1
Tsuyoshi CHO 8日 23:13:02 Slack
いやまあインストールしたその時のはそうするしかない気がしてますが、いちおう環境が完全になったのに出たからねえ
Tsuyoshi CHO 8日 23:13:14 Slack
っても、自分のなにかミスがある可能性は大きめ
skkeletonのtoggle、実装の目処が立ったのでやっていこう
うれしい
eskk.vimを読んでいたけど力技みたいな実装がなされていてすごい
  • 💪2
ハンドリング対象のキーに被せてマッピングしてあると内部マッピングがされる仕組み、完全に真似するわけじゃないが参考になった
実装の確認のためにお気持ちを理解していたけど(実はtoggle一度も使ったことなかった)確かにこれはあると便利ですね
大抵の IME は同じキーでトグルするから、あると便利
  • desune1
@matsui54 ddc-source なんですけど、「基本は requireSameFiletype: v:true なのだけど、同じタブページ内で開いているバッファについては無条件で候補に出す」ってできますかね…?
matsui54 9日 00:49:16 Slack
デフォルトで同じタブページのバッファからは候補を出すようになってるんですけど、出ないですか?
vimrc を弄っていて、隣に ddc.vim の help を表示しながら maxCandidates を入力しようとしたんですけど候補に出なかったんですよね
でも今別の単語で試したらちゃんと出ました…気のせいだったのかもしれないです… 🙇‍♂️
matsui54 9日 00:56:22 Slack
このイベントで今いるバッファの候補を集めているので、sourceが読み込まれる前にいたバッファからは候補をあつめていないんですよね。それかもしれないです
https://github.com/matsui54/ddc-buffer/blob/80b99502254b680219899bd942806b55dbd00e51/denops/ddc-sources/buffer.ts#L49
<https://github.com/matsui54/ddc-buffer/blob/80b99502254b680219899bd942806b55dbd00e51/denops/ddc-sources/buffer.ts | buffer.ts>

events = ["BufReadPost", "BufWritePost", "InsertLeave"] as DdcEvent[];
あーなるほど。タイミングによっては収集されてないケースがあるんですね…ふーむ…
matsui54 9日 01:04:55 Slack
自分でもこれは結構不便なので、候補を集めているときにキャッシュされていないバッファを見つけたら、キャッシュするようにしようかと思ってます
1 件の返信 最終返信:10日 00:06:11
#←
チャンネルにも投稿済
matsui54 10日 00:06:11
こちら対応してみました。かなり取りこぼしが減ったと思います。
お、それは期待 🙌
  • 👍1
toggle半分くらいできたけどねる
  • yokuyasundekudasai2
マッピング被りの処理を仕込めば:tabunikeru:
twitter
hotoolong @hotoolong
下のターミナルなにで表示してたんだろう fzf-previewっぽいけど選択できたのはいいな #RubyKaigiA
Twitter
うあー、久々にnvim-lspの補完が出なくなった
この苦しみ…
  • wakaru1
いや、大体設定の齟齬なんですよこういうのはw
compeさんアホほど安定感高かったので久しぶりだ
Hidekazu Ikeno 9日 16:05:22 Slack
ひょっとして、最近マージされた nvim built-in LSP の breaking change の影響では?
compe の最新では対応したつもりではありますが、うまくいっていないのかしら。。。
あーいやこれ、単にgoplsとmoduleの連携がうまく言ってないケースかもです
compeが最新対応してるのは一昨日気づいて、アップデートして問題ないの確認済です。いつも助かってますわ…
  • 🙇‍♂️1
フー、治った。packerのコンパイル結果を独自にキャッシュしてる部分のバグであった…
  • naruhodo3
@kuu
ファイル先頭で作った autocmd がここで消えてしまいます。それぞれ別の augroup の名前を付けると解決できます。
https://github.com/kuuote/denops-skkeleton.vim/blob/0f6909c5514194b20d96eb06c0ff07fca1750863/autoload/skkeleton.vim#L36-L37
  • 👀2
<https://github.com/kuuote/denops-skkeleton.vim/blob/0f6909c5514194b20d96eb06c0ff07fca1750863/autoload/skkeleton.vim | skkeleton.vim>

augroup skkeleton
autocmd!
お、やらかしてるな…
なので私の環境では今何かするとイベントがねーぞってメッセージが出まくる
lambdalisue 9日 18:22:02 Slack
augroup は ファイルパス_関数_internal みたいな感じで適当につけてる
(PR しようかとも思ったけど名前の付け方は作者の好みみたいなところがあるので丸投げ)
Oh
それは気付かなかった
あとちなみにこれマッチするイベントが何かしらあればいいので、User のイベントは全部 skkeleton- で始まるって決めてしまえば autocmd User skkeleton-* : の 1 つだけで大丈夫です
  • benri2
  • tips1
取り急ぎスマホから直した
すごい
GitHubの編集機能便利
直ったのを確認。ありがとうございます!
lambdalisue 9日 18:33:04 Slack
あとちなみにこれマッチするイベントが何かしらあればいいので、User のイベントは全部 skkeleton- で始まるって決めてしまえば autocmd User skkeleton-* : の 1 つだけで大丈夫です
slacklog
いさな 9日 18:43:19 Slack
skkeletonで変換候補選択をキャンセルする方法ってありますか?eskkで言うところの<C-g>に当るもの
1 件の返信 最終返信:10日 00:20:33
#←
チャンネルにも投稿済
実装しました!
オプションでeskkみたいに一気に消えるのかddskkみたいに段階的に戻すのか変えられます
まだ未実装ですごめんなさい
いさな 9日 18:44:00 Slack
了解です!
一応▽に戻した上で<C-g>するのは効きます(こちらはなぜか実装してある)
  • 👍2
deinのロード時間を0.15ミリ秒節約することはできた
  • goodpoem6
twitter
暗黒美無王 dark Vim @ShougoMatsu
何もプラグインと設定を読み込まないと10ミリ秒切れるのに、自分はプラグインを読み込んでしまうから起動時間が14ミリ秒なんだ、自分の心は弱いそういう話をしています。
Twitter
究極の問題と戦っている
今見たら https://github.com/sainnhe/gruvbox-material の読み込みで100msかかっていて厳しい
sainnhe/gruvbox-material
Gruvbox with Material Palette
Hidekazu Ikeno 9日 20:34:44 Slack
colorscheme 結構読み込み時間掛かりますよね。
自分の neovim は 400ms かかってました。(init.vim で 200ms
heavenshell 9日 21:00:28 Slack
🦍 < colorschem? そんなの遅いから切れ!
  • uhouho2
skkeleton で変換キャンセルできないのは Issue にあった方がよさそうかな
toggleが上手く行ったら今日直る
あくまで予定
なるほど、では Issue は不要だな
単に実装してないというだけなので、すぐ済むはず
どんどんよくなっていく
一行Issue投げて貰えたらリンクします(別になくてもいいけど)
ゴリラ(コンパイラ入門中) 9日 21:40:48 Slack
goのファイルを開くのめっちゃ遅いなと思ったら、vim-goがめっちゃ 時間食っていた
消すか…
637.566  000.146  000.146: sourcing /Users/skanehira/.cache/dein/nvim/.cache/init.vim/.dein/autoload/go/path.vim
2128.709 1502.232 1499.472: sourcing /Users/skanehira/.cache/dein/nvim/.cache/init.vim/.dein/ftplugin/go/commands.vim
ゴリラ(コンパイラ入門中) 9日 22:07:32 Slack
twitter
ゴリラ@超サイヤ人ゴッド超サイヤ人モード @gorilla0513
vim-goのloadがおもすぎてついにプラグインから外してしまった

:GoCoverage
:GoTagAdd
:GoTest

代替を探している
Twitter
ゴリラ(コンパイラ入門中) 9日 22:07:53 Slack
> ftplugin/go/commands.vim
が許容範囲を越えたので、外してしまった
ゴリラ(コンパイラ入門中) 9日 22:08:20 Slack
なんかtagのやつあった気がするが、全然検索に引っかからない
ゴリラ(コンパイラ入門中) 9日 22:16:17 Slack
んー、ないな
作るか
heavenshell 9日 22:17:58 Slack
heavenshell 9日 22:19:16 Slack
GoTest は lsp で代わりになりません?
heavenshell 9日 22:19:43 Slack
(GoTest がどんなことできるか知らないけど、なんとなくテスト実行できるんだろうなと想像)
ゴリラ(コンパイラ入門中) 9日 22:21:40 Slack
あ、タグはそれですね
ゴリラ(コンパイラ入門中) 9日 22:21:53 Slack
ありがとうございます
ゴリラ(コンパイラ入門中) 9日 22:22:15 Slack
あとはテストとカバレッジがあれば…
vim-goのテストなにげ便利なんですよねえ
カーソル位置の関数/ファイルを対象にテスト実行とか
ゴリラ(コンパイラ入門中) 9日 22:22:46 Slack
ですね
ゴリラ(コンパイラ入門中) 9日 22:22:50 Slack
それがほしい
いまのとこまんま代わりになるものは見つかってない・・・
ゴリラ(コンパイラ入門中) 9日 22:23:14 Slack
それ単体でほしいんですよね…
Tsuyoshi CHO 9日 22:23:33 Slack
指定箇所のtest runはいくつかプラグインあったけど、goに対応してるかなあ...?
VSCodeにその機能があるけどlspじゃなくてgoプラグインで実装してるはず
ゴリラ(コンパイラ入門中) 9日 22:24:49 Slack
あれ、vim-goaddtagsってファイル保存してしまうのか…
heavenshell 9日 22:25:18 Slack
> カーソル位置の関数/ファイルを対象にテスト実行とか
CodeLens じゃダメです?ちなみに lsp じゃなくて単純に場所渡すだけなら簡単に実装できる(した)
goplsってそんなことできるんです?(知らなかった)
ゴリラ(コンパイラ入門中) 9日 22:25:54 Slack
あー
ゴリラ(コンパイラ入門中) 9日 22:26:03 Slack
goplsその機能入ったような…
LS、どれに何の機能が入っているかが分かりづらい所があって把握できてない
CodeLensちゃんと使えてないのであれば知りたい!!!!!!!!
ゴリラ(コンパイラ入門中) 9日 22:27:24 Slack
cocでCodeLens使えのかな
heavenshell 9日 22:28:08 Slack
使えるはず
ゴリラ(コンパイラ入門中) 9日 22:28:12 Slack
josa42/coc-go
Go language server extension using gopls for coc.nvim.
うわお CodeLensにtestあった
ゴリラ(コンパイラ入門中) 9日 22:28:15 Slack
使えるっぽい
heavenshell 9日 22:28:27 Slack
  • benri1
heavenshell 9日 22:28:49 Slack
最初が CodeLens 次が自作のプラグイン(カーソル付近の関数の実行)
CodeLensとかActionはなんでもありなのでかえって分かりづらいと思ったけど単純に調べる努力不足だった
やはりドキュメントが欲しい
heavenshell 9日 22:29:36 Slack
gopls は大抵揃ってるイメージです
Gamou Tatsumi 9日 22:30:54 Slack
昨日cocでTagAdd使って「なんだこれ!」ってなってました
codelensでサポートしてる機能の一覧がほしい・・・
daisuzuさんのだいぶ前の情報しか見つからない
https://daisuzu.hatenablog.com/entry/2020/05/06/215001
goplsは更新頻度が高く、何ができるのかをちゃんと把握できていなかったので、LSPのメソッドベースで今の時点(v0.4.0)の機能をざっと調べてみることにしました。 補完(textDocument/completion) ジャンプ系 textDocument/definition textDocument/typeDefinition textDocument/implementation textDocument/references textDocument/documentSymbol workspace/symbol その他 Diagnostic textDocument/codeA…
ゴリラ(コンパイラ入門中) 9日 22:31:28 Slack
josa42/coc-go
Go language server extension using gopls for coc.nvim.
ゴリラ(コンパイラ入門中) 9日 22:31:33 Slack
わああ、結構あるわ…
Gamou Tatsumi 9日 22:31:54 Slack
cocは全体的に高水準ですからね
マジですごい
cocに一覧あるのか
ゴリラ(コンパイラ入門中) 9日 22:32:07 Slack
あとはカバレッジがほしいな
heavenshell 9日 22:32:24 Slack
カバレッジは流石に自分で作らないとないでしょうね。
Gamou Tatsumi 9日 22:32:26 Slack
:contribute-chance: とはいかないか
ゴリラ(コンパイラ入門中) 9日 22:32:50 Slack
コントリビュートするのが良さそう
  • vim1
ゴリラ(コンパイラ入門中) 9日 22:32:57 Slack
時間作ってやるか
Gamou Tatsumi 9日 22:33:21 Slack
できるならそれがいいですね
gopls自体にあったりするんだろうか
goplsでgoimports相当のことをする方法とかもスッと調べれば出てくるってわけじゃないんだよなあ
知見が追いついてない
vim-testではいけない?
TSではいけるんだけどGo一切触ってないから試せない
Remote Pluginだけど最近ultest入れてめっちゃいい見た目でテスト実行できるようになりました
https://github.com/rcarriga/vim-ultest
rcarriga/vim-ultest
The ultimate testing plugin for (Neo)Vim
ゴリラ(コンパイラ入門中) 9日 22:40:23 Slack
cocでのcodelensの使い方がわからないな…
:call CocAction('codeLensAction')
<Plug>(coc-codelens-action) のどっちかですね
ゴリラ(コンパイラ入門中) 9日 22:46:56 Slack
あー…
ゴリラ(コンパイラ入門中) 9日 22:47:00 Slack
CocのActionか…
ゴリラ(コンパイラ入門中) 9日 22:47:07 Slack
んー、難しい
ゴリラ(コンパイラ入門中) 9日 22:48:22 Slack
code lensナニも起きないな
heavenshell 9日 22:48:36 Slack
enable にしてます?
これはcoc依存じゃなくてLSのcodelens依存じゃないです?
cocがcodelens呼んでるだけに見える
yaegassy 9日 22:49:06 Slack
デフォルトは無効ですね。ちなみにNeovimしか使えないと思います
yaegassy 9日 22:49:59 Slack
<https://github.com/neoclide/coc.nvim/blob/master/data/schema.json | schema.json>

"codeLens.enable": {
"type": "boolean",
"description": "Enable codeLens feature, require neovim with set virtual text feature.",
"default": false
ゴリラ(コンパイラ入門中) 9日 22:52:20 Slack
あー
ゴリラ(コンパイラ入門中) 9日 22:52:29 Slack
coc自体がdisableか…
ゴリラ(コンパイラ入門中) 9日 22:52:37 Slack
Cocの難しすぎる
yaegassy 9日 22:54:09 Slack
gopls 自体の設定にも enable ? true 的な何かをする必要があるかも
ゴリラ(コンパイラ入門中) 9日 22:54:28 Slack
gopls自体は設定しました
ゴリラ(コンパイラ入門中) 9日 22:54:34 Slack
  call coc#config('codeLens.enable', v:true)
call coc#config('go', {
\ 'goplsOptions': {
\ 'codelenses': {
\ 'test': v:true,
\ },
\ }
\ })
ゴリラ(コンパイラ入門中) 9日 22:54:50 Slack
これでも動かないので、設定がどこかミスっている感…
yaegassy 9日 23:11:10 Slack
僕の手元のcoc-goでは普通につかえますね
ゴリラ(コンパイラ入門中) 9日 23:11:18 Slack
2021-09-09T23:09:58.756 INFO (pid:56653) [attach] - Request action: codeLensAction []
2021-09-09T23:09:59.940 INFO (pid:56653) [attach] - receive notification: doAutocmd [ 1 ]
2021-09-09T23:10:01.003 INFO (pid:56653) [attach] - receive notification: doAutocmd [ 1 ]
ゴリラ(コンパイラ入門中) 9日 23:11:21 Slack
んー、なんだろ…
ゴリラ(コンパイラ入門中) 9日 23:11:35 Slack
request は飛んでいるっぽいけど
yaegassy 9日 23:13:09 Slack
画面に ‣ run test って表示されてる行はありますか?
ゴリラ(コンパイラ入門中) 9日 23:13:38 Slack
何も起きないですね…
ゴリラ(コンパイラ入門中) 9日 23:13:55 Slack
goplsはlatestをインストールしています
<http://golang.org/x/tools/gopls|golang.org/x/tools/gopls> v0.7.1
<http://golang.org/x/tools/gopls@v0.7.1|golang.org/x/tools/gopls@v0.7.1> h1:Mh3Z8Xcoq3Zy7ksSlwDV/nzQSbjFf06A+L+F8YHq55U=
yaegassy 9日 23:15:27 Slack
でもあんまりうれしくないやつだな。僕は vim-test使ってますが。 coc-go の codelens からの テスト実行だと pass のときは エコーされて [coc.nvim] all tests passed が出るだけで。FAILならボロっとちょっとだけ数行でる感じ
ゴリラ(コンパイラ入門中) 9日 23:16:05 Slack
:naruhodo:
ゴリラ(コンパイラ入門中) 9日 23:16:33 Slack
vim-lspでも試してみたらだめだったからgoplsが行けないかもしれないな。。
Error running codelens "No codelens found"
yaegassy 9日 23:16:53 Slack
run test が表示されてる行にカーソルはありますか?
yaegassy 9日 23:17:35 Slack
でも、そもそも codelensのtestはなんかlegacyみたいな記述がありますね。(最近Go全然触ってないしwatchしてないのでよくわからない) https://github.com/golang/tools/blob/master/gopls/doc/settings.md#run-tests-legacy
<https://github.com/golang/tools/blob/master/gopls/doc/settings.md | settings.md>
*Settings*

This document describes the global settings for gopls inside the editor.
The settings block will be called "gopls" and contains a collection of
controls for gopls that the editor is not expected to understand or control.
These settings can also be configured differently per workspace folder.

In VSCode, this would be a section in your settings.json file that might look
like this:


"gopls": {
"ui.completion.usePlaceholders": true,
...
},


*Officially supported*

Below is the list of settings that are officially supported for gopls.

Any settings that are experimental or for debugging purposes are marked as
such.

To enable all experimental features, use *allExperiments: true*. You will
still be able to independently override specific experimental features.

#Build
#Formatting
#UI
#Completion
#Diagnostic
#Documentation
#Navigation

*Build*
**buildFlags* _[]string_*

buildFlags is the set of flags passed on to the build system when invoked.
It is applied to queries like go list, which is used when discovering files.
The most common use is to set -tags.

Default: [].

**env* _map[string]string_*

env adds environment variables to external commands run by gopls, most notably go list.

Default: {}.

**directoryFilters* _[]string_*

directoryFilters can be used to exclude unwanted directories from the
workspace. By default, all directories are included. Filters are an
operator, + to include and - to exclude, followed by a path prefix
relative to the workspace folder. They are evaluated in order, and
the last filter that applies to a path controls whether it is included.
The path prefix can be empty, so an initial - excludes everything.

Examples:

Exclude node_modules: -node_modules

Include only project_a: - (exclude everything), +project_a

Include only project_a, but not node_modules inside it: -, +project_a, -project_a/node_modules

Default: ["-node_modules"].

**memoryMode* _enum_*

*This setting is experimental and may be deleted.*

memoryMode controls the tradeoff gopls makes between memory usage and
correctness.

Values other than Normal are untested and may break in surprising ways.

Must be one of:

"DegradeClosed": In DegradeClosed mode, gopls will collect less information about
packages without open files. As a result, features like Find
References and Rename will miss results in such packages.
"Normal"
Default: "Normal".

**expandWorkspaceToModule* _bool_*

*This setting is experimental and may be deleted.*

expandWorkspaceToModule instructs gopls to adjust the scope of the
workspace to find the best available module root. gopls first looks for
a go.mod file in any parent directory of the workspace folder, expanding
the scope to that directory if it exists. If no viable parent directory is
found, gopls will check if there is exactly one child directory containing
a go.mod file, narrowing the scope to that directory if it exists.

Default: true.

**experimentalWorkspaceModule* _bool_*

*This setting is experimental and may be deleted.*

experimentalWorkspaceModule opts a user into the experimental support
for multi-module workspaces.

Default: false.

**experimentalTemplateSupport* _bool_*

*This setting is experimental and may be deleted.*

experimentalTemplateSupport opts into the experimental support
for template files.

Default: false.

**experimentalPackageCacheKey* _bool_*

*This setting is experimental and may be deleted.*

experimentalPackageCacheKey controls whether to use a coarser cache key
for package type information to increase cache hits. This setting removes
the user's environment, build flags, and working directory from the cache
key, which should be a safe change as all relevant inputs into the type
checking pass are already hashed into the key. This is temporarily guarded
by an experiment because caching behavior is subtle and difficult to
comprehensively test.

Default: true.

**allowModfileModifications* _bool_*

*This setting is experimental and may be deleted.*

allowModfileModifications disables -mod=readonly, allowing imports from
out-of-scope modules. This option will eventually be removed.

Default: false.

**allowImplicitNetworkAccess* _bool_*

*This setting is experimental and may be deleted.*

allowImplicitNetworkAccess disables GOPROXY=off, allowing implicit module
downloads rather than requiring user action. This option will eventually
be removed.

Default: false.

**experimentalUseInvalidMetadata* _bool_*

*This setting is experimental and may be deleted.*

experimentalUseInvalidMetadata enables gopls to fall back on outdated
package metadata to provide editor features if the go command fails to
load packages for some reason (like an invalid go.mod file). This will
eventually be the default behavior, and this setting will be removed.

Default: false.

*Formatting*
**local* _string_*

local is the equivalent of the goimports -local flag, which puts
imports beginning with this string after third-party packages. It should
be the prefix of the import path whose imports should be grouped
separately.

Default: "".

**gofumpt* _bool_*

gofumpt indicates if we should run gofumpt formatting.

Default: false.

*UI*
**codelenses* _map[string]bool_*

codelenses overrides the enabled/disabled state of code lenses. See the
"Code Lenses" section of the
Settings page
for the list of supported lenses.

Example Usage:


"gopls": {
...
"codelenses": {
"generate": false, // Don't show the `go generate` lens.
"gc_details": true // Show a code lens toggling the display of gc's choices.
}
...
}


Default: {"gc_details":false,"generate":true,"regenerate_cgo":true,"tidy":true,"upgrade_dependency":true,"vendor":true}.

**semanticTokens* _bool_*

*This setting is experimental and may be deleted.*

semanticTokens controls whether the LSP server will send
semantic tokens to the client.

Default: false.

*Completion*
**usePlaceholders* _bool_*

placeholders enables placeholders for function parameters or struct
fields in completion responses.

Default: false.

**completionBudget* _time.Duration_*

*This setting is for debugging purposes only.*

completionBudget is the soft latency goal for completion requests. Most
requests finish in a couple milliseconds, but in some cases deep
completions can take much longer. As we use up our budget we
dynamically reduce the search scope to ensure we return timely
results. Zero means unlimited.

Default: "100ms".

**matcher* _enum_*

*This is an advanced setting and should not be configured by most gopls users.*

matcher sets the algorithm that is used when calculating completion
candidates.

Must be one of:

"CaseInsensitive"
"CaseSensitive"
"Fuzzy"
Default: "Fuzzy".

**experimentalPostfixCompletions* _bool_*

*This setting is experimental and may be deleted.*

experimentalPostfixCompletions enables artifical method snippets
such as "someSlice.sort!".

Default: true.

*Diagnostic*
**analyses* _map[string]bool_*

analyses specify analyses that the user would like to enable or disable.
A map of the names of analysis passes that should be enabled/disabled.
A full list of analyzers that gopls uses can be found
here.

Example Usage:


...
"analyses": {
"unreachable": false, // Disable the unreachable analyzer.
"unusedparams": true // Enable the unusedparams analyzer.
}
...


Default: {}.

**staticcheck* _bool_*

*This setting is experimental and may be deleted.*

staticcheck enables additional analyses from staticcheck.io.

Default: false.

**an…
ゴリラ(コンパイラ入門中) 9日 23:18:55 Slack
testはこの間追加されたばっかりなはずだけど、なぜlegacyになっているのかは分からないですね…
ゴリラ(コンパイラ入門中) 9日 23:19:03 Slack
んー困ったな
yaegassy 9日 23:19:15 Slack
そうなんですか?僕の記憶だと結構前からあった気がするんですけどね。
ゴリラ(コンパイラ入門中) 9日 23:19:44 Slack
あー、この間と思っていたのが実は結構前だった可能性が高いかも…
ゴリラ(コンパイラ入門中) 9日 23:20:33 Slack
vim-testにしようかな
yaegassy 9日 23:22:17 Slack
せっかくなら作るという選択肢も。
ゴリラ(コンパイラ入門中) 9日 23:22:48 Slack
coverageは作ろうと思っています
ゴリラ(コンパイラ入門中) 9日 23:22:58 Slack
vim-test、今使ってみた感じ便利そうですね
ゴリラ(コンパイラ入門中) 9日 23:23:13 Slack
ちゃんと関数単位でのテストもできる
heavenshell 9日 23:24:04 Slack
メルカリの人も自作(テストランナー)してるから自作しよう。
https://engineering.mercari.com/blog/entry/mercari_codecast_1/
Merpay Architect / Mercari Microservices Platform チームの伊藤です。この記事は Merpay Tech Openness Month の3日目の投稿となります。本稿では、先日開催した開発ライ
1 件の返信 最終返信:23:25:57
#←
チャンネルにも投稿済
yaegassy 9日 23:25:57
これよさそう
yaegassy 9日 23:24:42 Slack
vim-testの中身や heavenshell さんのとか参考(パクリ)ればスムーズに作れるかも
heavenshell 9日 23:25:52 Slack
ぶっちゃけ go test -v -run=ターゲットの関数名 これ叩いてるだけだから簡単。
yaegassy 9日 23:25:57 Slack
これよさそう
このスレッドに返信しました : メルカリの人も自作(テストランナー)して ...
yaegassy 9日 23:26:28 Slack
ツールを落として設定コピペで終わりそうですね
skkeletonにdisableとtoggle入れました。マッピングするとeskk.vimと似たような雰囲気で使えるようになるはずです。(バグってたらごめんね)
  • 69b9bbe795f194422
こちら対応してみました。かなり取りこぼしが減ったと思います。
  • 👍3
このスレッドに返信しました : 自分でもこれは結構不便なので、候補を集め ...
実装しました!
オプションでeskkみたいに一気に消えるのかddskkみたいに段階的に戻すのか変えられます
  • 👍4
  • 🎉4
このスレッドに返信しました : skkeletonで変換候補選択をキャン ...
ddc-buffer、先程ピンポイントで入れておけばよかった事案が発生したので入れておこう
  • subara3
help書いたりするのに便利そう
トグルできたやったー
  • 👍3