selected.elの設定

selected.elの設定記事を見かけて、たしかに便利だということで、設定を書いてみたという話。
qiita.com

リージョン選択時のテキストを対象にして各種のコマンドを発動できるので、とても便利というわけだ。以下ではmultiple-cursorsの設定やieditの設定、swiperの設定などを新たに追加している。
gist.github.com

summarye.elのバイトコンパイル時に警告が大量に出るので修正

オリジナルのsummarye.elはバイトコンパイル時に警告が大量にでるので修正した。
Warnings of summarye.el when byte-compiling has been removed (Emacs 26.2) · GitHub

summarye.elの設定

バッファのサマリを別ウィンドウに表示するパッケージsummaryeの設定。texの執筆時はセクション名を頭出ししてくれるので重宝する。texに限らず、プログラミング言語など汎用的に使えるので便利である。

  (defun se/quit-summary-item ()
    (interactive)
    (view-mode 1)
    (View-quit))

  (define-key help-map "M" 'se/make-summary-buffer)
  ;; (define-key summary-edit-mode-map (kbd "C-c C-q") 'se/quit-summary-item)
  (define-key summary-edit-mode-map (kbd "q") 'se/quit-summary-item)

あとはse/summary-display-formatを修正して、name-widthの部分を調整した:

(defun se/summary-display-format (cluster width &optional lineformatter cachedp)
  (let* ((str (se/cluster-display-string cluster))
         (line-format "%c  %3d: %s %3s")
         (name-width (- width 18))
         (lin (cond ((null lineformatter)
                     (save-excursion
                       (set-buffer (se/cluster-buffer cluster))
                       (save-restriction
                         (widen)
                         (format "%3d"
                                 (count-lines (se/cluster-beg cluster)
                                              (se/cluster-end cluster))))))
                    ((stringp lineformatter) (format "%3s" lineformatter))
                    ((or (byte-code-function-p lineformatter)
                         (symbolp lineformatter))
                     (format "%3s" (funcall lineformatter cluster))))))
    (unless (and cachedp str)
      (setq str (se/untabify-string
                 (se/string-cut-down-to (se/cluster-name cluster) name-width)))
      (setq str (concat str (make-string (- name-width
                                            (se/string-display-width str)) ?\ )))
      (se/set-cluster-display-string cluster str))
    (format line-format
            (or (se/cluster-marked cluster) ? )
            (1+ (se/cluster-position cluster)) str lin)))

バッファ切り替えのためのiflipbの設定 / setting for iflipb to switch buffer

iflipbという、バッファ切り替えのためのパッケージが存在する:
emacs.rubikitch.com

私は以下の設定としている。
カレントバッファと同じメジャーモードのバッファのみを切り替え対象にしたいため、新たに関数を書いた。

(require 'iflipb)

(setq iflipb-wrap-around t)
(setq iflipb-ignore-buffers (list "^[*]"))
(defun my-iflipb-buffer-list ()
  "Returns list of buffers whose major-mode is the same as current buffer's one."
  (let ((cur-buf-list (buffer-list (selected-frame)))
        (same-major-mode-buflist nil)
        (currbuf-major-mode
         (buffer-local-value 'major-mode (current-buffer))))
     (dolist (buffer cur-buf-list)
      (if (eq (buffer-local-value 'major-mode buffer) currbuf-major-mode)
          (add-to-list 'same-major-mode-buflist buffer)))
     (nreverse same-major-mode-buflist)))
(setq iflipb-buffer-list-function 'my-iflipb-buffer-list)

(global-set-key (kbd "C-<tab>") 'iflipb-next-buffer)
(global-set-key (kbd "C-S-<tab>") 'iflipb-previous-buffer)