Integrate centered-buffer-mode and space-doc-mode.
This commit is contained in:
parent
070d59af13
commit
f9a846d2ee
|
@ -499,7 +499,8 @@ arguments of the =ag= program.
|
|||
You can modify the list of visual enhancements applied by the =space-doc-mode=:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq spacemacs-space-doc-modificators
|
||||
'(spacemacs//space-doc-org-indent-mode
|
||||
'(spacemacs//space-doc-center-buffer-mode
|
||||
spacemacs//space-doc-org-indent-mode
|
||||
spacemacs//space-doc-view-mode
|
||||
spacemacs//space-doc-hide-line-numbers
|
||||
spacemacs//space-doc-emphasis-overlays
|
||||
|
@ -512,6 +513,7 @@ You can modify the list of visual enhancements applied by the =space-doc-mode=:
|
|||
#+END_SRC
|
||||
It's the default value of the variable with all enhancements.
|
||||
Each function in the list represents some modification.
|
||||
Some of them might be order dependant so don't shuffle the list!
|
||||
You can make a modification deferred by moving it to =spacemacs-space-doc-modificators-deferred= list.
|
||||
|
||||
** Remap paste key to be able to paste copied text multiple times
|
||||
|
|
|
@ -209,7 +209,7 @@ automatically applied to."
|
|||
(call-interactively 'spacemacs-centered-buffer-mode)))
|
||||
|
||||
(defun spacemacs/centered-buffer-mode-full-width ()
|
||||
"Toggle `spacemacs-centered-buffer-mode'."
|
||||
"Center buffer in the frame."
|
||||
(interactive)
|
||||
(when (require 'centered-buffer-mode nil t)
|
||||
(spacemacs/maximize-horizontally)
|
||||
|
|
|
@ -38,9 +38,9 @@ that differed modifications won't cause an overflow."
|
|||
:type 'integer
|
||||
:group 'editing-basics)
|
||||
|
||||
(defcustom spacemacs-centered-buffer-mode-min-fringe-color "black"
|
||||
(defcustom spacemacs-centered-buffer-mode-fringe-color "black"
|
||||
"Color of the fringes."
|
||||
:type 'string
|
||||
:type 'color
|
||||
:group 'editing-basics)
|
||||
|
||||
(defvar-local spacemacs--centered-buffer-mode-origin-buffer nil)
|
||||
|
@ -52,7 +52,6 @@ that differed modifications won't cause an overflow."
|
|||
"Minor mode to center buffer in its window."
|
||||
:init-value nil
|
||||
:group 'editing-basics
|
||||
:lighter " -B-"
|
||||
(if spacemacs-centered-buffer-mode
|
||||
(let* ((window (selected-window))
|
||||
(origin-buffer (window-buffer window))
|
||||
|
@ -75,49 +74,50 @@ that differed modifications won't cause an overflow."
|
|||
(outline-show-all))
|
||||
(switch-to-buffer indirect-buffer nil t)
|
||||
(with-mode-disabled page-break-lines-mode
|
||||
(let* ((fringe-w (spacemacs//centered-buffer-calc-fringe
|
||||
window)))
|
||||
(if (> fringe-w spacemacs-centered-buffer-mode-min-fringe-width)
|
||||
(progn
|
||||
;; Fix visual glitch.
|
||||
(spacemacs/toggle-line-numbers)
|
||||
(spacemacs/toggle-line-numbers)
|
||||
;;
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffers
|
||||
(append (list indirect-buffer)
|
||||
spacemacs--centered-buffer-mode-indirect-buffers)
|
||||
spacemacs--centered-buffer-mode-origin-buffer origin-buffer
|
||||
spacemacs-centered-buffer-mode t
|
||||
indicate-empty-lines nil
|
||||
fringes-outside-margins t
|
||||
left-fringe-width fringe-w
|
||||
right-fringe-width fringe-w
|
||||
;; looks better with some margin.
|
||||
left-margin-width (if (or (not left-margin-width)
|
||||
(= left-margin-width 0))
|
||||
1
|
||||
left-margin-width)
|
||||
spacemacs--centered-buffer-mode-text-pixel-size
|
||||
(car (window-text-pixel-size window)))
|
||||
(face-remap-add-relative 'fringe :background
|
||||
spacemacs-centered-buffer-mode-min-fringe-color)
|
||||
(set-window-buffer window indirect-buffer)
|
||||
(add-hook 'buffer-list-update-hook
|
||||
'spacemacs//centered-buffer-buffer-list-update-fringes)
|
||||
(add-hook 'window-configuration-change-hook
|
||||
'spacemacs//centered-buffer-buffer-list-update-fringes))
|
||||
(setq spacemacs--centered-buffer-mode-origin-buffer nil)
|
||||
(set-buffer origin-buffer)
|
||||
(kill-buffer indirect-buffer)
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffer nil)
|
||||
(when (called-interactively-p 'any)
|
||||
(message "Not enough space to center the buffer!"))))))
|
||||
(let* ((fringe-w (spacemacs//centered-buffer-calc-fringe
|
||||
window)))
|
||||
(if (> fringe-w spacemacs-centered-buffer-mode-min-fringe-width)
|
||||
(progn
|
||||
;; Fix visual glitch.
|
||||
(spacemacs/toggle-line-numbers)
|
||||
(spacemacs/toggle-line-numbers)
|
||||
;;
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffers
|
||||
(append (list indirect-buffer)
|
||||
spacemacs--centered-buffer-mode-indirect-buffers)
|
||||
spacemacs--centered-buffer-mode-origin-buffer origin-buffer
|
||||
spacemacs-centered-buffer-mode t
|
||||
indicate-empty-lines nil
|
||||
fringes-outside-margins t
|
||||
left-fringe-width fringe-w
|
||||
right-fringe-width fringe-w
|
||||
;; looks better with some margin.
|
||||
left-margin-width (if (or (not left-margin-width)
|
||||
(= left-margin-width 0))
|
||||
1
|
||||
left-margin-width)
|
||||
spacemacs--centered-buffer-mode-text-pixel-size
|
||||
(car (window-text-pixel-size window)))
|
||||
(face-remap-add-relative 'fringe :background
|
||||
spacemacs-centered-buffer-mode-fringe-color)
|
||||
(set-window-buffer window indirect-buffer)
|
||||
(add-hook 'buffer-list-update-hook
|
||||
'spacemacs//centered-buffer-buffer-list-update-fringes)
|
||||
(add-hook 'window-configuration-change-hook
|
||||
'spacemacs//centered-buffer-buffer-list-update-fringes))
|
||||
(setq spacemacs--centered-buffer-mode-origin-buffer nil)
|
||||
(set-buffer origin-buffer)
|
||||
(kill-buffer indirect-buffer)
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffer nil)
|
||||
(when (called-interactively-p 'any)
|
||||
(message "Not enough space to center the buffer!"))))))
|
||||
(let* ((window (selected-window))
|
||||
(origin-buffer spacemacs--centered-buffer-mode-origin-buffer)
|
||||
(indirect-buffer (window-buffer window)))
|
||||
(setq spacemacs--centered-buffer-mode-origin-buffer nil)
|
||||
(switch-to-buffer origin-buffer nil t)
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffer nil)
|
||||
(when (buffer-live-p origin-buffer)
|
||||
(switch-to-buffer origin-buffer nil t)
|
||||
(setq spacemacs--centered-buffer-mode-indirect-buffer nil))
|
||||
(when (buffer-live-p indirect-buffer)
|
||||
(dolist (window (get-buffer-window-list indirect-buffer 2))
|
||||
(set-window-buffer window origin-buffer))
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
;;; Code:
|
||||
(require 'face-remap)
|
||||
(require 'org)
|
||||
(require 'centered-buffer-mode)
|
||||
|
||||
(define-minor-mode space-doc-mode
|
||||
"Buffer local minor mode for Spacemacs documentation files.
|
||||
|
@ -48,7 +49,8 @@ keeping their content visible.
|
|||
|
||||
;; NOTE: Dont forget to update Spacemacs FAQ if you modify this list!
|
||||
(defvar spacemacs-space-doc-modificators
|
||||
'(spacemacs//space-doc-org-indent-mode
|
||||
'(spacemacs//space-doc-center-buffer-mode
|
||||
spacemacs//space-doc-org-indent-mode
|
||||
spacemacs//space-doc-view-mode
|
||||
spacemacs//space-doc-hide-line-numbers
|
||||
spacemacs//space-doc-emphasis-overlays
|
||||
|
@ -69,6 +71,36 @@ by the function. Otherwise - disable.")
|
|||
"Same as `spacemacs-space-doc-modificators' but the modificators will
|
||||
be run deferred.")
|
||||
|
||||
(defun spacemacs//space-doc-center-buffer-mode (&optional flag)
|
||||
"Enable `spacemacs-centered-buffer-mode' if flag is non nil, disable it otherwise.
|
||||
This functions is aimed to be used with `spacemacs-space-doc-modificators'."
|
||||
;;FIXME: Need to redesign this.. One day.
|
||||
(if flag
|
||||
(progn
|
||||
;; HACK: Hide the original buffer from `spacemacs/previous-useful-buffer'.
|
||||
(unless (and (string-prefix-p "*" (buffer-name))
|
||||
(string-suffix-p "*" (buffer-name)))
|
||||
(rename-buffer (format "*%s*" (buffer-name))))
|
||||
(set (make-local-variable 'spacemacs--space-doc-origin-fringe-color)
|
||||
(face-background 'fringe))
|
||||
;; HACK: Fix glitchy fringe color.
|
||||
(face-remap-add-relative 'fringe :background
|
||||
spacemacs-centered-buffer-mode-fringe-color)
|
||||
;; HACK: Needed to get proper content width.
|
||||
(run-with-idle-timer 0 nil 'spacemacs-centered-buffer-mode +1))
|
||||
(when spacemacs-centered-buffer-mode
|
||||
(set-window-buffer
|
||||
(selected-window)
|
||||
spacemacs--centered-buffer-mode-origin-buffer)
|
||||
(rename-buffer (substring (buffer-name) 1 (1- (length (buffer-name)))))
|
||||
(kill-buffer spacemacs--centered-buffer-mode-indirect-buffer)
|
||||
;; HACK: Now we call it for the original buffer.
|
||||
(space-doc-mode -1))
|
||||
(when (bound-and-true-p spacemacs--space-doc-origin-fringe-color)
|
||||
;; HACK: Removing or reseting doesn't work.
|
||||
(face-remap-add-relative 'fringe :background
|
||||
spacemacs--space-doc-origin-fringe-color))))
|
||||
|
||||
(defun spacemacs//space-doc-org-indent-mode (&optional flag)
|
||||
"Enable `org-indent-mode' if flag is non nil, disable it otherwise.
|
||||
This functions is aimed to be used with `spacemacs-space-doc-modificators'."
|
||||
|
@ -228,8 +260,9 @@ This functions is aimed to be used with `spacemacs-space-doc-modificators'."
|
|||
'spacemacs--space-doc-org-kbd-face-remap-cookie)
|
||||
(face-remap-add-relative 'org-kbd
|
||||
`(:box nil)))
|
||||
(face-remap-remove-relative
|
||||
spacemacs--space-doc-org-kbd-face-remap-cookie)))
|
||||
(when (bound-and-true-p spacemacs--space-doc-org-kbd-face-remap-cookie)
|
||||
(face-remap-remove-relative
|
||||
spacemacs--space-doc-org-kbd-face-remap-cookie))))
|
||||
|
||||
(defun spacemacs//space-doc-resize-inline-images (&optional enable)
|
||||
"Resize inline images.
|
||||
|
|
Loading…
Reference in New Issue