Braindump

evilの代替になり得るか?meowの紹介

December 16, 2021
emacs

この記事は Emacs Advent Calendar 2021 の17日目の記事です. Emacs は小指を酷使するテキストエディタであり,Emacs ユーザーの小指は逞しくなっていることと思う.この記事ではそんな可哀そうな小指を労るパッケージである meow の概要と設定を紹介する (解説はしない). 概要 # meow は vi/vim に代表される modal editing を提供するパッケージ. modal editing とは, Normal Mode や Insert Mode のような移動や編集に特化したモードを切り替えながら編集すること. hjkl による移動, s で1行カット, p でペースト, A で下に1行追加など,移動・編集のための1ストロークのコマンドが複数ある SPC を prefix とするコマンドの実行が可能になっている.例えば C-x C-f なら SPC x f キーバインドのテンプレートとして QWERTY やその他のキー配列に合わせたものが予め用意されている Emacs 由来のキーバインドと conflict しない設計になっており, meow 使用中でも入力専用の INSERT なら普段通り Emacs を使うこともできる 移動や範囲選択を少し楽にしたいという用途としては手軽に導入できて良い 最も有名な関連パッケージとして evil があるが,それと比べて faster & simple god-modeも1ストロークのコマンド実行を可能にするが, meow はそれに加えて便利なテキスト編集機能を備える 基本的には 1ストロークのコマンド実行専用の NORMAL モードと,入力専用の INSERT モードを行き来する 便利な編集機能は こちらで解説されている 設定 # leaf. ...

Emacs の Title bar と Mode line をカスタマイズ

December 14, 2021
emacs

この記事は Emacs Advent Calendar 2021 の15日目の記事です. はじめに # この記事では以下の画像のような title-bar と mode-line のカスタマイズ方法を紹介する. Title bar のカスタマイズ # この項目でやっていることは以下の記事とほとんど同じ emacsのタイトルバーに時計とファイル名を表示 時刻表示するための設定は以下のとおり. ;; This shoud be set before exec `display-time`. (setq display-time-string-forms '((format "%s %s %s" dayname monthname day) (format " %s:%s" 24-hours minutes)) frame-title-format '(" - " display-time-string " - ")) (display-time) ポイントは display-time-string-forms に書式を設定してから (display-time) を実行しているところ.この順番を守らないと display-time-string-forms の default 値が使われてしまう (と こちらの記事に書いてあった). title-bar をカスタマイズするためには frame-title-format をいじる. frame-title-format のより詳しい説明については Emacs Wiki を参照されたい. ...

バブちゃんへ贈る Emacs の歩き方

December 13, 2021
emacs

この記事は Emacs Advent Calendar 2021 の14日目の記事です. はじめに # Emacs を始めたての頃はパッケージ導入の際の設定は理解しないままネットからコピペすることが多いと思う.この記事では,パッケージ導入から自分に適した設定までの一連の動作を一人で行えるようになることに重点を置く. タイトルにあるバブちゃんとは,Emacs の基本的な操作に慣れ始めて,コピペを駆使すればパッケージ導入を行うことができるようになった人を指す.いわばハイハイができるようになった状態である.この記事では,そんなバブちゃんが Emacs 内での二足歩行を会得する際の助けになるような情報提供を目指す. 記事の前半では便利な tips やパッケージの紹介を行い,後半では前半に紹介した内容を活用してパッケージの設定を行った実例を紹介する. 想定読者 # 息をするように C-b, C-f, C-n, C-p などの移動ができる C-c, M-x などの基本的な表記を理解している 以下の記事で解説されている内容が5割くらい理解できていれば (たぶん) 大丈夫 https://qiita.com/eggc/items/8722d8883ebf1d9446da この記事で扱わないこと # elisp 全般 パッケージの導入方法 setq や custom-set-variables 等を用いた変数の設定方法 tips # ここではパッケージ導入とその設定を行う際に知っておくと役に立つ built-in 機能を紹介する. パッケージ検索 # M-x list-packages でインストール可能なパッケージ一覧を見ることができる.(package-archives の設定が済んでいる前提) このバッファ内で iserch 等の検索をかければ気になるパッケージに出会える可能性がある.パッケージをクリックまたは RET すればパッケージの説明と,github上で管理されていればそのリンクを見ることができる. パッケージの説明はパッケージファイルの冒頭に書かれている # 多くの場合,パッケージファイルの冒頭にパッケージの説明が書かれている.親切なパッケージでは推奨設定が記載されていることもある. ...

Ubuntu 18.04.5 で Gcc Emacs をビルドする

August 5, 2021
emacs

ゴールは native compilation 機能を備えた Emacs,通称 Gcc Emacs を使えるようにすること.Gcc Emacs に関してはこちらの素晴らしい記事を参照されたい. ネイティブコンパイルEmacsの登場 ビルドは Emacs Wiki の Gcc Emacs のページをよく読めばいいが,OS 毎の成功事例は多いに越したことはないと思うので,Ubuntu 18.04.5 におけるビルド手順をまとめておく. tl;dr # 実行手順は以下のとおり ビルドに必要なパッケージを入れる ビルド $ git clone --single-branch --depth=1 https://github.com/emacs-mirror/emacs.git $ cd emacs/ $ ./autogen.sh $ ./configure --with-json --with-modules --with-harfbuzz --with-compress-install \ --with-threads --with-included-regex --with-zlib --with-cairo \ --without-rsvg --without-sound --without-toolkit-scroll-bars \ --without-gpm --without-dbus --without-pop \ --without-mailutils --without-gsettings --without-x \ --with-native-compilation \ --prefix=$HOME/src/emacs-builds/ $ make -j(nproc) $ make install 環境 # Ubuntu 18. ...

lsp-mode と corfu を同時に使う際の注意点

July 31, 2021
emacs

tl;dr # lsp-mode と corfu をデフォルト設定のまま同時に使うと, corfu と company-mode の補完窓が同時に出てきてしまい,後者にカーソルが奪われる 原因は lsp-mode 内部で company-mode が起動されるから これを阻止するためには lsp-completion-provider に :none を指定すれば良い 環境 # macOS Big Sur 11.4 (intel) Emacs 28.0.50 corfu.el ver. 0.10 lsp-mode ver. 7.1.0 背景 # corfu は company-mode のように補完機能を強化してくれるパッケージ.Emacs が備える補完機構 (dabbrev-completion や Capfs (completion-at-point-functions)) に準拠しており,補完 UI を提供するのみというミニマルな設計思想であるため,リッチな機能を備える company-mode と比べて軽量で高速. corfu.el company-mode lsp-mode は language server から情報を拾ってきてくれるパッケージ.python を例に挙げると, numpy をインポートするとその内部の情報を拾ってきてくれる.その情報を補完機構に渡すことで,補完候補にいい感じにメソッドなどが現れてくれる. ...

Emacsからgoogle-translateを使う (2021年度版)

July 26, 2021
emacs

2021/07 現在における google-translate.el の設定と使い方をまとめる. 環境 # macOS 11.4 Emacs 28.0.50 google-translate.el ver. 0.12.0 設定 # 以下に leaf.el を用いた設定を示す. leaf.el については こちらの記事 を参照されたい. (leaf google-translate :ensure t :require t :bind ("C-c t" . google-translate-smooth-translate) :custom (google-translate-translation-directions-alist . '(("en" . "ja") ("ja" . "en"))) :config (defun google-translate--search-tkk () "Search TKK." (list 430675 2721866130))) ポイントは require と defun の2箇所.これらを追加しないと翻訳実行時に Search failed: ",tkk:'" と怒られる.公式に依ると google-translate-backend-method に curl か wget を指定してみてくれと 書いてある が,私の環境ではエラー解消に寄与しなかった.その他の backend も設定できるようだが,調査が面倒だったので こちら の issue を参考に設定した. ...