DAPを使ってmrubyスクリプトをデバッグする話

masahino123.hatenablog.com の続き。 久しぶりにデバッガを動かしてみたら、意図した通りに動かず悩んだのだが、 既に過去に遭遇していた現象で、当然の挙動だった。 すっかり忘れてしまっていたのが情けなく、メモしておく。 前回の記事は、.rbファイルで…

NASの容量拡張の検討

「NASのボリュームがほぼ一杯です」という警告を受けている。 いつから出ているのか、覚えていない。確実に1年以上は経っているのではないだろうか。 「ディスクを追加するか、大きなものに交換するか」を迫られている。 他の選択肢としては「空き容量を増や…

LSPのcompletionのメモ その2

LSP

この前のLSPのcompletionに関するメモのつづき。 masahino123.hatenablog.com 別のサーバだと、そもそも挙動が異なるという話。 なにか正解があるのか、実装依存なのか、手元の環境の問題なのか、設定によるものなのか、 分らないけど。 typescript-language…

LSPのcompletionメモ

LSP

LSPを使ううえで、最も嬉しいことのひとつに、補完機能があるだろう。 LSPをサポートした各種IDEやテキストエディタのサンプル画面や動画では、補完機能を利用してサクサクと入力していく例が示されている。 ただ、実際のLSPサーバから送られる補完情報(Comp…

LSPのテキスト編集と同期についてもメモ

自作のLSP(Language Server Protocol)クライアントを作って遊んでいる。 github.com 補完とか整形とか幾らか動いていて、それなりに使えているのだが、 普段使っている言語以外のLSPサーバを動かすと、 途端に怪しい挙動に遭遇する。 今回はテキストの編集(t…

Scintilla 5.3.0

Scintillaのバージョンが5.3.0に上がっていた。 https://www.scintilla.org/index.html 主な変更はchange history機能の追加。 確かに、IDEには付いている機能だものね。 mrbmacs-termbox(https://github.com/masahino/mruby-bin-mrbmacs-termbox/)で使おう…

DAPを使ってmrubyで作ったバイナリをデバッグする話

DAP(Debug Adapter Protocol)のクライアントを作ったので、これを使って今度はmrubyのデバッグに挑戦する。 masahino123.hatenablog.com やりたいのはmrubyで作った実行ファイルのデバッグ。 スクリプト(.rb)やバイナリファイル(.mrb)ファイルのデバッグはmr…

DAP(Debug Adapter Protocol)を試す

DAP

DAP(Debug Adapter Protocol)を試す。 github.com Official page for Debug Adapter Protocolを見ながら、色々と試してみる。 LSPと同じようなものだと思われるので、とっつきは良かったのだが、 gdbとかlldbとか通常のデバッガのコマンドの対応が良くわから…

scintillaのtermbox実装

テキストエディタ作成用のライブラリScintillaのcurses向け実装であるScintermを使っている。 とても良くできていて、問題なく使えているが、色の指定については制約が強い。 16色しか使えないのは良いとして、色の設定が面倒だった。 masahino123.hatenablo…

LSP(Language Server Protocol)のsignatureHelpと閉括弧の自動補完

LSP(Language Server Protocol)にsignatureHelpというのがありまして、メソッドの引数情報なんかを表示するのなんかに使えそうなもの。 rubyのLSPサーバであるsolargraph(バージョン0.39.8)を使ってみたら、 例えば、 puts( と"("が入力された段階で、サーバ…

自作テキストエディタをwindows環境でなんとかしようと挑戦する話

テキストエディタ用のフレームワークであるScintilla(https://www.scintilla.org/)と mruby( https://github.com/mruby/mruby)を使ってEmacs風テキストエディタを作るという取り組みを、 この数年、ちまちまとやっている。 普段使っているMacOS上では、それ…

MinecraftのAdd-onを試してみる

連休中は、子ども達と一緒にMinecraftで遊ぶ時間が長かった。 子どもとは、switch版で複数のコントローラでTVの画面分割でやっている。 2分割より4分割のほうが見易いようだ。 そのため、私が遊ぶ時間が無いとき(在宅勤務中とか)も、 勝手に3人目のプレイヤ…

Scintilla cursesでの色指定

Scintillaのcurses向け実装の色についてのメモ。 何度も調べては忘れるを繰り返すので、いい加減書いておく。 www.scintilla.org Scintillaはテキストエディタ用のライブラリで、gtkやwindows向けのライブラリがある。 ncurses用は、以前は別に開発されてい…

LSPの実装について

やっぱりサーバによって挙動が異なるので、気づいた点をメモっておく。 initializeの応答 最初にclientからinitializeリクエストを送ると、サーバからレスポンスが返ってくるのだが、 応答に時間がかかるサーバと、すぐに返してくるサーバがある。 solargrap…

LSPの実験の続き(gopls編)

goplsでcompletionの例。 gist2a2049bbd0d0ad67e728b7a02f1b043b 行頭で、"f"とタイプしたと思っておくんなまし。 "label"はシンプルなパターン。"insertText"は無し。 "textEdit"を使うパターンかな。 "insertTextFormat"の1はPlain Textって、"insertText"…

Language Server Protocolでのcompletion responseの中身

Language Server Protocolのサーバ側の実装リスト Language Servers を見ると、同じ言語でも複数の実装が存在するものが多く、 どれを選べば良いか、悩ましい。選択肢が多いのは良い面も多いが・・・ エディタによっては(Emacsとかvimとか) Tools supporting…

Language Server Protocolのclientを書く

今どきのエディタはLanguage Server Protocol( Official page for Language Server Protocol ) を使えるものなようなので、そのクライアントを作ってみようと模索中。 まず、補完(completion)の機能を使えるようになることを目標にやってみる。 最短のステッ…

画像認識の実験

飼い犬の様子を見るために、Raspberry Piにwebcamを付けて見られるようにしている。 ついでに、画像認識で色々と識別できないか、試している。 Raspberry Piで完結できれば楽そうだけど、厳しいかな、と思いつつ探してみたら、 Using Tensorflow on a Raspbe…

scintermがscintilla本体に取り込まれていた

scintillaというテキストエディタのフレームワークがある。 そのscintillaのncurses実装に、scintermというのがあったのだが、 いつのまにか、本体に取り込まれていた。バージョン3.8.0かららしい。 scintillaの最新バージョンは、4.05だが、3.x系列は、long…

GR-SAKURAでGROVEのボタンと7セグメント4桁ディスプレイを使う

ボタンは単純にINPUTの状態を調べれば良い GitHub - Seeed-Studio/Sketchbook_Starter_Kit_for_Arduino のサンプルを参考に。 7セグメント4桁ディスプレイは、ライブラリを使う。 Arduinoで7セグメント4桁ディスプレイLED05291Pを試す - Qiita が参考になっ…

AtomPubで記事を投稿するテスト

テスト test

scinterm 1.9のビルドエラー

Scintilla 3.7.5に対応したscinterm 1.9がリリースされていたが、ビルドするとエラー発生。 コンパイラのバージョンなどを変えてみたり、コンパイルオプションを変えてみたりしたが改善せず。 以下の変更で、エラーは取れた。 後で、もうちょっと真面目に調…

nokogiriとかのインストールにてこずる

久々に、使いたいrubyのライブラリがあり、動かしたらnokogiriが無いと言われた。 gemでインストールしようとしたらエラー。 いろいろ試行錯誤した結果、 nokogiriが(また)インストールできない - \ay diary を見付けて、回避策(a)「一時的にbrew unlink xz…

Scintillaとmrubyでテキストエディタを作る(7) : GTK版の更新

Scintillaを使ったテキストエディタのその後。 masahino123.hatenablog.com mruby-gtk3を使うのを断念して、GTK関係の処理はC言語で書くようにした。 せっかくなので、curses版とは少し見た目を変えてみた。 テキストエディタを作っていると、いくらでも作り…

ScintillaのAutocompletionの調査

Scintillaの機能で、Autocompletionというものがある。自動補完である。 次のスクリーンショットのような感じで使う。 SCI_AUTOSHOWというコマンドを、入力した文字列数と候補の文字列を引数にして実行すると、 ぺろんと候補一覧が表示される。 候補が表示さ…

ScintillaのAnnotationを試す

ScintillaのAnnotationを試してみる。 公式ドキュメントの例では、コンパイルエラーやワーニングを表示している。 Scintermでは、メッセージに枠は付かないので、背景色を変えて 目立たせないと、編集ドキュメントと区別が付かなくなってしまう。

Scintillaとmrubyでテキストエディタを作る(6) : folding

Scintillaの豊富な機能のひとつにfoldingがある。”折り畳み”である。 プログラムを編集する際、クラスやメソッド単位で表示・非表示を切り替えるようなものである。 作成中のmrbmacsというエディタでの例だが、folding機能を有効にすると、以下のようにmodul…

Scintillaのsyntax highlightingの調査

Scintillaは多数のプログラミング言語に対応していて、syntax highlighting機能もある。 編集中のファイルを言語と対応付けるには、SCI_SETLEXERLANGUAGE(<unused>, const char *name) というコマンドが使える。 nameには言語名を入れれば良い。 syntax highlighting</unused>…

Scintillaとmrubyでテキストエディタを作る(5) : 単純な検索と置換機能

ScintillaとmrubyでEmacsライクなテキストエディタ(mrbmacs)を作成している。 Scintillaにはテキストエディタに必要な様々な機能が用意されているので、自作エディタになにかしらの機能を追加する手順は、 実装したい機能を考える Scintillaのドキュメントか…

Scintillaとmrubyでテキストエディタを作る(4) : GTK版

curses版 のエディタは、そこそこ動くところまで作れたので、他のUIのものも用意できないか検討してみた。 そもそも、ScintillaはWindows、Mac OS X、GTKに対応しているので、まずはその辺りから。 一番簡単そうな、GTKから着手。 curses版(mruby-bin-mrbmac…