46 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| (defun make-xpm-bar (color height width)
 | |
|   "Create an XPM bitmap of a bar."
 | |
|   (propertize
 | |
|    " " 'display
 | |
|    (let ((data (make-list height (make-list width 1)))
 | |
|          (color (or color "None")))
 | |
|      (create-image
 | |
|       (concat
 | |
|        (format "/* XPM */\nstatic char * percent[] = {\n\"%i %i 2 1\",\n\". c %s\",\n\"  c %s\","
 | |
|                (length (car data))
 | |
|                (length data)
 | |
|                color
 | |
|                color)
 | |
|        (apply #'concat
 | |
|               (cl-loop with idx = 0
 | |
|                        with len = (length data)
 | |
|                        for dl in data
 | |
|                        do (cl-incf idx)
 | |
|                        collect
 | |
|                        (concat "\""
 | |
|                                (cl-loop for d in dl
 | |
|                                         if (= d 0) collect (string-to-char " ")
 | |
|                                         else collect (string-to-char "."))
 | |
|                                (if (eq idx len) "\"};" "\",\n")))))
 | |
|       'xpm t :ascent 'center))))
 | |
| 
 | |
| (defun my-tabbar-display-tab (tab)
 | |
|     (let ((label (if tabbar--buffer-show-groups
 | |
|                      (format "[%s]" (tabbar-tab-tabset tab))
 | |
|                    (format "%s" (tabbar-tab-value tab))))
 | |
|           (bar-color "#51afef")
 | |
|           (bar-height 25)
 | |
|           (bar-width 3)
 | |
|           (selected-p (eq tab (tabbar-selected-tab (tabbar-current-tabset)))))
 | |
|       (concat (when (and (display-graphic-p) selected-p)
 | |
|                 (make-xpm-bar bar-color bar-height bar-width))
 | |
|               " "
 | |
|               (if tabbar-auto-scroll-flag
 | |
|                   label
 | |
|                 (tabbar-shorten
 | |
|                  label (max 1 (/ (window-width)
 | |
|                                  (length (tabbar-view
 | |
|                                           (tabbar-current-tabset)))))))
 | |
|               " ")))
 | |
| 
 | |
| (setq tabbar-tab-label-function #'my-tabbar-display-tab)
 |