2015/01/03(土) [n年前の日記]
#1 [emacs] NTEmacsの設定を見直し中
バッファの上にタブを表示する、tabbar.el なる elisp の設定を見直してるところ。今まで使ってたのはかなり古い版だったようで、現行版は色々設定が変わってた。
_あちらこちらの記事
からコピペして、以下のような感じに修正。
以下、参考ページ。
_tabbar.el 2.0 の導入 - Clipboard
_EmacsWiki: Tab Bar Mode
_emacs tabbar.el : Emacsをタブエディタ化し、バッファを俯瞰する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット | るびきち「日刊Emacs」
_[emacs] emacs-nav を入れたり ElScreen から tabbar に乗り換えたり | いわぶろ(ろてん)
_tabbar.elでEmacsをタブエディタ化 (自動で最適な設定をしたい) - cloverrose's blog
;;; tabbar_init.el --- ;; ;; バッファの上部にタブを表示 ;; ;; M-Left、M-Right タブ間を移動 ;; home、S-home タブ間を移動 ;; C-TAB、C-S-TAB タブ間を移動 (require 'tabbar) ;; タブ上でマウスホイール操作無効 (tabbar-mwheel-mode -1) ;; 画像を使用するかどうか (setq tabbar-use-images nil) ;; タブをスクロール (setq tabbar-auto-scroll-flag t) ;; 左に表示されるボタンを無効化 (dolist (btn '(tabbar-buffer-home-button tabbar-scroll-left-button tabbar-scroll-right-button)) (set btn (cons (cons "" nil) (cons "" nil)))) ;; グループ化しない (setq tabbar-buffer-groups-function nil) ;; scratch 以外で先頭に「*」がついてるタブを表示しない (setq tabbar-buffer-list-function (lambda () (remove-if (lambda(buffer) (unless (string= (buffer-name buffer) "*scratch*") (find (aref (buffer-name buffer) 0) " *")) ) (buffer-list)))) (tabbar-mode 1) ;; タブセパレータの長さ (setq tabbar-separator '(0.8)) ;; 外観変更 (set-face-attribute 'tabbar-default nil :family (face-attribute 'default :family) :foreground "#white" :background "gray60" :height 1.0) (set-face-attribute 'tabbar-separator nil :foreground "#002c37" :background "gray60" :height 1.0) (set-face-attribute 'tabbar-unselected nil :foreground "#002c37" :background "gray85" :box nil) (set-face-attribute 'tabbar-modified nil :foreground "#008b00" :background "gray85" :box nil :weight 'bold) (set-face-attribute 'tabbar-selected nil :foreground "#e4007e" :background "white" :box nil :weight 'bold) (set-face-attribute 'tabbar-button nil :box nil) ;; 編集されたらタブのラベルに記号を追加 (defadvice tabbar-buffer-tab-label (after fixup_tab_label_space_and_flag activate) (setq ad-return-value (if (and (buffer-modified-p (tabbar-tab-value tab)) (buffer-file-name (tabbar-tab-value tab))) (concat " * " (concat ad-return-value " ")) (concat " " (concat ad-return-value " "))))) ;; 編集されるたびにタブのラベルを更新 (defun ztl-modification-state-change () (tabbar-set-template tabbar-current-tabset nil) (tabbar-display-update)) ;; First-change-hook is called BEFORE the change is made. (defun ztl-on-buffer-modification () (set-buffer-modified-p t) (ztl-modification-state-change)) (add-hook 'after-save-hook 'ztl-modification-state-change) ;; This doesn't work for revert, I don't know. ;;(add-hook 'after-revert-hook 'ztl-modification-state-change) (add-hook 'first-change-hook 'ztl-on-buffer-modification) (dolist (func '(tabbar-mode tabbar-forward-tab tabbar-forward-group tabbar-backward-tab tabbar-backward-group)) (autoload func "tabbar" "Tabs at the top of buffers and easy control-tab navigation")) (defmacro defun-prefix-alt (name on-no-prefix on-prefix &optional do-always) `(defun ,name (arg) (interactive "P") ,do-always (if (equal nil arg) ,on-no-prefix ,on-prefix))) (defun-prefix-alt shk-tabbar-next (tabbar-forward-tab) (tabbar-forward-group) (tabbar-mode 1)) (defun-prefix-alt shk-tabbar-prev (tabbar-backward-tab) (tabbar-backward-group) (tabbar-mode 1)) ;; キー割り当て (global-set-key [M-right] 'shk-tabbar-next) (global-set-key [M-left] 'shk-tabbar-prev) (global-set-key [(control tab)] 'shk-tabbar-next) (global-set-key [(control shift tab)] 'shk-tabbar-prev) (define-key global-map [home] 'shk-tabbar-next) (define-key global-map [\S-home] 'shk-tabbar-prev)
以下、参考ページ。
_tabbar.el 2.0 の導入 - Clipboard
_EmacsWiki: Tab Bar Mode
_emacs tabbar.el : Emacsをタブエディタ化し、バッファを俯瞰する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット | るびきち「日刊Emacs」
_[emacs] emacs-nav を入れたり ElScreen から tabbar に乗り換えたり | いわぶろ(ろてん)
_tabbar.elでEmacsをタブエディタ化 (自動で最適な設定をしたい) - cloverrose's blog
[ ツッコむ ]
以上です。