I use make-buffer-sticky() function of @itsjeyd and change something. Here are i did:
I make new face by: (make-face 'mode-line-sticky-face)
Then, in make-buffer-sticky() function i change to:
(defun make-buffer-sticky ()
"Make the current window always display this buffer."
(interactive)
(let* ((window (get-buffer-window (current-buffer)))
(dedicated? (window-dedicated-p window)))
(if (not dedicated?)
(progn
(face-remap-add-relative 'mode-line-sticky-face
'(:foreground "#8BE03C"))
(message "Window '%s' is sticky now" (current-buffer))
)
(progn
(face-remap-add-relative 'mode-line '(:background "#0D1011"))
(message "window '%s' is normal" (current-buffer))
))
(set-window-dedicated-p window (not dedicated?))))
I have a customization mode line:
(setq-default
mode-line-format
'(
;; Sticked mode line
(:eval
(let* ((window (get-buffer-window (current-buffer)))
(sticky? (window-dedicated-p window)))
(cond (sticky?
(propertize " ⚡" 'face 'mode-line-sticky-face))
(t ""))))
;; Position, including warning for 78 columns
(:propertize "%4l :" face mode-line-position-face)
(:eval (propertize "%3c " 'face
(if (> (current-column) 78)
'mode-line-78col-face
'mode-line-position-face)))
;; emacsclient [default -- keep?]
mode-line-client
" "
;; read-only or modified status
(:eval
(cond (buffer-read-only
(propertize " RO " 'face 'mode-line-read-only-face))
((buffer-modified-p)
(propertize " ** " 'face 'mode-line-modified-face))
(t " ")))
" "
;; directory and buffer/file name
(:propertize (:eval (shorten-directory default-directory 30))
face mode-line-folder-face)
(:propertize "%b"
face mode-line-filename-face)
;; narrow [default -- keep?]
" %n "
;; mode indicators: vc, recursive edit, major mode, minor modes, process, global
(vc-mode vc-mode)
" %["
(:propertize mode-name
face mode-line-mode-face)
"%] "
(:eval (propertize (format-mode-line minor-mode-alist)
'face 'mode-line-minor-mode-face))
(:propertize mode-line-process
face mode-line-process-face)
(global-mode-string global-mode-string)
" "
))
You can see detail at the commit in my repo at here.
Screenshot
Not sticky:
Sticky:

Hope it helped. :-)