lambdalisue 3日 13:20:36 Slack
twitter
syumai @__syumai
もうすぐ始まりますが、途中参加、途中退出OKなので今からでもいけますよ〜!
今日はDenoやろう!と言う気分になったらぜひいらしてください / 第10回 Deno勉強会@オンライン https://deno-ja.connpass.com/event/208138/ #deno_ja
Twitter
lambdalisue 3日 13:20:53 Slack
ここで denops やるつもりです〜
  • deno8
lambdalisue 3日 14:50:41 Slack
🎉 祝:むっちゃかわいいロゴができそうです 🎉
  • blob_tada9
lambdalisue 3日 15:24:24 Slack
  • 🎉3
  • 69b9bbe795f194421
twitter
Λlisue@花粉症 @lambdalisue
@hashedrock さんが Denops のビジュアルイメージを描いてくださいました!🎉
該当イメージは https://github.com/vim-denops のオーガニゼーションイメージ設定および https://zenn.dev/ の denops トピック画像として登録申請しました!🎉

#denops #zenn #deno_ja #vim_jp https://pbs.twimg.com/media/EyB2TLYUcAIENqh.jpg
Twitter
lambdalisue 3日 16:53:48 Slack
twitter
Λlisue@花粉症 @lambdalisue
やはり https://zenn.dev は仕事が早い! #zenn #denops https://pbs.twimg.com/media/EyCK935U4AAO7rT.jpg
Twitter
lambdalisue 3日 16:53:55 Slack
Zenn にもビジュアル反映されました!
  • 🎉4
lambdalisue 3日 18:08:24 Slack
ビジュアルできたし頑張ろう
  • goodpoem5
yukimemi 3日 20:18:53 Slack
@lambdalisue
[yukimemi/dps-asyngrep](https://github.com/yukimemi/dps-asyngrep) で、非同期に結果を quickfix に出してるんですが、これを ctrlp とか coclist みたいなんで絞り込むことはできないでしょうか?
[lambdalisue/fin.vim: 🐟 Filter the buffer content in-place without modification](https://github.com/lambdalisue/fin.vim) これ使えないかなぁーとか思ったんですが、 denops で非同期に setqflist して quickfix が動的に増えていくのに追従して filter かけていくのができなくて・・・。(Fin 打った瞬間の quickfix list で固定化されて増えていかない。)
Contribute to yukimemi/dps-asyngrep development by creating an account on GitHub.
🐟 Filter the buffer content in-place without modification - lambdalisue/fin.vim
lambdalisue 3日 22:04:19 Slack
非同期に追加しながら非同期にフィルターしたいという話でしょうか?その場合、フィルター部分も自前で作成しないと難しいかと
lambdalisue 3日 22:04:37 Slack
qfを使う時点で、かなり厳しそうです
Tsuyoshi CHO 3日 22:06:43 Slack
たぶん、qfに対してそれぞれが非同期やると厳しいから、 source -> filter -> qflist(add)みたいになる動作が作れないと期待動作にはならなそう?
lambdalisue 3日 22:07:56 Slack
ですです。で、その場合qfを使う意味は?と個人的には思います。
Tsuyoshi CHO 3日 22:09:54 Slack
最後に出てきたのがqf/loclistだと、ジャンプが簡単、みたいなのはありますけど...期待するところかによりますね
FFっぽい
lambdalisue 3日 22:13:07 Slack
これ、そもそもの要望を考えると、個別に追加ではなく構築後に一発で追加して、そのあとあFinをひらくだけで良いのでは?
lambdalisue 3日 22:14:49 Slack
動的にqfに追加してるから発生する不具合であって、要素取得のみを非同期にして、qfの構築は同期的に一発で行えば悩む必要がなさそうです
yukimemi 4日 00:18:52 Slack
ですよねー・・・めちゃめちゃわかります・・・。ただ、めっちゃでかいディレクトリで grep した時とか非同期に見つかったものから順次表示してほしくて・・・ (そんなディレクトリで grep すなっていうのはわかりますが・・・)
Denite はたしかそんな動作だった気がするんですよね。結果が順次追加されながらフィルターできるって動作。
シェルでパイプつなげる時みたいに stream 的に扱いたいっていう。便利かどうかはともかくなんか順次表示された方がかっこいいって思っちゃう
lambdalisue 4日 00:24:02 Slack
QFを使わずに、表示/フィルタインターフェースを作ればできると思います
0 件の返信 最終返信:
#←
チャンネルにも投稿済
yukimemi 5日 23:19:17
なんとなくそれっぽいのできました! DenopsWalk コマンドで配下のファイル FF するやつ
[yukimemi/dps-walk](https://github.com/yukimemi/dps-walk)
Contribute to yukimemi/dps-walk development by creating an account on GitHub.
yukimemi 4日 00:51:46 Slack
了解です!あざます!
  • 💪1
lambdalisue 4日 02:03:04 Slack
https://github.com/vim-denops/denops.vim/pull/18

もう少し寝かせる予定ですが

1. DenopsRestart コマンドにより関連外部プロセス全体をリスタートできるようになります
2. denops#plugin#regsiter(...) を明示的に呼ぶことで動的にプラグインの追加ができるようになります
  • naruhodo1
Add DenopsRestart to restart channel/service server (Close #13) Add denops#plugin#register({plugin}, {script}) for lazy import
おっ
yukimemi 5日 23:19:17 Slack
なんとなくそれっぽいのできました! DenopsWalk コマンドで配下のファイル FF するやつ
[yukimemi/dps-walk](https://github.com/yukimemi/dps-walk)
  • 🎉3
このスレッドに返信しました : QFを使わずに、表示/フィルタインターフ ...
Contribute to yukimemi/dps-walk development by creating an account on GitHub.
yukimemi 5日 23:25:28 Slack
これまた、 Neovim と Vim で挙動が違ってまして・・・
フィルターにすぐ入れるように、 await vim.execute("startinsert!") してるんですが、Neovim はちゃんと insert モードに入るのに、 Vim は入らないです・・・
lambdalisue 5日 23:40:19 Slack
あー mode 系は奥が深そう...
deolでもさんざん苦労した
lambdalisue 5日 23:40:54 Slack
なるべく最後の最後に持ってくるとか call timer_start(0, { -> execute('startinsert!') }) してみるとかはどうでしょう?
Vim8、物によってはfeedkeysで流し込まないといけなくて実につらい
Neovimだと何も考えずに非同期周り動いてくれるのに
denopsでマッピングを定義するにはどうすればよいかな
Tsuyoshi CHO 9日 10:29:16 Slack
先行例だと、vimの機能呼び出しでマッピング実行してるとかだったような
vim側でやってもいいかも、とは思ったけど、そのときはそうしたそうで。
Tsuyoshi CHO 9日 10:33:22 Slack
Brackets completion plugin, using the denops.vim. Contribute to higashi000/dps-kakkonan development by creating an account on GitHub.
なるほど。やはり専用のヘルパーはないのね
Tsuyoshi CHO 9日 10:39:29 Slack
これからベストプラクティス作っていく必要はあるんでしょうねえ
個人的には別になくてもいい気がしてますね。:vimvim: してるやつはvim.executeでいい
Tsuyoshi CHO 9日 10:45:49 Slack
細かい条件判定とかが不要なら、まあ問題にはなりにくいし...いいか
そろそろプラグイン開発やろうとしているんだけど、どうするかな
モジュール分割をどうすればよいのかと思っている
モジュールってプラグイン単位での話ですか?
はい
確かにそれはむずい
ソースコード分割どうすればよいのかなと
ひとまず1つでやっておいて後で考えるじゃ無理かな
コードを疎結合にしておけば
まぁ最初はコードも少ないからね
とりあえず、プラグインの公開を目指す
vaporwareとなります
deno製ダークパワーplugin名前きになる
それはもうすぐ明かされることになるかな
  • 👀3
lambdalisue 9日 13:18:37 Slack
プラグインはdenoのモジュールとしてGithubとかのURL直接読む形式で良いのでは感。それを動的にインポートする。
githubのURI書く場合、細かいバージョン管理がよくわからない
What would you like Renovate to be able to do? Support Deno as a regular package manager. Describe the solution you'd like Provide upgrades if someone uses branch versions Additional context ht...
あと、deno fmtに準じたインデントするプラグインがほしい
lambdalisue 9日 13:59:47 Slack
@hrsh7th さんのプラグイン共通ストレージの話とかもあるし Denops プラグイン間で Vim を経由せずにやり取りする方法を用意した方が筋がいいかなと思えてきた
個人的にはすべてが Worker 境界で分離されているのが難しいなという感覚です。
lambdalisue 9日 14:01:44 Slack
プラグイン間も msgpack-rpc で呼び出すのがいいかなーと
lambdalisue 9日 14:02:04 Slack
(まだ全然深く考えてない)
作り始めるといろいろ出てくるね
  • sorena1
lambdalisue 9日 14:27:02 Slack
なので細かく着地するのがとても大切
とりあえず、パフォーマンス確認してるのだけれど
vimの呼び出しは遅い
全行とってくるのがブロックするから一行ずつにしたけど、これもめちゃ遅い
Pythonの方がたぶん早いと言えるくらいには遅いな
lambdalisue 9日 14:38:34 Slack
その確認スクリプトとかあげてもらえます?土日見てみます
どちらをみます?
一行ずつの方?
バッファー全体から補完はとりあえず諦める方向にしよう
全行とってくるのが遅いというのはちょっと解せないですね。denops は vim/neovim との連携部分は coc と同等のはずなので。。。うーむ。
lambdalisue 9日 14:44:05 Slack
原理的に同一なはずなので改善できる可能性が高そう
lambdalisue 9日 14:44:10 Slack
どっちも、かなー
130KBのeval.cで試しました
この規模だと固まりますね
cocだとどうなのかは不明
lambdalisue 9日 14:46:37 Slack
Vim だけですよね? Neovim だと早いって話ですよね?
今はneovimでのみ確認してます
lambdalisue 9日 14:49:50 Slack
あれ、ってことは Neovim 側から 130KB の eval.c の内容を Denops 側に持ってくるのが遅いという感じですか?なんだろ
はい
getline使ってます
cocとvital-vsでパフォーマンス違う問題に近いのかな
lambdalisue 9日 14:52:04 Slack
const content = await vim.call('getline', 1, '$');
lambdalisue 9日 14:52:06 Slack
ですよね?
lambdalisue 9日 14:52:41 Slack
ブロッキングというのが謎。ブロックングするの getline 自体な気がする...
lambdalisue 9日 14:53:16 Slack
まぁ詳細は土日みます
ループさせてもだめぽ
500行ずつとってきて2000行までループさせてフリーズ
1500はいけるらしい
Gamou Tatsumi 9日 15:13:29 Slack
これ環境が悪いのかもしれないですけど、試しにeval.cの中身をそのコードで取ろうとしたらフリーズとかではなく
[denops] Unexpected data received:     if (p_cpo == empty_option)
[denops] Unexpected data received: ^Ip_cpo = save_cpo;
[denops] Unexpected data received: else
[denops] Unexpected data received: {
[denops] Unexpected data received: ^I// Darn, evaluating {sub} expression or {expr} changed the value.
[denops] Unexpected data received: ^I// If it's still empty it was changed and restored, need to restore in
[denops] Unexpected data received: ^I// the complicated way.
[denops] Unexpected data received: ^Iif (*p_cpo == NUL)
[denops] Unexpected data received: ^I set_option_value((char_u *)"cpo", 0L, save_cpo, 0);
[denops] Unexpected data received: ^Ifree_string_option(save_cpo);
[denops] Unexpected data received: }
[denops] Unexpected data received:
[denops] Unexpected data received: return ret;
[denops] Unexpected data received: }

な感じでエラーが出ました
1500行だとエラーなしで沈黙(処理に時間かかってるだけの可能性ありますが :q で落とした)
Shougoさんにならってとりあえず500行に絞ったら普通に出力されました
BUFFERのサイズ?
lambdalisue 9日 17:38:38 Slack
あーわかた
lambdalisue 9日 17:38:59 Slack
いや、違うか...
lambdalisue 9日 17:39:12 Slack
明日にでも腰据えてみよう
Dark deno powered completion framework for neovim/Vim8 - Shougo/ddc.vim
とりあえず、テスト用のリポジトリを作りました
@lambdalisueテストしてみてください
vaporwareだから使うなと書いてあるのに、秒速でスターが付いたぞ。怖い
  • majika1
  • 69b9bbe795f194423
監視されている…
lambdalisue 9日 20:20:52 Slack
  • wa-wa-14
twitter
緋村罵倒祭 @Muskuarede
本当はちゃんと作るつもりですが、rustwasm+tokio両対応がゲロしんどい(雑魚なので)ので簡易denops版のdenops debuggerを作りました。
https://github.com/kkiyama117/dps-vapor-inspector
Twitter
kkiyama117 9日 20:31:59 Slack
本当に雑にwsと出力を繋いで初期化だけした後で「後はjson適当に送ってね」という代物です、chromeのデバッグコンソール等にアレルギーがある方のみ推奨です……
lambdalisue 9日 20:36:02 Slack
Denopsやっぱ夢がある
こういうのも面白いなって思う https://github.com/yutkat/dps-coding-now.nvim
  • 👀1
  • wakaru1
Synchronize the filetype you are coding with the GitHub messages - yutkat/dps-coding-now.nvim
GitHubってステータス出せたんだ
面白いw
Tsuyoshi CHO 9日 20:44:53 Slack
いれてみよっかなw
lambdalisue 9日 20:45:01 Slack
ウケるw
なんというか、「らしい」と思ったんですよね見た時
とてもDenopsに向いてる感
Gamou Tatsumi 9日 20:46:07 Slack
cocにDiscordのNow Playingを弄れるやつありましたねそういえば
  • hee2
DeepL叩くとか便利そうだけど課金なぁ
SlackのStatus叩けるのか
Tsuyoshi CHO 9日 20:53:47 Slack
なんだかんだリモートになって、ステータスは適時更新したいし、あってもいいのかも
というか各種サービスのステータスを揃えて更新してくれるのがほしいな
永久に○○やってるってのが更新されないの辛そう
退勤したら自動で消したい
Tsuyoshi CHO 9日 20:54:33 Slack
slack、GitHub、あとはまあTeamsもかな...?
退勤じゃなくてよくて一定時間操作がなかったらか・・・
Slackのstatusはタイマー設定できて便利
2歳児とエンジニアは何でも叩いてみたくなりますよね
Slack、タイマーセットできるんだ
BufEnterとか適当にやってたらVimから叩かれるし数時間おきに空にしたらいいのでは?
ଳ (kato) 9日 20:57:06 Slack
Githubのステータスも時間を指定できるみたいですね
ଳ (kato) 9日 20:57:25 Slack
..
  • hee1
Learn how to sync status with calendars, cubicles, conference calls, and bathroom stalls.
User presence and status
VSCodeでも需要ありそうな気がする
書くかー
  • otxu2
SlackのTokenってどういう扱いになってるんだこれ
どこでもなにも言ってないのに怖い人たち・・・
  • 😝3
アプリインストールして表示されるApp Credentialそのまま使えばいいの・・・?
App CredentialじゃなくてAppに対するUserのTokenが欲しいと思ってるんだけど発行できない・・・?
Denoっぽい感じの外部ライブラリ使ってなにかやりたいんですけど、Deno側がまだ整ってない感じありますよね・・・もう少し成熟してほしい。でないとそっちから作る羽目になっちゃうから・・・
おもしろい
  • goodpoem3
ただちょっとバッファ切り替えのときにモサっとするような…?
lambdalisue 9日 21:16:04 Slack
Denoっぽい感じの外部ライブラリ使ってなにかやりたいんですけど、Deno側がまだ整ってない感じありますよね・・・もう少し成熟してほしい。でないとそっちから作る羽目になっちゃうから・・・
ですね。ありすえさん思った以上にいろいろ作っててびっくりした
  • 💪1
  • wakaru1
Tsuyoshi CHO 9日 21:17:38 Slack
yutkat/dps-coding-now.nvim で、vimのなかからだけ環境変数を先行設定したいが、自分の構成だとつらい...
バッファ移動時awaitしてる?
あーどうでしょうね。ちょろちょろっと勢いで作っただけだからあんまり見れてないですね。そしてもう飽きたw
  • warau5
Tsuyoshi CHO 9日 21:20:13 Slack
まあ、ちょっと考えてみよう
なんかやっぱりいろいろうまい感じにやるならdeno側でライブラリ先に実装しないとな〜って印象でした
やっぱ外部API叩くのは超やりやすいですね。なんか実用的なネタを思いつけばいいんですが・・・
次は既存のVim scriptだとこんだけ行数あるけどdenopsだとライブラリ使うからこんだけで済むみたいなのやりたいけど、ネタ捜索中・・・
lambdalisue 9日 21:24:01 Slack
機械学習
  • mattn_yoshi3
  • majika2
Tsuyoshi CHO 9日 21:24:10 Slack
ちょっと暇がないので、一旦disable...いつかenableにするw
lambdalisue 9日 21:24:20 Slack
この記事は Vim Advent Calendar 2018 の最終日 25 日目の記事です。昨日は rhysd さんの「Vim の構文ハイライトでクリスマスツリー🎄を飾ってメリクリする」でした。今年も Vim Advent Cale...
lambdalisue 9日 21:24:47 Slack
ここ何度みてもクスッときちゃう
これ今自分がなに弄ってるのか筒抜けになるのちょっとハズカシイな…(filetype だけだけど)
ソースコードいじってるふりして小説読んでるのがバレてしまう…
  • 😆2
kkiyama117 9日 21:31:03 Slack
自分の構成で「I'm coding dein」ってなる時があって一瞬 フハハハハ っていう気分になれたのが個人的には良かったです
  • fuita7
kkiyama117 9日 21:31:29 Slack
恥ずかしく&畏れ多くなってすぐ別のファイル開きましたが
貴様、まさか事案だw
  • sonomasaka2
  • fuhahahaha2
token取れたらDenoからSlackのStatus叩けた、便利
  • 69b9bbe795f194422
便利だ
なんでResponseのjsonメソッドってPromise返すんだろう
const res = await fetch('<https://slack.com/api/users.profile.set>', options)
console.log(await res.json())

awaitを2回書かないといけない理由がよく分かってない
lambdalisue 9日 21:40:10 Slack
コネクション確立とデータの取得
https://github.com/yutkat/dps-coding-now.nvim/blob/9e84f7ea830b293f3ab7c201f4a8545fad458dc3/denops/coding-now/mod.ts#L133-L135
ここの denops#requestdenops#notify にすれば Buffer 切替時の待ちが発生しなくなったんですけど、この修正で大丈夫でしょうか?(ちょっと非同期 + request/response 周りあまり詳しくないので詳しい方にうかがいたく)
  • yosasou2
Synchronize the filetype you are coding with the GitHub messages - yutkat/dps-coding-now.nvim
2 件の返信 最終返信:22:02:20
monaqa 9日 22:01:03
@yutkat
ものすごく小さい変更ですが一応 PR という形にしました。
https://github.com/yutkat/dps-coding-now.nvim/pull/6
Avoided waiting time when entering a new buffer or switching buffers.
yutkat 9日 22:02:20
ありがとうございます 😂
Tsuyoshi CHO 9日 21:40:49 Slack
あー、とってから、デコード完了の2段階だから
うーん、よく分かってない気がする、そこって分けないといけない・・・?
res.json() しないと実際にPOSTはしてない?
lambdalisue 9日 21:41:40 Slack
Stream API とか考えるとわかるかもです
他の言語でも概念的に分かれてる事の方が多いですよね
Tsuyoshi CHO 9日 21:41:48 Slack
fetchがres Promise返すことと、resがjson Promise返すことは別案件になるから?
コネクションを張る所とデータ取得する所の両方にエラー判定が必要なのを考えると自然
上の話に飛んじゃうんですけど、requestが同期に応答を待ってnotifyは飛ばして終わり?
  • 👍1
コネクションとデータはなんか違和感残るけどひとまずそういうものとして理解しとこう
って思ったけどStream APIで考えたら分かった気がする
  • 👍1
lambdalisue 9日 21:45:11 Slack
call denops#promise(...) も可
lambdalisue 9日 21:45:25 Slack
Vital の Promise 相当の機能のオブジェクトが返るので便利
知らなかった
lambdalisue 9日 21:45:57 Slack
まぁ denops まだドキュメントとか書いてないですしねw
へーなるほど。
request と notify の違いは単に関数の実行が完了するのを待つかどうかだけ、という理解で良いですか?
lambdalisue 9日 21:50:17 Slack
はい、それでOKです
lambdalisue 9日 21:50:28 Slack
なので notify だと戻り値が取れません
なるほど、ありがとうございます。notify というメソッドの直感にも沿っていますね(通知するだけなら返り値はいらないはずなので)。
lambdalisue 9日 21:51:06 Slack
コマンドから実行するだけなら、全部 notify にした方が良いです
lambdalisue 9日 21:51:22 Slack
この辺は RPC でよくある命名ですね〜
denopsのhelloworldからパクった気がしたけど一番上だけrequestであとはnotifyだったのか。よく見てなかった・・・
  • 👍1
これで10分後までステータス設定できた
あとはdenops化だ
  • god4
[[ダウンロード: 無題(JavaScript/JSON)]]
const profile = {
  profile: {
    status_text: "test",
    status_expiration: Math.floor(Date.now() / 1000) + 600
  }
};

const options = {
  method: 'POST',
  body: JSON.stringify(profile),
  headers: {
    'Content-Type': 'application/json; charset=utf-8',
    'Authorization': `Bearer ${token}`
  },
}

const res = await fetch('https://slack.com/api/users.profile.set', options)
console.log(await res.json())
結構さくさくいけますよね。便利
いやー楽しいですね。 yutkat さんのプラグインのコードも読んでみたけど読みやすくて楽しかった。
専門知識とか API の規則とか知らなくてもなんとなくやってること分かるから楽しいですよね
  • wakaru3
これdenops以外のライブラリに依存しないのでは
私はライブラリ使いたかったから強引にgraphqlに持ってきましたねw
Deno側でいくら依存しても勝手に落としてくれるので便利
意外と標準だけでなんとかなるけど、なんか旨味を味わいたかった
プラグイン名dpsが多いんでしたっけ
dpsが準公式っぽい話をここで聞きました
lambdalisue 9日 21:56:16 Slack
(僕がチュートリアルで適当に dps 付けちゃったからw)
dps-slack-statusとかでいいかな、filetype渡すように見えないけど
Rust で LSP 作ろうとしてるときも強く感じましたけど、やっぱり決まった API を叩く系は型のしっかり付いた言語が最強ですね。
どういうデータ構造を送受信しないといけないのか詳しく知らなかったとしても、構造体の情報で勝手に補完できるのでめちゃくちゃ開発しやすい + 読みやすい
  • wakaru3
  • sorena1
lambdalisue 9日 21:57:09 Slack
Deno に Protobuf 実装が欲しい
lambdalisue 9日 21:57:23 Slack
誰か氏〜
型1つも書いてないのになんか型推論効いて便利
TSの型推論だいぶ強い
私言語の最初の方で参入したのRustくらい(といっても6年目くらい?)ですけど、Denoはやっぱりそれよりも新しいだけあってなんもないところありますよね。下回り作るの好きな人はすごく生き生きしそう
Tsuyoshi CHO 9日 21:59:46 Slack
https://github.com/marcushultman/deno-google-protobuf
こーいうのはあるけど、簡単deno用アダプタ、みたいなのはないんだろうなあ
Contribute to marcushultman/deno-google-protobuf development by creating an account on GitHub.
最近静的型が受け入れられてるのは推論のおかげだろうな
動的な物と似た感覚で書ける
lambdalisue 9日 22:04:37 Slack
「推論がない静的型付言語は使い物にならない(書きたくない)」的なことを尊敬する方から熱弁されました。完全同意です。
  • me-too1
  • wakaru2
Javaは本当につらかった
  • sorena1
あれのせいでだいぶLLが盛況になった気もしてる
Tsuyoshi CHO 9日 22:05:48 Slack
今は補完とある程度の推論はあるので、多少マシなのかな...
Tsuyoshi CHO 9日 22:06:48 Slack
ただ、本来型は使う側が認識できないとちょっともったないとも思うので、推論も善し悪し...まあ無いのもつらいからアレだが
LspHover的なsomethingを仕込んでおけばいいや的諦め
Tsuyoshi CHO 9日 22:07:28 Slack
型が見える=IFの契約の中身がそれ自体でわかる、でもあるので
でもまあドキュメント自動生成案件かもしれないなあw
今の人は大体IDEもしくはそれに準ずる環境でやってるだろうし
関数単位では極力書くようにしてる
lambdalisue 9日 22:11:20 Slack
Rust の「関数の引数と戻り値の型は全部かけ」という規約が好きです(Rust はメモリ配置制約のせいで抽象化が苦手なので辛いけど)
  • wakaru4
Tsuyoshi CHO 9日 22:12:27 Slack
なるほど
Tsuyoshi CHO 9日 22:13:22 Slack
まあIFなんだから、そこは明記できないとまずいでしょ、というのはあるしなあ
Rust は型推論をガンガンやるので最初は「え、この変数の型なに…」って戸惑ってましたが、 rust-analyzer + doHover を導入したら劇的に改善しました。
LSP は型推論付き静的型付け言語の実用性をさらに高めてくれるんだなあと実感。
C言語「せやな」
ただ Rust の場合は Filter<Map<Iter...>>> みたいな感じで(ホバーして型を覗いたところで)訳わかんない型になってることもよくあるのでその点はちょっとアレですが
  • wakaru2
  • sorena1
TypeScript、最初にやった時の感想が「え、これ何の型が使われてるの見れないつらい」だったんですよね、まだ deno lsp 無かったから
Rustのasyncとかもなにこの型。。。おれの知ってるやつじゃない・・・ってなるし
  • wakaru2
ホバーしたときに型が3行くらいあったらやる気なくなる
  • hiee1
  • wakaru2
TSでもそんなの出てうぇってなったのが一回あったな
rust-analyzer だとときどき impl Iterator<Item=...> みたいな感じで簡略化して表示してくれますね( Filter<Map<Iter... >>> の代わりに)
優秀
lambdalisue 9日 22:22:31 Slack
そう、とても優秀なんですが、そのせいで「うおーーーここに impl Iterator ってかきてーーーーー」ってなりますw
引数の型と戻り値の型には書けます
rust-analyzer は目に見えるスピードで進化するので本当に希望の塊
  • wakaru4
lambdalisue 9日 22:23:48 Slack
これ待ちです
lambdalisue 9日 22:24:01 Slack
はい、引数と戻り値はバリバリ使ってます 👍
  • goodpoem2
できた
  • sokudo2
Contribute to yuki-yano/dps-slack-status.vim development by creating an account on GitHub.
VimEnterで発火させてもいい気がする
VimEnterってft取れてます?
lambdalisue 9日 22:31:38 Slack
WinEnter の間違い?
lambdalisue 9日 22:31:52 Slack
VimEnter は起動時一回のみです
あれWinEnterは入れてるんですけど、起動時に送られなかった気がしたので
あ、denopsのロード?
  • 👍1
できれば1回目送りたいな
  • wakaru1
lambdalisue 9日 22:32:47 Slack
ロード時も実行したいなら単発で start ないで実行するのが良さそうです
  • naruhodo1
ft取らないとかー
lambdalisue 9日 22:33:25 Slack
lambdalisue 9日 22:33:36 Slack
changeStatus 内部で &filetype 取れば良さそう
lambdalisue 9日 22:34:23 Slack
あーメッセージ自由入力って感じなんですかね
ですね、coding-nowそのままパクったんですけど
const messageContent = await vim.g.get(
"slack_status_message",
'["I\'m coding ", &filetype]',
) as string;
面倒だからこのままでいいか・・・
57行か、雑に動きすぎる
  • wakaru1
  • goodpoem5
lambdalisue 9日 22:39:04 Slack
むっちゃ行数少ないのにそれなりの仕事するの最高ですね
1ファイル57行ヤバい
このコード量で通信するプラグイン書けるのはええなぁ
  • wakaru3
https://vim-jp.slack.com/archives/C01N4L5362D/p1617973880178500
これ今のeslintのデフォだとexportは必須だし大体似た感じになっていそうな気はする
Rust の「関数の引数と戻り値の型は全部かけ」という規約が好きです(Rust はメモリ配置制約のせいで抽象化が苦手なので辛いけど)
関数全部は議論があってデフォルトじゃなくなったとかだったような
lambdalisue 10日 00:16:22 Slack
eval.c の読み込みがおそい?やつエラーは再現しました
https://github.com/vim-denops/denops.vim/issues/19
  • subara3
[denops] channel server start: [&#39;/usr/local/bin/deno&#39;, &#39;run&#39;, &#39;-q&#39;, &#39;--no-check&#39;, &#39;--allow-net&#39;, &#39;/Users/alisue/ghq/github.com/vim-denops/denops.vim/deno...
lambdalisue 10日 00:19:00 Slack
やっぱなんかオーバーフロー系かな
lambdalisue 10日 00:22:23 Slack
msgpack-javascript ported to deno. Contribute to Srinivasa314/msgpack-deno development by creating an account on GitHub.
lambdalisue 10日 00:22:38 Slack
msgpack のデコーダーに最大文字長があるから、それかも?
lambdalisue 10日 00:23:31 Slack
流石に違うか
lambdalisue 10日 00:24:35 Slack
eval.c 単体で 145,629 バイトで最大バイナリ長は 4,294,967,295
lambdalisue 10日 00:25:26 Slack
https://vim-jp.slack.com/archives/C01N4L5362D/p1617948809111300

これみる限り場所違うし、やっぱサイズとか?
これ環境が悪いのかもしれないですけど、試しにeval.cの中身をそのコードで取ろうとしたらフリーズとかではなく
[denops] Unexpected data received:     if (p_cpo == empty_option)
[denops] Unexpected data received: ^Ip_cpo = save_cpo;
[denops] Unexpected data received: else
[denops] Unexpected data received: {
[denops] Unexpected data received: ^I// Darn, evaluating {sub} expression or {expr} changed the value.
[denops] Unexpected data received: ^I// If it's still empty it was changed and restored, need to restore in
[denops] Unexpected data received: ^I// the complicated way.
[denops] Unexpected data received: ^Iif (*p_cpo == NUL)
[denops] Unexpected data received: ^I set_option_value((char_u *)"cpo", 0L, save_cpo, 0);
[denops] Unexpected data received: ^Ifree_string_option(save_cpo);
[denops] Unexpected data received: }
[denops] Unexpected data received:
[denops] Unexpected data received: return ret;
[denops] Unexpected data received: }

な感じでエラーが出ました
1500行だとエラーなしで沈黙(処理に時間かかってるだけの可能性ありますが :q で落とした)
Shougoさんにならってとりあえず500行に絞ったら普通に出力されました
lambdalisue 10日 00:33:23 Slack
ムッチャでかいデータを msgpack-rpc で送信しようとするとエラーが出るってとこまではわかった
lambdalisue 10日 00:35:47 Slack
んーこれはテストのバグな気もする
オッ
lambdalisue 10日 00:45:19 Slack
const encoder = new TextEncoder();
const data = encoder.encode("a".repeat(1025));
const buf = new Uint8Array(1024);
buf.set(data);
lambdalisue 10日 00:45:48 Slack
これで同じエラーが出るので「元々用意されていたバッファを超えるとエラー」は「せやな」という感じっぽい
lambdalisue 10日 00:51:22 Slack
とりあえず「バグ」確定ではあると思うけど、どこでバグってんのか酔っ払いの頭じゃわからんので明日。だれか調査してくれてもいいのよ...
lambdalisue 10日 00:51:59 Slack
再現方法とかは https://github.com/vim-denops/denops.vim/issues/19 に書いてあるので、何卒
[denops] channel server start: [&#39;/usr/local/bin/deno&#39;, &#39;run&#39;, &#39;-q&#39;, &#39;--no-check&#39;, &#39;--allow-net&#39;, &#39;/Users/alisue/ghq/github.com/vim-denops/denops.vim/deno...
社内Wikiに作ったプラグインのこと書いてdenops布教するか・・・(vimmerが少ない)
もらったデータを一撃で書き込みたいなら Deno.writeAll でいけそう
denoよくわかってないですが、Uint8Arrayをカジュアルに使う文化があるんですね。Deno.Bufferてのがあるのでこっちが主流なのかと感じましたが。
あーDeno.BufferのコンストラクタはArryaBufferなのか
lambdalisue 10日 15:46:06 Slack
テスト落ちるのはチャンク書き込みが必要なだけな予感がしています
lambdalisue 10日 15:46:22 Slack
なので
https://github.com/lambdalisue/itertools-deno

Python から itertools/more-itertools ポートした
  • subara3
Contribute to lambdalisue/itertools-deno development by creating an account on GitHub.
またすごいnamespace
lambdalisue 10日 16:18:28 Slack
💪
lambdalisue 10日 16:22:08 Slack
全部読めるようにしたつもりだけど 12595/50000 バイトしか読めてない ...
lambdalisue 10日 16:38:39 Slack
大元っぽい?
Tsuyoshi CHO 10日 16:39:22 Slack
わかったっぽい?
lambdalisue 10日 16:44:04 Slack
いや、まったく
Tsuyoshi CHO 10日 16:46:34 Slack
あー、大本に原因があるだろうから、denoや利用コードでフォローしてもどうにもなってないと...
あらら、大変そう
WebWorkerの制約?
lambdalisue 10日 16:48:58 Slack
正直まだわかってないですが、いまは msgpack-deno の decodeStream を疑って見ています
lambdalisue 10日 17:03:07 Slack
問題なさそう...
  private async send(data: Uint8Array): Promise<void> {
while (true) {
const n = await this.#writer.write(data);
if (n === data.byteLength) {
break;
}
data = data.slice(n);
}
}


  private async send(data: Uint8Array): Promise<void> {
return await Denite.writeAll(this.#writer, data);
}

にすると、エラーはでなくなるが、テストが通るわけでもなくてちょっと難しい。。。
lambdalisue 10日 17:26:49 Slack
お、確かに。そういうの直していくともしかする?
lambdalisue 10日 17:27:25 Slack
今はこんな感じで decodeStream の中身てます
こちらもなぜか Hello.... の最初が lo... になってて謎なんですよね。。。w
lambdalisue 10日 17:28:02 Slack
それ
say の文字数分消えてるように見える
lambdalisue 10日 17:28:30 Slack
お、なるほど!
でもそんなわけない気もするし。。。仮説ですw
Tsuyoshi CHO 10日 17:31:18 Slack
むずかしいねえ....うーむ
これ何個目のHelloなんだろう
0001,0002,0003...
みたいにして5文字ずつで何文字目で死んでるか見たいような
Tsuyoshi CHO 10日 17:33:11 Slack
hellow no9じゃないけどナンバリングテストが必要ですね
あ、でも
> 全部読めるようにしたつもりだけど 12595/50000 バイトしか読めてない ...
なのか
末尾12595がきてるのかな
Arduino触っててメモリ少なすぎて爆発してたのを思い出す
テストデータを
  const massiveData = (() => {
let data = '';
for (let i = 0; i < 10000; i++) {
data += ('0000' + String(i)).slice(-4) + ', ';
}
console.log(data);
return data;
})();

にしたらかなりわかりやすくなった。
たしかに途中で切れてるというかそんな感じっぽい動きに見えなくもない
Arduino、触ったやつバッファが128バイトでメモリ2kbだったっぽい
自分で複数回に分けて送るプロトコル的なの雑に実装してどうにかした気がする・・・
msgpack-deno を疑いたくなる気持ちわかる
lambdalisue 10日 17:41:52 Slack
msgpack-javascript ported to deno. Contribute to lambdalisue/msgpack-deno development by creating an account on GitHub.
lambdalisue 10日 17:41:59 Slack
疑ってテストまで書きましたw
lambdalisue 10日 17:42:30 Slack
着地したら本家に PR するつもり
どこでデータの途切れが発生してるかprintデバッグしていくとかしかないんですかねぇ
二分探索・・・
Tsuyoshi CHO 10日 17:47:54 Slack
なんかのバッファフル時処理の処理実装不足感があるけど、探すの大変だ...
lambdalisue 10日 17:49:59 Slack
https://github.com/lambdalisue/msgpack-rpc-deno/pull/10

いろいろ前提条件を揃えるために作り直しました。 writeAll つかったり上記の massiveData 生成したりしてます
lambdalisue 10日 17:50:37 Slack
どうも中間の値が流れてるっぽい
Tsuyoshi CHO 10日 17:51:09 Slack
ロジック系バグの前に(というかちゃんと潰してたから?)、性能バグ問題が顕在化するのが、なんとも玄人だなあ
lambdalisue 10日 17:53:44 Slack
msgpack-deno を疑いたくなる 😇
Tsuyoshi CHO 10日 17:54:26 Slack
なんか境界値の設定ミスもありそうね....
lambdalisue 10日 17:54:52 Slack
あらゆる可能性があってわかめw
lambdalisue 10日 17:55:07 Slack
くそーこれ直さない限り Denops はゴミでしかない....
Tsuyoshi CHO 10日 17:55:22 Slack
まず、純msgpackでの転送の途切れがないこと(=安全にバッファリングできていること)の確認かなあ?
lambdalisue 10日 17:58:39 Slack
こんな感じのデータを送ると分割されて帰ってくるわけだしなぁ...
境界値調べる?
あんまり意味ないか
lambdalisue 10日 18:05:18 Slack
A secure JavaScript and TypeScript runtime. Contribute to denoland/deno development by creating an account on GitHub.
lambdalisue 10日 18:05:32 Slack
ここじゃね感
本体のバッファサイズ?
lambdalisue 10日 18:13:22 Slack
ここの区切りは上記の DEFAULT_BUFFER_SIZE っぽいですね
使う側でoptionのbufSizeででかいの送ればよさそう
lambdalisue 10日 18:15:52 Slack
いや、それだと結局大きいサイズの時に壊れるだけなので解決しないですね
lambdalisue 10日 18:16:02 Slack
むしろ小さくしてテストできそう
Nodeでもコマンド実行時のバッファが小さくて、grepでめちゃくちゃ大きいのが渡ってくるときのためにこんなの設定してた
https://github.com/yuki-yano/fzf-preview.vim/blob/aed5089d3bde92c5e9bde7018fc38758bdb5ea4f/src/const/system.ts#L3-L4
The plugin that powerfully integrates fzf and (Neo)vim. It is also possible to integrate with coc.nvim. - yuki-yano/fzf-preview.vim
Tsuyoshi CHO 10日 18:18:05 Slack
でかい(でかい)
これでvim/vimの全体をrgして渡しても大丈夫だった気がする
lambdalisue 10日 18:18:50 Slack
bufSize: 80123456789 をデータとして利用
確定っぽい
1GB指定しましょう!
lambdalisue 10日 18:19:29 Slack
いや、それだと意味が...
session_test の read のロジックも後で readAll とかにして試してみたいと思ってます
複数個に分けて送る実装入れるとかです?
lambdalisue 10日 18:20:36 Slack
データとして正しくチャンクできているのに decodeStream が変な値返してるので、これは decodeStream が悪いのほぼ確定な気がする
チャンクはちゃんとできて渡ってて、decode時にぶっ壊れてるからdecodeStreamが悪いって話かな
分かっていなかった
  • 👍1
  • dajare1
ダジャレ判定されないかと思ったけどされてしまった
ダジャレ?
Tsuyoshi CHO 10日 18:35:04 Slack
チャンクはちゃんと、デコードはてけとーに....か
あと一歩でちゃんとdenops動く感じですかね
半日くらいdeno触ってみたけど、標準ライブラリが結構貧弱だなあ...
使いたくないけど・・・
https://deno.land/x/lodash@4.17.19
lambdalisue 10日 18:53:45 Slack
よし、最小限の再現コードできた
  • 👍1
lambdalisue 10日 18:53:52 Slack
import { assertEquals } from "<https://deno.land/std@0.68.0/testing/asserts.ts>";

import { decodeStream, encode } from "../mod.ts";

Deno.test("Test decodeStream properly handle incomplete data", async () => {
const reader = new Deno.Buffer(encode("0123456789"));
const stream = Deno.iter(reader, { bufSize: 8 });
const result = await consumeAll(decodeStream(stream));
assertEquals(result, ["0123456789"]);
});

async function consumeAll<T>(it: AsyncIterable<T>): Promise<T[]> {
const result = [];
for await (const item of it) {
result.push(item);
}
return result;
}
lambdalisue 10日 18:54:04 Slack
これが失敗する
lambdalisue 10日 19:00:13 Slack
  • otz3
Thanks for the great library. I&#39;ve found that decodeStream fails to decode incomplete data thus I&#39;ve added a test which fails with the current implementation. I haven&#39;t successes to fix...
lambdalisue 10日 19:00:31 Slack
まだ修正自体は終わってないけど、再現テストはできたのでとりあえずPRした
Tsuyoshi CHO 10日 19:07:03 Slack
https://dev.to/craigmorten/github-actions-with-deno-5fnd
こんな感じでworkflowは作れるらしいけど、あまりわかってないのでFYIだけ
If you've written a Deno module recently, you most likely will want to ensure that you can lint, test...
lambdalisue 10日 19:55:08 Slack
参照だからどっかで編集されちゃってる感じだ...
lambdalisue 10日 19:56:30 Slack
次回 stream の引き出しまでの間に this.bytes が間接的に編集されてしまってる
地獄かな?
辛そう
deno におけるバッファの管理とか結構難しいですよね‥自前でやるとすぐバグらせちゃう。
Deno.writeAll とか使えばそこそこ安全にできるが‥
lambdalisue 10日 20:19:41 Slack
lambdalisue 10日 20:19:45 Slack
見つけた希ガス
lambdalisue 10日 20:28:22 Slack
治った 💪
  • 🎉3
Tsuyoshi CHO 10日 20:28:33 Slack
:otxu:
lambdalisue 10日 20:34:50 Slack
msgpack-deno の修正版を使うと msgpack-rpc-deno のテストも通る
  • yossya2
  • sasu2
素晴らしい
あ、マージされてる
lambdalisue 10日 20:55:04 Slack
はやw
  • quick_alisue4
lambdalisue 10日 20:55:18 Slack
v1.3
lambdalisue 10日 21:10:15 Slack
試しに関連を手で新しくしてeval.c読んでみたけど、まだフリーズするな...
lambdalisue 10日 21:11:01 Slack
複合的な話だったみたい。まぁまずストリーム直した版をリリースしないと調査もままならないけど
lambdalisue 10日 21:12:49 Slack
結局

https://vim-jp.slack.com/archives/C01N4L5362D/p1618043297222600

この勘は当たってました。バッファを使い回してるのでsayの分無くなってた
  • esper1
say の文字数分消えてるように見える
lambdalisue 10日 21:59:37 Slack
全て最新版にすることで、エラーは出なくなりましたが、結局フリーズすることには変わりないので、引き続き調査です
https://github.com/vim-denops/denops.vim/issues/21
Install https://github.com/lambdalisue/dps-getline-test Open example.c on that repository Execute call denops#notify(&#39;getline-test&#39;, &#39;test&#39;, []) 1000 and 2000 are shown but no more ...
lambdalisue 10日 22:18:45 Slack
  • otxu3
lambdalisue 10日 22:18:47 Slack
治った気がする
lambdalisue 10日 22:35:41 Slack
🎉
  • subara6
lambdalisue 10日 22:38:13 Slack
• denops.vim v0.8.0
• denops-std-deno v0.7 (denops-deno v0.10)
最新版である上記を利用すれば巨大なデータでも瞬殺できるようになりました。
lambdalisue 10日 22:38:27 Slack
よかった...
lambdalisue 10日 22:44:44 Slack
twitter
Λlisue@花粉症 @lambdalisue
#denops にて巨大なデータを扱うと内部処理がハングするという、かなりクリティカルな問題が昨夜発覚したので、今日はその調査と修理で溶けました 😇
ただ、おかげで修正することできたので #denops を利用している方は denops.vim/denops-std-deno (or denops-deno) のアップデートをお願いします。
Twitter
おめでとう
私も手元で試します
  • 🙇‍♂️1
lambdalisue 10日 22:50:44 Slack
vaporware って言ってんのに 24 スターもついてるのウケるw
1 件の返信 最終返信:23:13:19
実用性はないといってるのに…
denopsと完全に同じ状況ですね
lambdalisue 10日 22:51:35 Slack
期待アゲw
ひがし 10日 23:03:39 Slack
denopsにvim scriptのファイルパス渡したらそれを読み込んでくれる機能がほしいと思ったので実装してみようと思ったんですけどもうすでに実装されてたり進めててたりってしてますか?
2 件の返信 最終返信:23:12:13
欲しいです
ひがし 10日 23:12:13
頑張ります!
:source と何か違うんだろうか
lambdalisue 10日 23:04:13 Slack
いや、ないです。近いのは vim.execute() ですね
lambdalisue 10日 23:04:48 Slack
実装する場合はなるべく denops-std にお願いします 〜
ひがし 10日 23:05:44 Slack
了解です!
  • 🎉2
Update すると、 vim だけエラー出るです。 Neovim は出ない。ぼくだけ?

[denops] Vim(return):E119: 関数の引数が足りません: s:start
[denops] VimEnter Autocommands for "*"..function denops#server#start[1]..denops#server#channel#start[7]..denops#lib#promise#new[1]..<SNR>106_new[5]..<SNR>151_start[4]..denops#lib#job#start, 行 10
  • me-too1
  • 🙇‍♂️1
なんか出るな
Tsuyoshi CHO 11日 09:11:54 Slack
🐜 An ecosystem of Vim/Neovim which allows developers to write plugins in Deno - vim-denops/denops.vim
🐜 An ecosystem of Vim/Neovim which allows developers to write plugins in Deno - vim-denops/denops.vim
Tsuyoshi CHO 11日 09:12:13 Slack
あー、引数あってないな
Tsuyoshi CHO 11日 09:16:46 Slack
@lambdalisue @yukimemi @kuu
Issue化しました。
https://github.com/vim-denops/denops.vim/issues/23
  • goodjob2
  • 🙇‍♂️1
denops.vim/autoload/denops/lib/job.vim Line 19 in 6f693ff function! s:start(args, options) abort denops.vim/autoload/denops/lib/job.vim Line 51 in 6f693ff function! s:start(context, args, options) ...
Tsuyoshi CHO 11日 09:17:51 Slack
呼び出しが複雑なので、どこをどう変更して直すのがいいのか掴めなかったのでIssueだけ...
なるほど
Tsuyoshi CHO 11日 09:34:14 Slack
というか見るとVim側のJobが変なところ多いみたい(移植ミスかな)
denopsのバージョンアップ確認しました
想定通り動いているようです
  • 👍1
lambdalisue 11日 12:41:30 Slack
うお、凡ミス 🙇‍♂️
lambdalisue 11日 12:49:09 Slack
CI テストで検出したい類のバグですね... テスト充実したい
Tsuyoshi CHO 11日 12:49:38 Slack
Vimで非同期あって、テストするの大変そう...
lambdalisue 11日 12:51:36 Slack
そして CI は Vim のセットアップでこける
CI 力
lambdalisue 11日 12:54:14 Slack
🐜 An ecosystem of Vim/Neovim which allows developers to write plugins in Deno - vim-denops/denops.vim
Tsuyoshi CHO 11日 13:02:16 Slack
リリース名が基本PRマージなのは、開発的な感じはするねw
lambdalisue 11日 13:02:54 Slack
雑さが売りなので
  • 👍2
kkiyama117 11日 14:05:04 Slack
今denopsが各プラグインを呼び出すところ(service.vimの部分)のdenoコマンドの引数をプラグインごとに変えたりしたいんですが、そういった事する時ってやはりdenops本体をいじらないと厳しいですかね?
kkiyama117 11日 14:07:51 Slack
https://www.github.com/vim-denops/denops.vim/tree/main/autoload%2Fdenops%2Fserver%2Fservice.vim
のL12を特定のプラグインでは変更したい、って時にdenops本体を弄らなくても出来る方法があればと思ったのですが
🐜 An ecosystem of Vim/Neovim which allows developers to write plugins in Deno - vim-denops/denops.vim
lambdalisue 11日 17:12:29 Slack
各プラグインがWebWorkerで動いてるので、それは無理ですね
  • 👍1
lambdalisue 11日 17:13:16 Slack
(全部同一プロセスで動いていると言う意味です)
ひがし 11日 20:53:52 Slack
これで特定のVim scriptのファイルを読める部分まではできた...
await vim.load(new URL('./', import.meta.url).pathname, 'script/keymap.vim')
ファイルへのPATHのとり方がとてもゴリ押しなのでそこをなんとかしたい...
lambdalisue 12日 00:43:50 Slack
むしろ非ローカルファイルにも対応して await vim.load(new URL('script/keymap.vim', import.meta.url)) とするのも一つかも?
1 件の返信 最終返信:20:49:50
#←
チャンネルにも投稿済
ひがし 12日 20:49:50
なるほど...
確かにそれも良さそうですね!
lambdalisue 12日 01:06:15 Slack
Vim plugin for counting the number of characters in a sentence - Omochice/dps-charcounter-vim
lambdalisue 12日 01:07:11 Slack
https://github.com/Omochice/dps-codic-vim

捕捉済みだった気もする
The codic plugin of vim. Contribute to Omochice/dps-codic-vim development by creating an account on GitHub.
lambdalisue 12日 01:08:51 Slack
Contribute to nananaman/denops-http-request.vim development by creating an account on GitHub.
Gamou Tatsumi 12日 13:53:52 Slack
servestがdenopsで動かないと思ったらdenoの --no-check オプションのせいだった模様
swcとtscで生成されるコードに差異が出るらしい
  • hee1
  • totemoturai1
babel-preset-typescriptとtscで差が出るのと同じくらいだるそう
多分tscって変数やクラス名とTypeが被るの許容してるんですけど、babel-preset-typescriptで落ちる気がしたんですよね(ちゃんと検証してない)
許容された場合import側でどういう判定されるんだって気持ちになりそう
lambdalisue 12日 14:08:36 Slack
https://vim-jp.slack.com/archives/C01N4L5362D/p1618203232292200

--no-check オプションを外すという選択肢はないので、なんとかワークアラウンドを探って欲しい...
servestがdenopsで動かないと思ったらdenoの --no-check オプションのせいだった模様
swcとtscで生成されるコードに差異が出るらしい
これってDeno側に普通にIssue立てればいいんじゃないですかね?
Deno本体がtscでcheckしてから生成はswc使うとかやりようある気がするけど・・・
Gamou Tatsumi 12日 14:36:41 Slack
https://github.com/keroxp/servest/issues/145
分かる限りこの問題に言及されてるのがこのissueだけなんですよね
読み返してみたら「--no-check で使ってるトランスパイラが変わる」とは言ってなかった
swcの --no-check にバグがある?
I know that it is probably an issue with swc when doing the transpilation, but, as this library is one that gets broken by the transpiler, I think this issue should be here for anyone searching for...
https://scrapbox.io/deno-ja/swc
使い分けられてはいるっぽい
https://github.com/swc-project/swc Rustで実装されたTypeScriptコンパイラ/パーサ deno lintやdeno doc等、Denoにおける様々な機能を実装するために使用されています Denoの内部では、用途に応じてtscとswcが使い分けられています
swc - deno-ja
buildに使っているとは書いてないな
deno-jpできいてみてもいいのかな
なんにしても小さめの構成はあったほうがよさそうか・・・
Gamou Tatsumi 12日 15:00:34 Slack
servestのREADMEに書いてあるサンプルコードだけで再現はできますね
ただキャッシュがややこしい事になるのか、何回か --no-check と行ったり来たりすると --no-check 外しても同じ問題が出るようになります
手動でキャッシュ消すと正常に戻る
Gamou Tatsumi 12日 15:07:45 Slack
deno-jpで聞こうかと思ったんですけど自分でも知りたい事が分からないので質問にしにくい……
どこにIssue出せばいいのかさえ分かればいいんですが
Help Wanted的なので適当にDenoに出すとか?
ひがし 12日 20:49:50 Slack
なるほど...
確かにそれも良さそうですね!
このスレッドに返信しました : むしろ非ローカルファイルにも対応して ` ...
ひがし 12日 22:36:05 Slack
非ローカルファイルをどうやって持ってくるか悩む...
curlとかwgetとかの外部コマンドに頼る以外の選択肢ってありますかね?
fetchじゃだめなんです?
Deno走っている以上curl使う必要はない気がするけど
fetchしてどこかに一意な名前振って書き込んでsourcingでよさそう
lambdalisue 12日 22:37:36 Slack
fetch して直接 execute もありかも?
lambdalisue 12日 22:37:56 Slack
あーだめだ
lambdalisue 12日 22:38:04 Slack
スクリプトローカル変数が混ざるからいただけない
ひがし 12日 22:42:12 Slack
fetch忘れてました…
  • 👍2
ひがし 12日 23:12:21 Slack
なるほど...
こんな感じで行けるのか...
https://gist.github.com/manuelbieh/e44c3a2c0586d4df05f9c03b9060c75e
  • 🎉2
ひがし 13日 00:58:19 Slack
  • 👍3
  • subara3
🐜 Standard module for denops.vim. Contribute to higashi000/denops-std-deno development by creating an account on GitHub.
Contribute to higashi000/dps-loadfilesample development by creating an account on GitHub.
Contribute to higashi000/dps-loadfilesample-remotefile development by creating an account on GitHub.
denopsでファイル分割をやってみようかな
lambdalisue 13日 12:55:52 Slack
fetchってfileプロトコル対応してなかったけか
lambdalisue 13日 12:57:03 Slack
あと、直接executeだとスクリプトローカル変数が全プラグインで被って使いにくいので、一段噛ませた方が良いかもです。その際はプラグイン名をファイル名に加えると良さそう
ブラウザだとCORSで弾かれるけどDenoでもそうなんですっけ
Denoは弾かれなさそう
というかブラウザじゃなかったらNodeも弾かれないはず
lambdalisue 13日 15:30:14 Slack
CUI なので「オリジンとは?」という感じですね
ひがし 13日 18:30:43 Slack
プラグイン名をファイル名に付け加えるとなるとどのような形で付け加えるのが良いでしょうか?
lambdalisue 13日 18:32:53 Slack
pluginame_filename_md5.vim とか?(適当です
  • naruhodo1
ひがし 13日 19:31:38 Slack
ローカル変数が全ファイルでかぶっちゃう問題の一段噛ませる方法が思い浮かばない…
自分だったら Deno.makeTempDirSync() で適当にディレクトリ掘ってそこの中に一意な名前を付けて放り込むけど、あんまりいい方法とも思えないし
Vimでtempdir掘る手段が無いのがつらい
tempname() の結果をディレクトリとして使うのってポータブルなんですかね
そもそも毎回インポートするのを想定するとこの方法はだめか
.cache したに denops-std って掘ってもいいかもしれませんね。
autoload とか、再 source 時の挙動なんかをどうするかがちょっと難しそうかなと思ったけど、あまりこの辺 Vim script の知識がないのでわからない。。。
lambdalisue 13日 20:08:38 Slack
> ローカル変数が全ファイルでかぶっちゃう問題の一段噛ませる方法が思い浮かばない…
vim.execute('source scriptfile', { scriptfile: '/Users/foo/.cache/denops-std/my-super-plugin/name_asdfasdfasdfadsf.vim' })
lambdalisue 13日 20:08:41 Slack
みたいな?
.cache を取るライブラリは存在するっぽいな https://deno.land/x/xdg@v9.4.0
lambdalisue 13日 20:18:43 Slack
.cache をとるにはちょっとオーバーキル感あるw
  • wakaru1
ひがし 13日 20:48:30 Slack
あれ...僕の一段噛ませるの認識が間違ってる説がでてきた...
ファイルをダウンロードする

特定の場所にルールに沿った名前で保存する(ローカルにあるものの場合は名前変えてコピー)

そこのファイルの中身を読んでexecute

であってますか?
三段目は読んでexecuteじゃなくてパス指定してsourceでよさそう
後は大体そうですね
ローカルのコピーは必要なんだろうか
source の場合はローカル変数の問題もスクリプトローカルに閉じるから問題ないとして、autoload とか、再読み込みとかはわからない。
あとは大体sourceね
  • dajare2
ダジャレを押すスピードにすら勝ち負けを感じ始めている
  • warau4
Tsuyoshi CHO 13日 20:50:45 Slack
ダジャレ駆動開発
リアクションするのではなく、アクションを起こしてみては
  • warau4
ひがし 13日 20:51:23 Slack
なるほど
sourceの仕様理解してなかった...
ひがし 13日 20:52:49 Slack
一旦sourceで実装してみてautoloadとか再読込に関しては実装完了次第実験してみます!
  • 👍1
autoload関数は階層をちゃんと掘っていればいけたような気がするけどどうだったっけな
スクリプトの名前が違うと弾かれる
ただ、一旦は考えないのがよさそう
そうなんですよね。Vim script ってなんか 「autoload なファイル」と「plugin なファイル」で全然違うものが書かれるというの結構面白い(迷惑)
  • wakaru1
ひがし 13日 20:58:21 Slack
奥が深いですね...
Tsuyoshi CHO 13日 20:58:37 Slack
そしてafterには同名のファイルがぞろぞろ...
ひがし 13日 20:59:09 Slack
;;
Tsuyoshi CHO 13日 20:59:56 Slack
まあ、「スクリプトファイル」だと思えば、管理はあってなきがごとしよりよっぽど整理はされてるけどw
lambdalisue 13日 22:37:09 Slack
Vim script はどのみち毎回パースされるので再読み込み(笑)と思っても大丈夫そう?
lambdalisue 13日 22:37:10 Slack
autoloadはスクリプト読み込みなので、そもそも無意味という切り捨てで良さそうな気がします
ひがし 13日 22:49:36 Slack
sourceさせる方針に切り替えて実装してみました
差分がわかりやすいようにPR出したほうがいいですかね?
  • 👍1
lambdalisue 14日 01:25:25 Slack
はい、PRになってれば遅くとも土日に見れると思います〜
ひがし 14日 06:13:10 Slack
了解です!
lambdalisue 14日 19:54:38 Slack
Deno 1.9 adds a new native HTTP/2 web server, a vastly improved op infrastructure, import completions in the LSP, an interactive permission prompt, blob url support.
lambdalisue 14日 19:55:48 Slack
もっとはやくなってつよい
lambdalisue 14日 19:56:17 Slack
LSPでDenoのレジストリサジェストとかしてくれるらしい、やばい
lambdalisue 14日 19:56:58 Slack
ちょwwwwムッチャ使ってるんですけど
lambdalisue 14日 19:57:15 Slack
ま、週末ちゃんとみよう
Tsuyoshi CHO 14日 19:59:01 Slack
おっと、変るかもなのか...まあまだ初期だからキャッチアップはしやすいかな?
なるほど。Deno 名前空間になるべく依存しないプロダクトを増やせるから消すということなのか。(それはちょっと思っていた)
bufio を使おうみたいな話なのかな。
どうしても依存ゼロを目指しちゃうんだよな。。。
Deno.stdin の型とか何になるのだろう
lambdalisue 14日 22:53:17 Slack
@ひがし PR ですが、コミットに試行錯誤が含まれているので rebase などを利用して最終系のコミット(論理単位で分離され、ゴールまで真っ直ぐに進んだ履歴)に修正お願いします。
lambdalisue 14日 22:54:06 Slack
あと変数名の付け方は lowerCamelCase でお願いします
lambdalisue 14日 22:57:30 Slack
(なぜか CI が走ってない...)
ひがし 14日 23:06:57 Slack
了解しました!
ひがし 14日 23:11:04 Slack
@lambdalisue フォーマットはdeno fmtで大丈夫ですか?(commitするときにしわすれてました...)
lambdalisue 14日 23:34:08 Slack
オネシャス
  • 🙏1
ひがし 14日 23:47:08 Slack
@lambdalisue gitのcommitと変数名の方修正しました
お手すきの際にレビューお願いします
  • 👍1
1 件の返信 最終返信:15日 00:06:58
#←
チャンネルにも投稿済
ひがし 15日 00:06:58
すみません,ローカルで動いて油断してました...
一つimport忘れがありました...
ひがし 15日 00:06:58 Slack
すみません,ローカルで動いて油断してました...
一つimport忘れがありました...
このスレッドに返信しました : <@U776661HA> gitのcom ...
CI回すと便利そう
ひがし 15日 00:44:04 Slack
修正done...
ご迷惑をおかけしました...
ひがし 15日 00:44:53 Slack
yaml読んだらGitHub Actionsがpushで回るようにはなってたんですけどforkだと動かないってありましたっけ?
一回は手で有効化しないといけなかったはず
それで回らなければちょっとわからんな
ひがし 15日 00:47:09 Slack
勝手に動くものとばかり思ってました…
後でやっておきます
lambdalisue 15日 03:45:24 Slack
僕も勝手に動くものだとばかり思ってた。なんか仕様変わったんですかね
あ、話半分で書いてしまってる気がする。PR送った後に走る分なら適切に設定してたら勝手に走る
手で有効化しないといけないのはfork先でpushした時の奴ですね
Gamou Tatsumi 15日 10:31:52 Slack
deno1.9.0でtscのバージョンが上がったらしく、servestがひっそり死んでいるなどしてましたね
どちらにせよdenopsでservest動かないのでどうにかしないといけない
  • totemoturai1
Tsuyoshi CHO 15日 10:35:57 Slack
本格的に使うとしたら、バージョン連動かラッパーか、なにかフォローがないとメンテナンスがリアルタイムになってつらいなw
Gamou Tatsumi 15日 11:35:37 Slack
--no-check 付けたservestが動かない問題、確証はないけど直せたっぽいのでdenopsで楽にWebSocket使えるようになりそう
今出してるPRで本当に直ってたらの話ですけど
  • subara3
lambdalisue 16日 03:39:23 Slack
834074b fix: Use Buffer from deno.land/std/io/buffer.ts instead (#161)
lambdalisue 16日 04:02:09 Slack
どうも pull_requeston に追加しないと CI 動かないっぽいので追加しました
@lambdalisue
#neovim-plugins からのやつなんですけど、dps-telescopeみたいなのやっていくとして現状denopsからlua叩くのって書くの多分面倒ですよね?
どっちかっていうと最終的にはluaからdps叩くのかな・・・
そこのbridgeになるユーティリティほしい感じがする
Tsuyoshi CHO 16日 10:49:28 Slack
2言語以上にまたがるの、かなり地獄の様相になりそう....
まぁ今でもVim scriptとDeno繋いでるのがLuaもサポートするだけって話だとは思ってるんだけど、大変ですかねー
理想はdenopsでtelescopeくらいのFFのUIを再実装だと思ってるんですけど、コストが・・・
denops側でUIを作ってtelescopeのリソースをそのまま再利用できるようにするみたいなのもありだと思う
Tsuyoshi CHO 16日 10:51:53 Slack
ts->vim->luaな呼び出しが発生するから、っていうことだから、面倒だろうなーと
この前hrsh7thさんともちょっと話してたんですけど、Floating Windowを全てに使うのが優れてるわけじゃないよなってのは思ってきていて
fzf-previewについてはfzfへロックインしてるせいでUIを変えるのが難しいんですよね
既存のリソースを再利用できつつ、そこに拡張性を持たせたものを作りたいとは思ってます
Tsuyoshi CHO 16日 10:55:52 Slack
あー、なるほど
リソースについてはtelescopeから引っ張ってくるのはあとまわしで、同じTSだしfzf-previewで提供してるものをひとまず移植するでもある程度足りるかもしれないですね
FF部分を改善したものをdenopsで作りたいみたいな気持ちはあります
dps-fzfとdps-sugoi-ffみたいなのどっちやっていくのがいいんだろ
ありすえさんが以前Vim scriptネイティブですごいFFやりたいみたいなこと言ってた気がするから、(今ならdenopsでやるだろうし)そのUIに期待して自分はリソースの汎用化と移植を頑張るみたいなのもありかも?
neovimのbuiltin-lspをdenite.nvimで使えるようにしようとしたことがありますが、
python -> vimscript -> lua が面倒&無駄に見えたのですぐに諦めました・・・
2 件の返信 最終返信:13:52:39
matsui54 16日 13:24:05
pythonからのlua呼び出しなら、これでできると思います。
https://pynvim.readthedocs.io/en/latest/usage/python-plugin-api.html#lua-integration
deniteのnvim-lsp sourceもつくってみました。よければどうぞ~
https://github.com/matsui54/denite-nvim-lsp
denite source for Neovim builtin LSP client. Contribute to matsui54/denite-nvim-lsp development by creating an account on GitHub.
ありがとうございます!
pynvimにそんな機能があったんですね。
pluginも試させて頂きます!
今後できるならdenopsで大きいもの出していきたいだろうし、何人か識者集まってFFについて議論する会やりたい
> python -> vimscript -> lua が面倒&無駄に見えた
なるほど、やっぱり面倒そうですかね・・・
vimscript挟む意味がほとんどないと思うんですが、実装上は挟まないとluaを呼べないので、
luaを呼ぶだめだけのvimscriptの関数を作る感じなので、無駄は多いと思いました。
少なくとも、素直にtelescope使った方がいいかな、とはなりましたね・・
うーん、どうするのがいいんだろうなぁ
telescopeもfloating windowが前提になってるのが微妙な部分があるのかもなー、みたいなのは少し思ってきていて
どうせやるならそのまま使うよりdenopsでbetterなものを設計していくのもありかもなーってのは思っています
個人的にはやっぱり、dps-sugoi-ffを期待してしまいますね
何人か識者集めてFFについてもう一度話してみたい
ありすえさん・暗黒美夢王・hrsh7thさん・yutkatさんあたり?
人によって思想が違うから多すぎたら発散しそうだ
発散しそうだが…
こっちに移動してたのか。私は特にないですね。ありモノで一番あってるの使うだけ
個人的にはFFを作りたいけど実際にはまだ作ってなさそうなありすえさんとhrsh7thさんに話聞いてみたい
識者、自作経験がある人?
自作経験だけじゃなくていいと思ってて、なんか思想を持ってそうな人というか
hrsh7thさんはこの前話したときにFloatWinのメリデメとか、どういう場合にどういうのがよさそうかみたいなのをちょっと話せたんですよね
denopsでもしやっていくってなったらどんな感じがよさそうかもうちょっと話してみたい
(正直レッドオーシャン感しかない)
レッドオーシャンなのは間違いないですね・・・
Denite, fzf, telescopeだけですごいですし
(だからあんまり入り込んでも時間の無駄な感が・・・。趣味としてのFFなら全然否定はしないですけど)
多分コスパでいうと悪いですね、ただfzf-previewを作った上でもっといいものが作れそうなイメージはあるんでちょっと詰めてみたいなー、って気持ちはあります
(自分が気になっててゴリラさんがTwitterで言ってるのを見かけたとかもあるんですけど、確定時にFloating Windowを閉じちゃって再利用がし辛いみたいな問題とかあると思ってるんですよね)
deniteでいいんでない(と)?
  • dajare2
あ、DeniteのUIは1つの解決策だと思ってます
大まかには多分そういう方向になるとは思ってるんですが
まあダジャレじゃなくてまじでそれは思ってますねw
Tsuyoshi CHO 16日 11:20:53 Slack
(CtrlP/LeaderF勢はすくないんだろうな)
そういえばLeaderFってプレビューみたいなのってどうなってるんでしたっけ?
例えばfzf-previewっぽいFloating Windowから必要な場合にDeniteっぽいUIにトグルするのとかどうなんだろうとか
Tsuyoshi CHO 16日 11:23:39 Slack
いろいろ設定はあるみたい
lambdalisue 16日 13:36:01 Slack
DenopsからLuaは全く考えてなかったし、かなりオーバーヘッドあるから推奨しないですね。Vimじゃ動かなくなるし
了解です、ありがとうございます
lambdalisue 16日 13:41:56 Slack
denopsでff、ui以外の部分の仕様を決めればみんなで使えたりしないかな
lambdalisue 16日 13:45:52 Slack
この辺はShougoさんなら肌感としてあると思うんですが

1. 非同期なソース構築
2. 非同期なフィルタ処理
3. 擬似非同期な描画処理(定期polling)

って感じになると思います。で1と2は突き詰めればどんなFFでも共通化出来そうで、共通化できるなら仕様を文章化してdenoのモジュールとして作れば、ワンチャンターミナルで動くFFや別のエディタプラグインとかでも使えるかも?とか
  • 👀1
FFP
UIはUIでなんか欲しい気持ちあるんですよね、まぁこれは自分で作らないとなのかな
任意の何かを流し込める汎用previewerとか
lambdalisue 16日 13:50:44 Slack
むしろこだわりが出てくるのはuiではw
それは間違いなくて、それと別で気になってるのはその辺に意見を持ってる人の話を聞いてから整理し直したいってのがあります
Shougoさんどっから手をつけてるんだろう・・?deniteからならコンフリクトしないかな
ddcっていうcompletionから入ってそうな気がした
  • naruhodo1
lambdalisue 16日 13:55:46 Slack
となるとアーキテクチャ図とか作って整理したものに対して意見もらうとかが良さそう
今は補完から作る予定で、知見ができてからfuzzy finderかなと
標準的な仕様があるなら対応することにもやぶさかではない
  • 👍1
ひがし 17日 16:45:19 Slack
ファイルに記号が入っていたときの処理難しい...
shellescapeとかencodeURI使っても ?とか半角スペースをうまく処理してくれない...
lambdalisue 17日 21:40:56 Slack
fnamescapeかもです
ひがし 17日 21:45:15 Slack
fnameescape使ってみます
ひがし 18日 15:17:26 Slack
半角スペースってエンコードすると \%20になるのか...
lambdalisue 18日 15:20:41 Slack
多分それはエンコードしてはダメなのでは(ファイル名場合はですが
lambdalisue 18日 15:20:55 Slack
URLの話であれば良いですが
ひがし 18日 15:31:08 Slack
なるほど...
lambdalisue 18日 15:34:21 Slack
PRの指摘は、どちらかというとVimスクリプトの話でsourceに対しては、パスの区切りを各OSに合わせた上で、渡す時に(たぶん)fnameescapeを噛ませてあげれば良さそうです
ひがし 18日 15:43:19 Slack
勘違いしてました...
その方針でやってみます
  • 👍1
lambdalisue 19日 01:35:36 Slack
依存関係の簡略化のために denops-deno 相当のコードを denops.vim に移動して denops_core というモジュールで配信するようにしました。
これに伴い denops-std-deno (denops-std モジュール) は denops_core に依存するようになりました。
多分いないとは思いますが denops-deno (denops モジュール) に直接依存している場合は denops_core への切り替えをお願いします。
  • 👍5
そのためのstdか、よき
  • 👍1
lambdalisue 19日 04:36:21 Slack
https://github.com/Srinivasa314/msgpack-deno/pull/5

とりあえず msgpack-deno にメンテ用 PR した
Hi. I&#39;m using this library to built msgpack-rpc-deno (to built denops.vim which is an ecosystem of Vim/Neovim) and I&#39;d love to improve the maintenanceability of this project as well. So, wi...
lambdalisue 19日 05:26:04 Slack
予告:
いま利用している start((vim) => {}) はそのうち廃止されて main(({vim}) => {}) になります。
ちなみに、この変更は後方互換性を担保しながら与えるコンテキストを増やしやすくするためです。

https://github.com/vim-denops/denops-std-deno/pull/13
  • 👍1
Now start() become deprecated and new main() is added. Plugin developers should use main() like: import { main } from &quot;https://deno.land/x/denops_std/mod.ts&quot;; main(async ({ vim }) => ...
お、アップデートしたほうがよいかな
Gamou Tatsumi 19日 11:09:21 Slack
denopsのGhostText実装、とりあえず動くようにはなったものの、複数セッション張ったりするとどうなるのか試せてない……
https://github.com/gamoutatsumi/dps-ghosttext.vim/
  • otxu5
WIP: GhostText plugin for denops.vim. Contribute to gamoutatsumi/dps-ghosttext.vim development by creating an account on GitHub.
Gamou Tatsumi 19日 11:14:44 Slack
あとランダムポートの開放にフォールバックとかの類まったく実装してないので多分いきなり死ぬ
kkiyama117 19日 11:46:02 Slack
複数、って聞いて思い出したんですが、そういえばdenopsって複数のvimが同時に起動した時に二つ目以降で動くようにできるんでしたっけ?
あれ、今動いてると思ったけど動いてない・・・?
TCP経由してるわけでもないしそこは問題ないと思う
  • tashikani1
今2つ目以降のvimからSlackのAPIコール飛んでると思う
  • 👍1
kkiyama117 19日 12:02:18 Slack
手元でdebug用にinspectの設定入れてるの忘れてました......
let g:denops#server#service#deno_args に "--inspect" を入れてportを指定していないので二つ目以降が落ちてる感じでした、すいません
  • naruhodo1
Gamou Tatsumi 19日 13:01:44 Slack
denops向けのhelp generator的なのあれば便利だなあと思った
  • yosasou5
lambdalisue 19日 14:01:37 Slack
予告通りの変更を加えました。また Zenn の記事も新しい方式にアップデートしました。
  • 🎉5
  • 👍4
lambdalisue 19日 14:02:11 Slack
denops-helloworld のコードも最新版にしてあります
オッ
アップデートしよう
確かにmainの方がわかりやすい
  • 👍1
lambdalisue 19日 14:07:23 Slack
上記によってプラグイン間相互通信も原理的に可能になりました。ただ、使い方はあとでまた考え直すかも... いまはかなり生な方法ですが denops インスタンスを使えば以下のようにできます。

main(({ vim, denops }) => {
const result = await denops.dispatch('plugin名', 'メソッド', ['引数リスト']);
});

ただ、上記だと対象プラグインがロード済みじゃないといけないなどの制約があるので、ラップするか全体のイベントエミッター作るかで対応するかなと思ってます。
今すぐ使う場合は autocmd とかつかって対象がロードされたことを保証するなどが必要です。
lambdalisue 19日 14:09:27 Slack
さて、出社するか...
twitter
Λlisue@花粉症 @lambdalisue
denops関連で色々やってたら朝になってた...
Twitter
ヒェッ
プラグインの設計を考えないといけないが、さて
あれ、今denopsのモジュールはかってによみこまれるんだっけ
明示的な読み込み処理を書かなくてもロードされている
mod.tsが勝手に読まれると思ってました
遅延できないのはちょっと困ったな
ddcを使う側を遅延したいとかですか?
任意のタイミングで読み込みできるようにしたいんだよね
どういうインターフェイスならできるんだろうそれ
denopsから制御するイメージです?
denops#plugin#registerを手動で呼べればよいかな
lambdalisue 19日 14:20:30 Slack
呼べます
確かにいけた
これを使おう
lambdalisue 19日 14:26:44 Slack
ただ、カスタムソースであれば Deno のダイナミックインポートとかにした方が筋が良さそうかなと思います
lambdalisue 19日 14:27:35 Slack
カスタムソースが Vim script に依存しない設計にして、ユーザーは let g:ddc#custom_sources = ['https://deno.land/x/ddc-buffer@v0.1/mod.ts'] みたいにモジュールを文字列指定
6 件の返信 最終返信:16:23:03
これだと欠点があって、既存のプラグインがsourceを提供するのに使えない
lambdalisue 19日 16:02:20
GitHub かローカルファイルを直接読めばいいのでできますよ
lambdalisue 19日 16:03:04
source 提供したいなら動的に g:ddc#custom_sources に自分自身を追加すればいい。それが GitHub の URL でも file:///.... でも多分大丈夫
そうなのか
lambdalisue 19日 16:20:10
試してはいないですが多分行ける
一度やってみないといけないかな
lambdalisue 19日 14:27:56 Slack
すると ddc がダイナミックインポートでモジュールを読み込む、みたいな?
lambdalisue 19日 14:28:22 Slack
多分できる、で話してるので確証はないですが、こっちの方がいろいろ融通が効きそうかなと思いました
これはddc本体の話なので
lambdalisue 19日 14:29:25 Slack
dein の遅延読み込みに関してであれば denops#plugin#register()denops#plugin#discover() の明示呼び出しになりますが
はい
lambdalisue 19日 14:29:41 Slack
あ、本体側の話でしたか 🙇‍♂️
source側はまだノープラン
  • 👍1
まずはsource一つで考えるかな
  • yosasou1
https://vim-jp.slack.com/archives/C01N4L5362D/p1618810055454000
これfzf-previewの移植的なので(するとしたら)そのまま使えそうな気がしてきた、どうだろうなー
カスタムソースが Vim script に依存しない設計にして、ユーザーは let g:ddc#custom_sources = ['https://deno.land/x/ddc-buffer@v0.1/mod.ts'] みたいにモジュールを文字列指定
lambdalisue 19日 15:25:07 Slack
上記だと deno.land 使ってますが、別に GitHub の raw page そのままでも行けるので超便利なはず
動的インポートのやり方はどこかに書いてありますか
できればモジュールの形で汎用的にかけるようにしたい
lambdalisue 20日 01:30:01 Slack
Deno のドキュメントにありません?
lambdalisue 20日 01:30:32 Slack
Denops の機能ではなく JavaScript の普通の機能なのでたぶんどっかにある
import関数?
  • 👍2
1 件の返信 最終返信:05:59:37
なるほど、それでよいのですね
const foo = await import("foo.ts")
lambdalisue 20日 03:35:12 Slack
https://github.com/vim-denops/denops-spec

アーキとかちょっとずつ書き始めました
  • subara1
Denops specifications. Contribute to vim-denops/denops-spec development by creating an account on GitHub.
lambdalisue 20日 12:46:02 Slack
https://vim-jp.slack.com/archives/CGZTGR6E6/p161889001131260

mod.ts の自動読み込みをやめて app.ts とか別の名前にしようかなと思ってます
おっ
変えるなら今のうちでしょうね
  • sorena1
選択範囲をdeeplに渡してブラウザで開くプラグイン作ろうかな
denopsで最短でvimの選択範囲の文字列取る書き方ってどうだろう
const content = await vim.call("getreg", "v:register", 1, "v:true");
で何も取得できないんですが、これってなんか書き方おかしいですかね・・・?
v:register という文字列が引数になっていますね。
実際は v:register 変数に格納されている文字列 を渡したいんですよね?
v:true も同様で、true を渡すべきです。
その辺怪しいと思ってたんですが、なるほど
v:registerはどうしたらいいのかちょっと見てみよう
vim.var とか vim.get('v', 'register') とか vim.v.register とかそういう API が提供されていた記憶
vim.v.get("register") これっぽい気がしたけど辞書が返ってきてなんか死ぬみたい
Tsuyoshi CHO 20日 14:47:18 Slack
それはたぶん変数registerを探すんじゃないかな
なるほど、vってそっちか
/**
* Vim variable groups
*
* g - Global variables
* b - Buffer local variables
* w - Window local variables
* t - Tab page local variables
* v - Vim's variables
*
*/
vな気がする・・・?
Tsuyoshi CHO 20日 14:51:31 Slack
辞書でかえってくるかわからないけど "v" でやれそうね
Error: Failed to call 'openDeepL' with []: Error: Failed to call 'call' with ["getreg",{},1,true]: Error: Failed to call 'nvim_call_function' with ["getreg",[{},1,true]]: [0,"Vim:E731: 辞書型を文字列として扱っています"]
うーん
await vim.cmd("silent normal! gvy");
const content = await vim.call("getreg", '"', 1, true);

これでよかった
_v:register がどういう性質のものなのかあんまりわかっていなかったりする。_
Tsuyoshi CHO 20日 14:56:20 Slack
vim.v.get("v:register") だと?
lambdalisue 20日 15:01:46 Slack
ん、バグ?
lambdalisue 20日 15:01:57 Slack
vim.v.get("register") なんで辞書返すんだろう
まぁ解決はしたんですが、ちょっとよく分からない感じしますね
lambdalisue 20日 15:03:39 Slack
あ、もしかして awaiti
lambdalisue 20日 15:03:50 Slack
const value = await vim.v.get("register");
lambdalisue 20日 15:03:54 Slack
してます?
lambdalisue 20日 15:05:15 Slack
うん、正しく返す
lambdalisue 20日 15:05:34 Slack
書いたコードどうだっけ・・・
あー、awaitなかったかも?
lambdalisue 20日 15:09:36 Slack
そのうち mod.ts の読み込みは Deprecated にして app.ts に切り替えます
  • 👍2
lambdalisue 20日 15:11:22 Slack
Using mod.ts is a bit confusing while denops plugin is not a module so change it to app.ts. With this change, plugin developers might publish them plugin as a deno module with mod.ts.
  • subara6
  • sokudo1
Contribute to yuki-yano/dps-deepl-browser development by creating an account on GitHub.
26行、便利
lambdalisue 20日 15:27:16 Slack
思ってた以上に簡単だw
lambdalisue 20日 15:27:45 Slack
やっぱ無制限に Deno のライブラリ使えるの超便利ですね...
  • wakaru2
Deno側のよさげなライブラリをいち早く検知して、ちょちょいとdps化することで良質なVimプラグインが作れる世界観
  • goodpoem2
これ真面目にVim scriptで書いたらどれくらいかかるんだろう
vitalありだと短いのかな
lambdalisue 20日 15:31:23 Slack
Vital 使えば open 相当があるので瞬殺ですね
vitalあれば同じくらい?
lambdalisue 20日 15:31:38 Slack
使わない場合は、な、わかるだろ?
URIEncodeってどんなもんなんですかね、vitalにある?
これとかも瞬殺でいけそう(誰かやっていいよ)
https://github.com/justjavac/deno-change-case
Convert strings between camelCase, PascalCase, Title Case, snake_case and more - justjavac/deno-change-case
lambdalisue 20日 15:32:10 Slack
URIEncode もあったはず
lambdalisue 20日 15:32:29 Slack
お、ムッチャ実用的
lambdalisue 20日 15:32:33 Slack
良さそう
cycleしたいやつだ
lambdalisue 20日 15:32:57 Slack
こういうのサクッとできるのは Denops の強みっぽい
  • wakaru2
lambdalisue 20日 15:33:07 Slack
Cycle できそう
今がどれか検知するのは出力一致する奴探せば良いのかな
一致しなかったら最初から順に叩いて
未だにテキストオブジェクトを扱うコードを書いたことがない
最近何社か話聞いてみようと思ってオファーに対してカジュアル面談してたんですけど、Denoの認知度の低さ
  • totemoturai3
大体名前だけギリ認知はされてるくらい
lambdalisue 20日 15:38:02 Slack
(転職ならうちどう?w)
lambdalisue 20日 15:38:41 Slack
Deno 程度は認知しておいて欲しいw
  • wakaru2
転職はまだするつもりなくて、いくつかテックリード的なオファーが来てるんで話聞いとこうってのと副業考えてる感じですね
  • naruhodo2
Deno、TSのランタイムくらいは認知されてるのかなぁ
まだ流石にRustより全然書いてる人存在しなさそうだった
Denoはそこそこニュースになってるからそれくらいは知ってて欲しい感はある・・・
  • sorena3
Nimくらいだと知らなくてもいいかな
  • wakaru1
  • 😇4
Nim全然知らない・・・
認知度って言い方は悪かったかもしれない、なんとなくは知ってるけど書いてる人を見たことは全くないくらいの温度感が多かった
  • naruhodo3
それならいいですね。存在知らないだとそのうち話し通じなくなってつらくなる未来が見える
  • sorena1
  • totemoturai1
lambdalisue 20日 15:47:21 Slack
なるほど、それならわかる
lambdalisue 20日 15:48:09 Slack
知ってるけど書いたことない と 知らない の間には大きな溝が
  • sorena2
完全に脱線してるけど、フロントでオファー来てるところだとバックエンドGoだったりScalaだったりKotlinだったり、1社はRustだったりして案外色々あった
バックエンドのオファーが全てRailsだからそっちの偏りがひどい
バックエンドTSで書ける世界早く来て欲しい
lambdalisue 20日 15:50:33 Slack
Deno でかけると幸せになれそう
Denoはフレームワークまだ時間かかりそうですよね
ひとまずNodeでもいいからTSで書きたい
Nest.js、全く知らないけどRailsよりは大分ましなんじゃないかという予想が
denopsで小物作って遊ぶのも楽しいんだけど、fzf-preview-deno.zsh作らないといけないんだよな・・・
Tsuyoshi CHO 20日 16:13:38 Slack
fzfなのかdenoなのかzshなのかっていう感じな名前が大変さを物語るな...
完成したらfzf-preview.zshを爆破して置き換えます
fzf-preview-deno.zsh.vim
lambdalisue 20日 16:15:08 Slack
telescope-fzf-preview-deno.zsh.vim
真面目な話としてfzf-preview.vim用のCLIとして使えるようになる可能性は存在している
Gamou Tatsumi 20日 16:16:33 Slack
telescopeかと思ったらfzfかと思ったらdenoでzshでいや結局お前Vimのプラグインやったんかい!ってなるやつ
  • warau4
zsh-deno-fzfが日本語の語呂的に好き
特に拘っているわけじゃないしそういう感じの名前にしようかな
ଳ (kato) 20日 16:21:09 Slack
telescope-fzf-preview-deno.zsh (2021確定版).vim
node.jsをバックエンドに使ってたプロジェクトがあって
その人がやめたらメンテナンスができなくなって、結局Railsに置き換えたという話を聞いたことがあります
Tsuyoshi CHO 20日 17:15:42 Slack
今は言語選定というよりは、フレームワーク選定でしょうからねえ...
-> メンテできるかどうか
後々の保守を考えると新しい技術を使うのは難しい
個人的にはメンテできない系は新しいかどうかよりも、前の人がどんだけちゃんとコード書いてるかに起因してる気がする。
ライブラリーが枯れてないから
こまめにメンテしてバージョンアップについて行く必要があって、知識がないと無理です
まあ時期によりますね
lambdalisue 20日 21:38:40 Slack
予告通り mod.ts から app.ts にします(しばらくは mod.ts でも動作します)
https://github.com/vim-denops/denops.vim/pull/37
  • 👍7
  • 👍🏻1
Close #36 After this PR is merged, the following warning message will be shown [denops] The plugin helloworld still use mod.ts which has deprecated in favor of app.ts Plugin authors should r...
lambdalisue 20日 22:13:17 Slack
Done. denops-helloworld と Zenn どちらもアップデートしました
Gamou Tatsumi 20日 23:09:16 Slack
GhostText対応完了
枯れてないライブラリとかフレームワークに依存するのやっぱり大変だなぁという気持ち
ひがし 20日 23:13:49 Slack
Alisueさんにレビューで指摘して頂いたようにPromise.Allでファイルのfetchとディレクトリの存在確認&作成を行ったらめっちゃ早くなって感動してます(レビュー内容の反映がなかなか進まなくてごめんなさい)
  • goodpoem2
twitter
🍣 @yusuktan
技術レビューをさせていただいた Deno Web Development の献本をいただきました!
Denoに興味のある方はぜひチェックしてみてください〜〜 https://pbs.twimg.com/media/EzaesdiVoAAFfuU.jpg
Twitter
こんな本あるのか。
Kindleにあった
さすがに読むべきだろうか
買いました
ひがし 21日 13:18:32 Slack
Kindleにあるんですね
頑張って英語読もうかな...
Kindleは値引きされてたよ
洋書は紙で書うと高い
ひがし 21日 13:26:43 Slack
なるほど
Kindle版3000円切ってるので買ってみます!
Gamou Tatsumi 21日 13:35:02 Slack
denopsでLSP触ろうと思ったらVimのインターフェースそのままポートするのかLSPのインターフェース自体を実装するのかどっちがより「らしい」んだろう
Tsuyoshi CHO 21日 13:35:46 Slack
本格的にやるなら、lspのclient実装をdeno側にもって、vimへ効果を反映させる挙動になるんだろうけど、やること多そう
Gamou Tatsumi 21日 13:37:38 Slack
仮にやるとしたらポップアップとかcompletion周りのdenopsなポリフィルを用意するのが先決な感じはしてます
denopsからcoc触りにくそうなのがむずい
Gamou Tatsumi 21日 13:38:47 Slack
このあたりcoc参考に実装してライブラリ化したらよさそうな気はしている
  • yosasou2
(denoの人知ってる人だった)
Tsuyoshi CHO 21日 13:41:19 Slack
おー
Gamou Tatsumi 21日 14:43:51 Slack
denopsでLSPクライアントを実装したい
LSPの仕様から読む必要ありそうなのでモチベーションが維持できるか怪しい
Denoは好きだけどWeb Developmentにはあんま興味ないな
LSP の仕様はてんなしさんが和訳されてましたね
ただ今は coc という偉大な先人がいるので、どう差別化するかというのが気になります。(もうどこかで議論されてたらごめんなさい)
  • wakaru3
Gamou Tatsumi 21日 15:54:34 Slack
僕が作りたいなと思ってる動機はただ面白そうだからですね
  • 👍3
  • goodpoem2
Gamou Tatsumi 21日 15:55:00 Slack
そこに乗っかってくれる人がいるならよし、そうでなくても楽しかったからよしの精神で
zshの方が想定より大分早くできそうだからdenopsで多少大きめのやつ作る時間取れるといいな
面白そうというのは大事
coc extensionはビルド面倒そうだから仮にコンパチだとしても十分 :ari:だと思ってる
拡張性多少持たせたdps-fzfが需要あるのかどうか
個人的にはdenoでやるのはありですけど、やっぱりVSCode様の力を借りないとつらくなりそう
  • wakaru1
LSPはほぼ有力な開発者がどこに入ってるかで決まるし・・・
ちなみにどの陣営にもあんまり入ってなくフリーでのらりくらり自作LSPをしてる、Neovim標準自動補完プラグインの某作者とかを巻き込むと強くなれるかも?!
lambdalisue 21日 17:43:15 Slack
書きやすい足回りさえあれば反応する人はそれなりにいそう
source部分が共通になるのは構わないかなと個人的には思っている
が、nvim-compeのようにLSP仕様をsourceの仕様にするのは反対という立場かな
補完関連で絶妙に辛いのが、LSP にあって vim にないプロパティもあるし、vim にあって LSP にないプロパティもある。という点なんですよね。
ただ、後者のほうが少ないので、LSP に合わせておくのが無難かなという感じです。
Gamou Tatsumi 22日 10:09:27 Slack
denops、 vim.register で登録する関数がPromise限定になってるのはいいんですけど、これだとlintでWARN吐かれるんですよね
中にawaitが一つもない場合
それ思ってたんですけど、多分denops側が返り値を void | Promise<void> 許容したらよさそう
kkiyama117 22日 10:15:42 Slack
Promise限定なのって何か理由あるんでしたっけ?
限定な理由ってないんじゃないかと予想していて、多くの場合Promise<void>になるからじゃないかと思ってました
Tsuyoshi CHO 22日 10:20:08 Slack
非同期動作、オプショナル動作を含めて整理してある感じ?
基本が非同期なのでそんな感じになってるのはあると思う
lambdalisue 22日 11:47:05 Slack
今の所運用でカバーできるところは運用でカバーしてる感じですね
lambdalisue 22日 11:48:55 Slack
std側は非Promiseを認めるとかもなくはないか
lambdalisue 22日 11:49:46 Slack
ただ、そのおもてなし処理の為にコード足す段階ではなさそう
lambdalisue 22日 11:50:33 Slack
ちなみにlint黙らせるためにはPromise.resolve返してください
return new Promise().resolve() みたいな感じですよね多分
生のPromise使わなさすぎて引数とか色々完全に忘れた
lambdalisue 22日 11:51:21 Slack
newはいらない(のでPromiseの後に括弧いらない)
あ、そうなんでしたっけ
lambdalisue 22日 11:51:57 Slack
Promise.resolveはスタティックメソッドなので
return Promise.resolve() で終わりっぽい?
lambdalisue 22日 11:52:40 Slack
はい
lambdalisue 22日 11:54:04 Slack
ちなみにPromiseに限定しないとPromiseが返るか否かで呼び出し側の処理分けなきゃいけないですよね?それがPromise限定している理由です。

なのでstd側では、そういうおもてなし処理してもバチは当たらないと思うのですが、時期尚早かなと
voidだったらどっちでも変わらないかと思ったんですが、副作用ある場合は変わることもあるか
Gamou Tatsumi 22日 11:55:30 Slack
あーなるほど、async/await使わずに生Promise返せばよかったのか
とりあえずこれでやります
ありがとうございます
  • 👍1
lambdalisue 22日 11:55:33 Slack
voidでも変わりますよ
多分Promiseの中でどこか別所に副作用ある場合ですよね、まぁvoid関数だし副作用は起こすか・・・
lambdalisue 22日 11:56:48 Slack
あとdenopsはvoid期待ではなくunknown期待なのでvoid前提は成り立たないです
lambdalisue 22日 11:57:15 Slack
いえ、Promise待てなくなるので副作用とかではなくタイミング
あれ、 function main(runner: (context: RunnerContext) => Promise<void>) ってなってません?
lambdalisue 22日 11:57:49 Slack
あれ?registerの話では?
Gamou Tatsumi 22日 11:58:43 Slack
registerの話ですね
  vim.register({
async run(port: unknown): Promise<void> {
if (typeof port !== "number" && port !== undefined) {
throw new Error(`'port' must be a number`);
}
const server = new Server(vim, bufHandlerMaps, port);
server.run();
},

元々これで書いてたらlintで怒られたという話です
lambdalisue 22日 11:59:16 Slack
ですよね👍
main(async ({ vim }) => {
vim.register({
foo: async () => {},
});
});

で怒られる場合って話かと思ってました、違う?
lambdalisue 22日 11:59:52 Slack
ああ、なるほど
これだとmain側で怒られるのでこっちかなーと
lambdalisue 22日 12:00:31 Slack
そこなら、確かに待たなくてもいいですね
ですよね、噛み合ってなかった理由分かった
lambdalisue 22日 12:00:50 Slack
ただ、エラー処理は必要なので、やはりおもてなし処理は必要です
lambdalisue 22日 12:01:23 Slack
なので型だけの問題ではないかな?いまエラー処理してないかもですがw
> エラー処理してない
denops側の話で合ってます?
lambdalisue 22日 12:01:54 Slack
はい
なるほど、理解しました
lambdalisue 22日 12:03:09 Slack
そろそろ本体、特にstdのコントリビューション増えてもいいのよ @各位
lambdalisue 22日 12:03:48 Slack
本体は、ちょっと内部的なインターフェース変えたいと思っている
まだ小物しか作ってないのとDenoでもNodeでも作りたいものがまだ多くて辛い(昨日からzshプラグイン書き始めたし・・・)
lambdalisue 22日 12:04:14 Slack
作りたいものは無限
lambdalisue 22日 12:04:19 Slack
時間は有限
lambdalisue 22日 12:04:22 Slack
難しい
zshプラグイン書くにしてもDeno便利
Rustより起動のオーバーヘッドありそうだけど多分ギリ許容範囲
Gamou Tatsumi 22日 12:05:48 Slack
Deno、LLの処理系としてはトップクラスの取り回しの良さなのではと思い始めてる
  • sorena1
標準ライブラリ揃えばPythonとRuby越えるんじゃないかな・・・
LLなのに型推論がとにかく良い
早いしlinterとformatterも入ってるし
stdが分離されてるのはちょっと苦手だけど後は最高
拡張子付けない場合にjs判定されるのは早めにどうにかして欲しい
bin/deno-fooみたいなやつがjsじゃないと書けない
Gamou Tatsumi 22日 12:07:52 Slack
そこはオプション追加でどうにかならないかなという所ですね
Pythonなら本体ぶっ込んでおけば人権の無い環境である程度戦える(けど外部ライブラリつらい)
Gamou Tatsumi 22日 12:08:42 Slack
denoは人権の無い環境とか無理そうですよね
リモートからのインポートありきなので
Gamou Tatsumi 22日 12:09:20 Slack
シャドウITとしてどうかという話ならいいかもしれないですけど
bundleできないんでしたっけ
importしたやつを1ファイルにトランスパイル
JS文化だからなんかありそうなイメージだったけどないかな・・・
bundle Bundle module and dependencies into single file
あった
型を保ったままbundleする方法かキャッシュに外から差し込む方法欲しい
Gamou Tatsumi 22日 12:12:42 Slack
bundleこれちゃんと動いたか怪しいんですよね
Gamou Tatsumi 22日 12:13:07 Slack
そもそも動かし方がわかってないという説もある
怪しいのか・・・
まぁ今怪しくても用意される前提でよさそうではあるので
zshのやつもプロセス立ち上げまくるから、最終的にbundleしてIO減らした方が早くなる可能性高そう
Rustも勉強しつつ完璧に固くやるときはRustで、ある程度速度出しつつ軽量に書きたい時はDenoみたいにしていきたい
  • me-too1
lambdalisue 22日 12:20:53 Slack
僕はstd分離は最高of最高ですね。限界環境はDenoのサポート対象外だと思うので、そういう意味では本体の安定性とライブラリの安定性を分けて考えられる設計は好きです
lambdalisue 22日 12:21:53 Slack
ネット繋がらない限界環境、Vimプラグインとしてはサポートしたい環境ではありますがw
限界環境でDeno入ってるのヤバそう
Python2が限界のイメージが強い
std設計として最高なのに異論はないけどインターネット無い環境のことを考えてほしいというのはある
常時安定した回線や鯖なんてのは幻想
lambdalisue 22日 12:25:39 Slack
経験者は語る
  • ultrafastparrot1
lambdalisue 22日 12:26:28 Slack
まあ、そのためのcompileとかbundleとかな気がするので製作物自体はオフラインでも動くのでは?
lambdalisue 22日 12:26:39 Slack
製作自体はオンでやらんといかんですが
bundleしてねという思想か
lambdalisue 22日 12:27:18 Slack
オフライン開発って昨今は事実上無理としても仕方ないかとw
  • tashikani2
  • wakaru1
lambdalisue 22日 12:28:01 Slack
なのでPythonの置き換えは出来ないんですよね
lambdalisue 22日 12:28:15 Slack
Linux標準で入る事はなさそう
ブラウザベースでネットワーク処理やブラウザ処理に特化してる
処理系でオフラインというのはそもそも無理がある
思想的に相反する
オフライン環境でブラウザ使いますかみたいな感じ
lambdalisue 22日 12:30:06 Slack
オフラインでも意味のある動作は可能なので、思想的に相反するレベルでは無いかなと思います
lambdalisue 22日 12:30:39 Slack
あくまでも開発時にオン前提という感じかなぁ
だいぶ使いづらいと思う
lambdalisue 22日 12:31:21 Slack
いえ、完成品であれば
lambdalisue 22日 12:31:39 Slack
LLとしてオフで使うという意味ではなく
lambdalisue 22日 12:34:56 Slack
完全に勝手な解釈ですが

「Pythonの置き換えをしてLinux標準に入ろう!」

ではなく

「Nodeの置き換えをして依存管理から解放されよう!」

なので、そもそもネットワーク無い環境でLL的に使う想定ではなさそう
lambdalisue 22日 12:36:07 Slack
ネットワーク無い環境で動くスクリプト、という意味ではNodeとかと同じでバンドルすればええやん、なので思想違反ではなさそう
lambdalisue 22日 12:36:42 Slack
あくまでもネットワーク無い環境で開発ってのが想定されて無い感じがしてます


ここまでぜーーーーんぶ勝手な解釈ですw
Gamou Tatsumi 22日 14:55:38 Slack
WebSocketを使う時にポートが使われてた場合のフォールバックを考えてた
雑に try-catch で再帰関数回す方法を思いついたけど try-catch を再帰で回すのどうなんだ……?
Gamou Tatsumi 22日 14:56:45 Slack
ランダムなポート(フォールバック付き)でサーバを立てられるようなライブラリが現状denoにないのちょっとつらい
lambdalisue 22日 14:56:52 Slack
仕組みがわからないですが TCP の Listen 時点で 0 指定すると立てれますよ
lambdalisue 22日 14:57:23 Slack
🐜 An ecosystem of Vim/Neovim which allows developers to write plugins in Deno - vim-denops/denops.vim
lambdalisue 22日 14:57:49 Slack
WebSocket が listener を取らないとかだとアレですが
Gamou Tatsumi 22日 15:01:44 Slack
簡単そうなのでServest使ってたんですけど、listner取る必要あるならstdの方がいいかもしれないですね
実際に立った後のポートも欲しいので
Gamou Tatsumi 22日 16:12:02 Slack
std/httpserve でどうしてもポート取れないなと思ってダメもとで @ts-ignore してport取れないか試したら取れたので型定義間違ってるのが確認できた
型定義の信用できないTypeScript
  • wakaru1
lambdalisue 22日 16:28:46 Slack
こんとりびゅーしょんちゃんす
  • contribute-chance2