Emacs

古い暗号化エントリーの Decryption failed を回避する

org ファイルの各エントリーは、gpg を使って暗号化できますが、かれこれ10年ほど前に暗号化したエントリーを復号できないケースに当たりました。数年前にも同じようなケースに遭遇しましたが、今回はその時とは違う方法で解決できたので、記録を残します。

インラインパッチ付きmacOS用EmacsをNativeComp対応に

脆弱性対策の為に先日、最新の安定版29.3がリリースされたEmacsですが、次のメジャーアップデートのEmacs 30からは、NativeCompがデフォルトでオンになるようです。

https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS#L29

** Native compilation is now enabled by default.
'configure' will enable the Emacs Lisp native compiler, so long as
libgccjit is present and functional on the system.  To disable native
compilation, configure Emacs with the option:

    ./configure --with-native-compilation=no

macOS用のインラインパッチ付きEmacsはどうしましょう…

MacBook Air (M3)

3月冒頭に発売された M3チップ搭載のMacBook Airをゲットしました。手元の Intel i7 のMacBook Airと比較して、どのくらいスペックが向上したかな?との疑問が自然と生じますので、早速比較してみました。Emacsの起動時間で。

counsel-projectile-ag を使う

the_silver_sercher(ag) を用いた全文検索を Emacs から使う場合に、 counsel-ag を使っています。検索の範囲は、現在のバッファ(ファイル)があるディレクトリ以下に自動的に設定されますが、ソースコードを読んでいる時には検索の範囲を、ソースコードが属しているプロジェクト全体に設定したくなります。

macOS の Homebrew で GCC Emacs のビルドがうまく行かない

16dfe04be2c57fc82ccdd56cad97b39d559a5afe で解決しました (将来、再発するかもしれませんが…)

NativeComp が有効になった Emacs 28 ですが、macOS+Homebrew の環境では、うまくビルドできない場合があります。根本的な原因は Homebrew でインストールする libgccjit の状態に依存していて、現時点(2022-08-15)でも問題が再発しています。libgccjit のバージョンが12で、master branch と emacs-28 branch の双方で発生します。当面の解決策は、下記に示すパッチを configure.ac にあてて autogen.sh を呼べば、正しくビルドできる configure が生成されます。

GCC Emacs を試す

ここ数日、界隈を賑わせている GCC Emacs を試してみました。28系のコードで特定のオプションを付けてビルドすると、 elelc にする従来のバイトコンパイルに加えて、 eln に変換するネイティブコンパイルを使えるようになります。GCC Emacsと呼ばれています。

all-the-icons から解脱したい

Emacsのモードラインやバッファを賑やかにしてくれる all-the-icons.el ですが、環境によっては希望するアイコンがレンダリングされなかったり、しかも直すのが簡単じゃありません。

view-modeをorgバッファで違和感なく使う設定

init.elorg-mode で書いている関係から、一般的な設定ファイルと同じように、特定のorgファイルが簡単に書き換わってほしくない状態にあります。そういうファイルは view-mode で扱うのがよいですね。

バッファ内の句読点を変換する

再開発感満載ですが、句読点を置き換えるコマンドを書きました。

M-x my-replace-punctuation-to-scientific でカンマ・ピリオドに、 M-x my-replace-punctuation-to-normal で点丸になります。

orgのテーブルをexcelコピペ用に変換する

標準関数の org-table-export を使うと、カーソル位置のテーブルをファイルに出力できます。プロパティの TABLE_EXPORT_FILE を設定してればファイル名を指定する必要はなく、また出力形式は、同じくプロパティの TABLE_EXPORT_FORMAT で指定する形式か、 org-table-export-default-format で指定した値が使われます。