masahino123.hatenablog.com の続き。 久しぶりにデバッガを動かしてみたら、意図した通りに動かず悩んだのだが、 既に過去に遭遇していた現象で、当然の挙動だった。 すっかり忘れてしまっていたのが情けなく、メモしておく。 前回の記事は、.rbファイルで…
「NASのボリュームがほぼ一杯です」という警告を受けている。 いつから出ているのか、覚えていない。確実に1年以上は経っているのではないだろうか。 「ディスクを追加するか、大きなものに交換するか」を迫られている。 他の選択肢としては「空き容量を増や…
この前のLSPのcompletionに関するメモのつづき。 masahino123.hatenablog.com 別のサーバだと、そもそも挙動が異なるという話。 なにか正解があるのか、実装依存なのか、手元の環境の問題なのか、設定によるものなのか、 分らないけど。 typescript-language…
LSPを使ううえで、最も嬉しいことのひとつに、補完機能があるだろう。 LSPをサポートした各種IDEやテキストエディタのサンプル画面や動画では、補完機能を利用してサクサクと入力していく例が示されている。 ただ、実際のLSPサーバから送られる補完情報(Comp…
自作のLSP(Language Server Protocol)クライアントを作って遊んでいる。 github.com 補完とか整形とか幾らか動いていて、それなりに使えているのだが、 普段使っている言語以外のLSPサーバを動かすと、 途端に怪しい挙動に遭遇する。 今回はテキストの編集(t…
Scintillaのバージョンが5.3.0に上がっていた。 https://www.scintilla.org/index.html 主な変更はchange history機能の追加。 確かに、IDEには付いている機能だものね。 mrbmacs-termbox(https://github.com/masahino/mruby-bin-mrbmacs-termbox/)で使おう…
DAP(Debug Adapter Protocol)のクライアントを作ったので、これを使って今度はmrubyのデバッグに挑戦する。 masahino123.hatenablog.com やりたいのはmrubyで作った実行ファイルのデバッグ。 スクリプト(.rb)やバイナリファイル(.mrb)ファイルのデバッグはmr…
DAP(Debug Adapter Protocol)を試す。 github.com Official page for Debug Adapter Protocolを見ながら、色々と試してみる。 LSPと同じようなものだと思われるので、とっつきは良かったのだが、 gdbとかlldbとか通常のデバッガのコマンドの対応が良くわから…
テキストエディタ作成用のライブラリScintillaのcurses向け実装であるScintermを使っている。 とても良くできていて、問題なく使えているが、色の指定については制約が強い。 16色しか使えないのは良いとして、色の設定が面倒だった。 masahino123.hatenablo…
LSP(Language Server Protocol)にsignatureHelpというのがありまして、メソッドの引数情報なんかを表示するのなんかに使えそうなもの。 rubyのLSPサーバであるsolargraph(バージョン0.39.8)を使ってみたら、 例えば、 puts( と"("が入力された段階で、サーバ…
テキストエディタ用のフレームワークであるScintilla(https://www.scintilla.org/)と mruby( https://github.com/mruby/mruby)を使ってEmacs風テキストエディタを作るという取り組みを、 この数年、ちまちまとやっている。 普段使っているMacOS上では、それ…
連休中は、子ども達と一緒にMinecraftで遊ぶ時間が長かった。 子どもとは、switch版で複数のコントローラでTVの画面分割でやっている。 2分割より4分割のほうが見易いようだ。 そのため、私が遊ぶ時間が無いとき(在宅勤務中とか)も、 勝手に3人目のプレイヤ…
Scintillaのcurses向け実装の色についてのメモ。 何度も調べては忘れるを繰り返すので、いい加減書いておく。 www.scintilla.org Scintillaはテキストエディタ用のライブラリで、gtkやwindows向けのライブラリがある。 ncurses用は、以前は別に開発されてい…
やっぱりサーバによって挙動が異なるので、気づいた点をメモっておく。 initializeの応答 最初にclientからinitializeリクエストを送ると、サーバからレスポンスが返ってくるのだが、 応答に時間がかかるサーバと、すぐに返してくるサーバがある。 solargrap…
goplsでcompletionの例。 gist2a2049bbd0d0ad67e728b7a02f1b043b 行頭で、"f"とタイプしたと思っておくんなまし。 "label"はシンプルなパターン。"insertText"は無し。 "textEdit"を使うパターンかな。 "insertTextFormat"の1はPlain Textって、"insertText"…
Language Server Protocolのサーバ側の実装リスト Language Servers を見ると、同じ言語でも複数の実装が存在するものが多く、 どれを選べば良いか、悩ましい。選択肢が多いのは良い面も多いが・・・ エディタによっては(Emacsとかvimとか) Tools supporting…
今どきのエディタはLanguage Server Protocol( Official page for Language Server Protocol ) を使えるものなようなので、そのクライアントを作ってみようと模索中。 まず、補完(completion)の機能を使えるようになることを目標にやってみる。 最短のステッ…
飼い犬の様子を見るために、Raspberry Piにwebcamを付けて見られるようにしている。 ついでに、画像認識で色々と識別できないか、試している。 Raspberry Piで完結できれば楽そうだけど、厳しいかな、と思いつつ探してみたら、 Using Tensorflow on a Raspbe…
scintillaというテキストエディタのフレームワークがある。 そのscintillaのncurses実装に、scintermというのがあったのだが、 いつのまにか、本体に取り込まれていた。バージョン3.8.0かららしい。 scintillaの最新バージョンは、4.05だが、3.x系列は、long…
ボタンは単純にINPUTの状態を調べれば良い GitHub - Seeed-Studio/Sketchbook_Starter_Kit_for_Arduino のサンプルを参考に。 7セグメント4桁ディスプレイは、ライブラリを使う。 Arduinoで7セグメント4桁ディスプレイLED05291Pを試す - Qiita が参考になっ…
テスト test
Scintilla 3.7.5に対応したscinterm 1.9がリリースされていたが、ビルドするとエラー発生。 コンパイラのバージョンなどを変えてみたり、コンパイルオプションを変えてみたりしたが改善せず。 以下の変更で、エラーは取れた。 後で、もうちょっと真面目に調…
久々に、使いたいrubyのライブラリがあり、動かしたらnokogiriが無いと言われた。 gemでインストールしようとしたらエラー。 いろいろ試行錯誤した結果、 nokogiriが(また)インストールできない - \ay diary を見付けて、回避策(a)「一時的にbrew unlink xz…
Scintillaを使ったテキストエディタのその後。 masahino123.hatenablog.com mruby-gtk3を使うのを断念して、GTK関係の処理はC言語で書くようにした。 せっかくなので、curses版とは少し見た目を変えてみた。 テキストエディタを作っていると、いくらでも作り…
Scintillaの機能で、Autocompletionというものがある。自動補完である。 次のスクリーンショットのような感じで使う。 SCI_AUTOSHOWというコマンドを、入力した文字列数と候補の文字列を引数にして実行すると、 ぺろんと候補一覧が表示される。 候補が表示さ…
ScintillaのAnnotationを試してみる。 公式ドキュメントの例では、コンパイルエラーやワーニングを表示している。 Scintermでは、メッセージに枠は付かないので、背景色を変えて 目立たせないと、編集ドキュメントと区別が付かなくなってしまう。
Scintillaの豊富な機能のひとつにfoldingがある。”折り畳み”である。 プログラムを編集する際、クラスやメソッド単位で表示・非表示を切り替えるようなものである。 作成中のmrbmacsというエディタでの例だが、folding機能を有効にすると、以下のようにmodul…
Scintillaは多数のプログラミング言語に対応していて、syntax highlighting機能もある。 編集中のファイルを言語と対応付けるには、SCI_SETLEXERLANGUAGE(<unused>, const char *name) というコマンドが使える。 nameには言語名を入れれば良い。 syntax highlighting</unused>…
ScintillaとmrubyでEmacsライクなテキストエディタ(mrbmacs)を作成している。 Scintillaにはテキストエディタに必要な様々な機能が用意されているので、自作エディタになにかしらの機能を追加する手順は、 実装したい機能を考える Scintillaのドキュメントか…
curses版 のエディタは、そこそこ動くところまで作れたので、他のUIのものも用意できないか検討してみた。 そもそも、ScintillaはWindows、Mac OS X、GTKに対応しているので、まずはその辺りから。 一番簡単そうな、GTKから着手。 curses版(mruby-bin-mrbmac…