mieki256's diary



2015/01/03() [n年前の日記]

#1 [emacs] NTEmacsの設定を見直し中

バッファの上にタブを表示する、tabbar.el なる elisp の設定を見直してるところ。今まで使ってたのはかなり古い版だったようで、現行版は色々設定が変わってた。 _あちらこちらの記事 からコピペして、以下のような感じに修正。

;;; 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

以上です。

過去ログ表示

Prev - 2015/01 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project