markdown-modeに VSCodeっぽい画像貼り付け機能を実装した

github.com Emacs 29に yank-media という機能が追加されて clipboardにあるデータを各モードで自由にハンドリングできるようになった. VSCodeで markdownを書いているときに画像をペーストすると inline linkが挿入されますが、それと同じようなことができ…

Ubuntu 22.04の設定メモ

syohex.hatenablog.com PC買ったので設定に関するメモ. 最近デフォルト信仰なので昔ほど凝ったことはせず最低限使えるようにするメモ Gnome Extension Auto select headset 有線ヘッドフォンなどを使ったときいちいちどのデバイスを使うのか問われるのがうざ…

System76 Lemur Proを買った

syohex.hatenablog.com 使っていた PCを処分することに伴い新しい PCを買った. 大学生のときに先輩に勧められて以来 ThinkPadを使っていたけど, 最近の ThinkPadカスタマイズの幅が昔ほど広くないし, たまには違うのを買ってみるかということで Lemur Proを…

ThinkPad T490を処分した

4年ほど酷使していたのだけど, 最近ディスクエラーが増えまくって強制終了せざるを得ないことが増えてきたので新しいラップトップを買った. それにともない不要になった ThinkPad T490を処分することにしたのでその記録. ディスクの消去 scrapbox.io 自分で…

eglotで一部 LSPの機能を無効化する

たまに Emacsでコード書いているときに, eglotが自動フォーマットするのがうざいとので方法を調べた。基本はフォーマッタ使って整形しているのでエディタで意図せぬタイミングで整形をされるとイラッとするので、無効化しておいた。 (setq eglot-ignored-ser…

zshでポータブルな statコマンドを使う

zsh

ほとんどの人は知る必要はないと思いますが、zshの補完を書いていて環境に応じて statコマンドでファイル更新日時を取得する必要があったのですが, GNU系と BSD系でコマンド体系が違うくて何かいい方法がないかと調べたところ zshの stat moduleを使えばいい…

ウインドウサイズが小さすぎると VSCodeで F#コードを REPLに送るとエラーが出る

ただのメモです. VSCodeで F#を書いていて, FSI: Send File などのコードを REPLに送って評価する処理がこのエラーで全然機能しないことがあって原因も全然わかっていなかったんですけど, VScodeのウインドウサイズが小さすぎると出てしまうみたいで, ウイン…

html/templateで key=val を出力する際は template.HTMLAttr型を使う

すごい久しぶりに goコードを書いたらいろいろと忘れていたのでメモ templateに任意の属性を出力するようなコードを書きたかったが, package main import ( "html/template" "log" "os" ) var htmlTemplate = ` <p {{.Attr}}> ` type Data struct { Attr string } func ma</p>…

use-packageで :vcキーワードが使えるようになった

github.com 開発版だけど, use-packageで :vc キーワードがサポートされ標準のパッケージマネージャだけでも gitなどで管理されているパッケージも管理できるようになった. この機能がなかったため, やむおえず ここに書いたような設定を追加していたが:vc …

Ubuntu 23.04にアップデートしたら clangdが動かなくなった問題の対応

先日 Ubuntu 23.04にアップデートしたら clangdが動かなくなり, Emacsの eglotや VScodeの C++の補完等が一切効かなくなってしまった. その修正方法のメモ. 問題 clang, clang++が標準ヘッダファイルを見つけることができずファイルを解析できなくなってしま…

el-getから package.el + use-packageに移行した

Emacsをあまりヘビーに使っていないし、できれば標準のものだけで済ませたいと思ってパッケージマネージャを el-getから標準ツールに移行した。前から考えていたんだけど、MELPAなどに登録されていないパッケージをいくつか使っていてそれで el-get使ってい…

2023 パズル in F#

他の人の回答などを見ずに愚直に解いてみたが全部を算出しようとすると遅すぎた. type Opcode = | Add | Sub | Mul | Div type Operand = | Opcode of Opcode | Number of int let calculateRpnExpression (exp: Operand list) : Option<int> = let rec calculate</int>…

Ubuntu 22.10に handbrakeをflatpakで インストールする

大昔の DVD整理を今更やろうとして bandbrakeをインストールしようとしたが, apt版だと SEGVが出てしまい使えなかったので flatpakで最新版を入れる必要があった. flatpakを使ったことがなかったのでそのメモ flatpakのインストール sudo apt install flatpa…

clangdを使う際のメモ

最近ささっと C/C++書くとき, Emacsを使っているのだが, LSP serverとして clangdを使う際のメモ Emacsの設定 Emacs開発版を使っているので, eglotをそのまま使う(C/C++ではデフォルトではサーバとして clangdが使われる) (add-hook 'c-mode-hook #'eglot-en…

WebHIDで PatliteのUSB機器を動かすコードを書いた

リポジトリ github.com デモサイト syohex.github.io 仕事でモバイルデバイスで USB機器の対応をする作業があって, Windowsとか macOSとか Linuxで対応する場合どんなコードになるのだろうかと調べていたんだけど, libusbを使ったりしてもポータブルに書くの…

emacs --no-window-systemで truecolorを効かせずに起動する

GUIエディタは VScodeでいいかということで, Emacsは常に -nw で起動するようにしてみたのだが, 昨今の terminal emulatorは truecolor対応になっており, リモートの環境で使っていた Emacsの色設定がかなり変に見えてしまう問題があった. 対応も面倒くさい…

Emacs 29の eglotを使った Rust環境の設定

Emacs 29から eglotが標準パッケージに入るということで, 最近はちょっとした C++や Goを書くときなどは Emacsを使うことが少し増えてきた. 仕事だと IDEや VScodeだけど. そこで Rustも設定しておくかということでやってみた. VSCodeだと基本的に全部自動だ…

tmux + 256colorで Emacsの見た目の調整

Ubuntu 22.10で環境変数 TERM=xterm-256color で Emacsを起動するとこんな感じなのだが tmuxを起動すると以下のようになりめちゃ見づらい これが嫌で TERM=xterm でここ 10年ぐらいやってきたのだが, さすがに 256colorの方が良いんじゃないって思って対応方…

i386 architectureのパッケージをすべて削除する

昨日メイン PCとサーバを Ubuntu 22.10に上げたけど改めて考えると i386パッケージいらないだろってことで消してみた. 複数あることでアップデートなんかも遅くなるので. パッケージを削除する 下記のコマンドなどで i386パッケージを一覧を得て, :i386 が末…

特定のプログラミング言語でショートカットキーを有効化する

[ { "key": "f1", "command": "rust-analyzer.openDocs", "when": "editorLangId == rust" }, ] when プロパティに editorLangId の条件を追加してやればよい. リファレンス - https://code.visualstudio.com/api/references/when-clause-contexts - https:/…

flutterの zsh補完を version 3対応した

zsh

github.com 古いままだぞという指摘されたので対応した. もっとちゃんとしない部分はあるけど基本は元のままにオプション等をひとまず version 3対応した. bash補完は公式で提供されるのが, flutterコマンドを実行して補完リストを使っているので遅い. コー…

ダウンロードした tar.gzをファイルに書き出さずに展開する

諸事情で Perlを書いていてやり方がわからなかったので調べた. ローカルファイルの tar.gzを展開みたいなのはそれなりにあったけど, オンメモリのまま処理する方法が皆無だった. #!/usr/bin/env perl use strict; use warnings; use HTTP::Tiny; use Encode;…

git-credential-manager-coreのインストール場所が Git for Windows 2.36.1で変更されていた

WSL2の git認証の手間を省くために git-credential-manager-coreを使っているが, Git for Windows 2.36.1でインストールパスが変わっており, pushや pullをしたりしようとすると file not found と出るようになってしまった. パスは次のように変わっていまし…

emacs 28.1で導入された repeat-modeに関する調査

はじめに 最近まともに追っていなかったから存在さえ知らなかったのだけど、markdown-modeの issueでそういう機能があってどういうものかと使い方を調べてみた. 機能 特定のコマンドのグループを連続でお手軽に実行するための仕組み. 例えば移動系コマンドで…

LinkedIn Learningの Rust Code Challenges をやった

www.linkedin.com 課題がいくつかあって解いて解説を見てという感じのコース。コードの雛形は githubに用意されているので, 足りていないところ埋めてテストが通れば OKという感じ. かっちりしたコースではなく解説はわりとグダっていたり雛形のコードに微妙…

Ubuntuで VSCodeの Quick Fixが使えなかった問題の調査と修正

VScodeには Quick Fixという機能があって, Rustとか Goの traitとか interfaceを実装する際の雛形の生成に使えるのですが, そのショートカットである Ctrl + . が Ubuntuで効かなかったのでその原因の調査と修正を行った. バインドされているキーを探す gset…

merge sort in F#

b.hatena.ne.jp merge sortを何も見ずに書けるかが気になって書いてみたが特に問題なく書けた. この手の問題は筋トレと同じでいかに普段手を動かして解いている感があるので, leetcodeなどは継続していた方がいいのかなと思った. open System let generateNu…

zero length array, flexible array

c

github.com たまたま目に入ったこのコードを見ていて, zero length arrayって末尾のメンバ以外でも使えたんだって思って気になるところを調べてみた. Flexible array en.wikipedia.org C99から入った機能. 配列の長さを宣言しないことで利用できる. sizeofは…

markdown-fontify-whole-heading-line

github.com markdown-mode に markdown-fontify-whole-heading-line flagを実装した. 機能としては org-fontify-whole-heading-line と同じで, non-nilの場合 header lineを丸々一行色付けできるようになる. 特に emacs 27で追加された faceの extend 属性を…

Visual Studio Code 1.67(2022 April)で入った Toggle Inlay Hintsが良い

code.visualstudio.com 詳細は公式サイトを見てください。 Visual Studio Codeでは上記のように型を書いていなくても型を表示してくれるわけですが, 正直うざいと思うことが多い。特にあまり型を明示的に書かない F#や Rustの場合. 見た目もそうなのだが, 文…