4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

マルチタブ風のサイドバー (`centaur-tabs` で)

Last updated at Posted at 2022-08-11

茶番

近年のテキストエディタの発展は著しいです。

など、キャッチアップも難しいほどの変革が訪れています。

ですが元の流れを忘れてはいけません。我々 (?) 一般人がナードなエディタに触れることができるのは、 VSCode が LSP をもたらしたためです。そして VSCode は、今最もメジャで美しいエディタとして君臨しています:

vscode.png

現代のテキストエディタとはかくあるべし……! このアプリに Emacs で対向できるのでしょうか?

emacs-is-an-os.png

これが『OS』と呼ばれたエディタの姿なんですか……?

エディタの見た目は設定次第で良くなります。ある程度設定しました。

設定後、まだ羨ましい点

VSCode の サイドバーとか下部ペインが綺麗でいいな と思っていました。

Emacs にも似たようなものが欲しいです!

サイドバーを VSCode 風にしてみた

2 点のみ変更しました。

OUTLINE 相当のウィジェットを追加

まず機能的な差を埋めます。 lsp-ui-imenu を使えば、ソースのアウトラインを表示できます:

(leaf lsp-ui-imenu
    :ensure nil
    :after lsp-mode
    :custom ((lsp-imenu-sort-methods . '(position))  ; この設定でアウトライン表示に
             (lsp-ui-imenu-buffer-name . "@imenu")   ; 後述のバッファグループの都合で名称変更
             (lsp-ui-imenu-window-width . my-sidebar-width))
    :hook (lsp-ui-imenu-mode-hook . hl-line-mode))

さらにカーソル位置と連動してフォーカスが更新されるようにしました (gist):

stick-imenu.gif

GIF です。 Firefox では動かないかも……

しかしファイルツリーとアウトラインを同時に表示することはできません。どうしたものでしょうか。

マルチタブ表示

centaur-tabs を使っていたので、これで『タブ』表示することを思いつきました:

(leaf centaur-tabs
    :after projectile
    :custom ((centaur-tabs--buffer-show-groups . nil)
             (centaur-tabs-cycle-scope . 'tabs)
             (centaur-tabs-buffer-groups-function . #'my-centaur-tabs-group))
    :config
    ;; サイドバー および ボトムバーのバッファグループを作成する
    (defun my-centaur-tabs-group ()
        (cond ((string-equal "@" (substring (buffer-name) 0 1)) '("Sidebar") )
              ((string-equal "⊥" (substring (buffer-name) 0 1)) '("Bottom bar") )
              ;; Projectile のグループに fallback
              (t (centaur-tabs-projectile-buffer-groups))))
    (centaur-tabs-mode t))

実際、こんな画面になります:

bottom-bar.png

  • サイドバーには @imenu, @tree のように @ から始まるバッファが表示されます
    • 他にも良さそうなウィジェットがあれば追加していきます
  • ボトムバーには ⊥ vterm, ⊥ scratch のように から始まるバッファが表示されます
    • ただボトムバーの使い道は思いつきません。
      • エラー表示は minibuffer で見ます
      • シェルは tmux pane から使います

終わり

サイドバーがリッチになりました! VSCode のアイコン表示がとても好きなので、まだまだ未練はありますが、そこは妥協しよう 1 と思います。

  1. Emacs は通常ターミナルでアイコン表示できません。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?