【Emacs】バッファ切り替えのためのiflipbの設定 を見直す

かつてiflipbの設定記事を書いたことがあった.

tam5917.hatenablog.com

バッファ切り替えのキーバインドにC-tabとC-S-tabを設定したが,tab-barのタブ切り替えと被るので,hydraで設定し直した.微妙かも...

(defhydra hydra-iflipb (global-map "C-;")
  "flip buffer"
  ("C-n" iflipb-next-buffer "next")
  ("C-p" iflipb-previous-buffer "prev"))

【Emacs】tab-bar-modeにおけるタブ移動をワンストロークで行う設定

書いてみた.

tab-bar-modeはM-x tab-bar-modeとするか ,もしくは設定ファイルに(tab-bar-mode +1)と書いて有効化する.

それぞれのtab-bar には通し番号がついており,それらの間の移動をキーボードからワンストロークで行いたかったので,簡単な設定をつけた.

(desktop-save-mode 1) ;; tabの構成を含めて復元できる(実質的な永続化の実現)
(with-eval-after-load 'tab-bar
  (setq tab-bar-tab-hints t) ;; タブに番号表示
  (setq tab-bar-new-button-show nil)  ;; 新規タブボタンは非表示
  (setq tab-bar-close-button-show nil) ;; タブ削除ボタンは非表示
  (setq tab-bar-format '(tab-bar-format-tabs tab-bar-separator)) ;; ヒストリのボタンは不要
  (tab-bar-history-mode +1) ;; 各タブについて,ウィンドウ構成のヒストリを記憶する

  ;; タブ番号に基づいてワンストロークで移動する
  (defvar tab-bar-switch-prefix "C-M-%d") ;; C-M-1はタブ番号1への移動, C-M-2はタブ番号2への移動
  (defvar tab-bar-top-tab "1") ;; タブ番号は1から開始
  (defvar tab-bar-bottom-tab "9") ;; 9つもタブを開くこと機会はあまりないが,ひとまず番号は9まで
  (defun tab-bar-set-keybind ()
    (mapc (lambda (i)
            (global-set-key (kbd (format tab-bar-switch-prefix i))
                            `(lambda ()
                               (interactive)
                               (tab-bar-select-tab ,(int-to-string i)))))
          (number-sequence (string-to-number tab-bar-top-tab)
                           (string-to-number tab-bar-bottom-tab))))
  (tab-bar-set-keybind))

上記tab-bar-set-keybindの実行により,C-M-1からC-M-9までがそれぞれタブ番号1からタブ番号9までのショートカットキーとして登録される.

このワンストローク移動の設定はperspective-modeの設定を参考にした.perspective-modeからtab-bar-modeへの移行の機会でちょうど良かった.

qiita.com

【Emacs】thingoptは便利

こんな感じで使っている. thingoptはMELPAからインストール可能.

(require 'thingopt)
(define-thing-commands)
(global-set-key (kbd "C-,") #'mark-word*)
(global-set-key (kbd "C-.") #'mark-symbol)
(global-set-key (kbd "C-M-,") #'mark-string)
(global-set-key (kbd "C-M-.") #'mark-up-list)

mark-symbolでリージョン選択し,selectedで定義したコマンドを発動させると編集がとても捗る.

tam5917.hatenablog.com

expand-regionひとつで済ますこともできるけども(er/expand-region),1ストロークで手軽にリージョン選択できる利便性を優先した.

【Emacs】モードラインに現在行数と総行数を同時に表示する設定

こう書く.

(setq line-number-display-limit nil)
(defvar my-mode-line-format nil)
(setq my-mode-line-format " (%%l/%d,%%c)")
(if size-indication-mode
    (setq my-mode-line-format (concat my-mode-line-format " of %%I")))
(setq mode-line-position
      '(:eval (format my-mode-line-format
                      (count-lines (point-min) (point-max)))))

MacOSにRicty Diminishedをインストールし、Emacsに設定したときのメモ

MacOS (Sonoma) に Ricty Diminishedをインストールしたくなったので、そのときのメモ。

以下のサイトからフォントをzipファイルでダウンロードする。

github.com

解凍したzipファイルにフォントたち(.ttf)が入っているので、好きなものをダブルクリックでインストール。Discord系以外をインストールすれば十分だろう。

フォントたち

Emacsのフォントを設定するには、

  • メニューの「Options → Set Default font」
  • Collection は All Fonts
  • Typeface で Ricty Diminishedを選択
  • Styleはレギュラー
  • Size はお好みで

とする。

Emacsのメニュー(Options)

Macのフォント設定

「OK」をクリックした後に再度Emacsのメニューから「Options → Save Options」とする。

フォント設定は.emacsに書き込まれる:

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:family "Ricty Diminished" :foundry "nil" :slant normal :weight regular :height 140 :width normal)))))

参考

aoe-tk.hatenablog.com