2016-04-29 21:48:00 +00:00
|
|
|
|
;;; funcs.el --- Spacemacs Visual UI Layer functions File
|
|
|
|
|
;;
|
|
|
|
|
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
|
|
|
|
|
;;
|
|
|
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
|
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
|
|
|
;;
|
|
|
|
|
;; This file is not part of GNU Emacs.
|
|
|
|
|
;;
|
|
|
|
|
;;; License: GPLv3
|
|
|
|
|
|
2016-05-21 03:34:32 +00:00
|
|
|
|
|
2016-06-08 14:41:14 +00:00
|
|
|
|
;; golden ratio
|
2016-05-21 03:34:32 +00:00
|
|
|
|
|
2016-06-08 14:41:14 +00:00
|
|
|
|
(defun spacemacs/no-golden-ratio-for-buffers (bufname)
|
|
|
|
|
"Disable golden-ratio if BUFNAME is the name of a visible buffer."
|
|
|
|
|
(and (get-buffer bufname) (get-buffer-window bufname 'visible)))
|
2016-05-21 03:34:32 +00:00
|
|
|
|
|
2016-06-08 14:41:14 +00:00
|
|
|
|
(defun spacemacs/no-golden-ratio-guide-key ()
|
|
|
|
|
"Disable golden-ratio for guide-key popwin buffer."
|
|
|
|
|
(or (spacemacs/no-golden-ratio-for-buffers " *guide-key*")
|
|
|
|
|
(spacemacs/no-golden-ratio-for-buffers " *popwin-dummy*")))
|
2016-05-21 03:34:32 +00:00
|
|
|
|
|
2016-05-20 00:21:30 +00:00
|
|
|
|
|
|
|
|
|
;; neotree
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/neotree-expand-or-open ()
|
|
|
|
|
"Collapse a neotree node."
|
|
|
|
|
(interactive)
|
|
|
|
|
(let ((node (neo-buffer--get-filename-current-line)))
|
|
|
|
|
(when node
|
|
|
|
|
(if (file-directory-p node)
|
|
|
|
|
(progn
|
|
|
|
|
(neo-buffer--set-expand node t)
|
|
|
|
|
(neo-buffer--refresh t)
|
|
|
|
|
(when neo-auto-indent-point
|
|
|
|
|
(next-line)
|
|
|
|
|
(neo-point-auto-indent)))
|
|
|
|
|
(call-interactively 'neotree-enter)))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/neotree-collapse ()
|
|
|
|
|
"Collapse a neotree node."
|
|
|
|
|
(interactive)
|
|
|
|
|
(let ((node (neo-buffer--get-filename-current-line)))
|
|
|
|
|
(when node
|
|
|
|
|
(when (file-directory-p node)
|
|
|
|
|
(neo-buffer--set-expand node nil)
|
|
|
|
|
(neo-buffer--refresh t))
|
|
|
|
|
(when neo-auto-indent-point
|
|
|
|
|
(neo-point-auto-indent)))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/neotree-collapse-or-up ()
|
|
|
|
|
"Collapse an expanded directory node or go to the parent node."
|
|
|
|
|
(interactive)
|
|
|
|
|
(let ((node (neo-buffer--get-filename-current-line)))
|
|
|
|
|
(when node
|
|
|
|
|
(if (file-directory-p node)
|
|
|
|
|
(if (neo-buffer--expanded-node-p node)
|
|
|
|
|
(spacemacs/neotree-collapse)
|
|
|
|
|
(neotree-select-up-node))
|
|
|
|
|
(neotree-select-up-node)))))
|
|
|
|
|
|
|
|
|
|
(defun neotree-find-project-root ()
|
|
|
|
|
(interactive)
|
|
|
|
|
(if (neo-global--window-exists-p)
|
|
|
|
|
(neotree-hide)
|
|
|
|
|
(let ((origin-buffer-file-name (buffer-file-name)))
|
|
|
|
|
(neotree-find (projectile-project-root))
|
|
|
|
|
(neotree-find origin-buffer-file-name))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//neotree-maybe-attach-window ()
|
|
|
|
|
(when (get-buffer-window (neo-global--get-buffer))
|
|
|
|
|
(neo-global--attach)))
|
|
|
|
|
|
2016-06-08 14:41:14 +00:00
|
|
|
|
|
|
|
|
|
;; popwin
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/remove-popwin-display-config (str)
|
|
|
|
|
"Removes the popwin display configurations that matches the passed STR"
|
|
|
|
|
(setq popwin:special-display-config
|
|
|
|
|
(-remove (lambda (x) (if (and (listp x) (stringp (car x)))
|
|
|
|
|
(string-match str (car x))))
|
|
|
|
|
popwin:special-display-config)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; smooth scrolling
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/enable-smooth-scrolling ()
|
|
|
|
|
"Enable smooth scrolling."
|
|
|
|
|
(interactive)
|
|
|
|
|
(setq scroll-conservatively 101))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/disable-smooth-scrolling ()
|
|
|
|
|
"Enable smooth scrolling."
|
|
|
|
|
(interactive)
|
|
|
|
|
(setq scroll-conservatively 0))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; spaceline
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/customize-powerline-faces ()
|
|
|
|
|
"Alter powerline face to make them work with more themes."
|
|
|
|
|
(set-face-attribute 'powerline-inactive2 nil
|
|
|
|
|
:inherit 'font-lock-comment-face))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//evil-state-face ()
|
|
|
|
|
(let ((state (if (eq 'operator evil-state) evil-previous-state evil-state)))
|
|
|
|
|
(intern (format "spacemacs-%S-face" state))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//restore-powerline (buffer)
|
|
|
|
|
"Restore the powerline in buffer"
|
|
|
|
|
(with-current-buffer buffer
|
|
|
|
|
(setq-local mode-line-format (default-value 'mode-line-format))
|
|
|
|
|
(powerline-set-selected-window)
|
|
|
|
|
(powerline-reset)))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//set-powerline-for-startup-buffers ()
|
|
|
|
|
"Set the powerline for buffers created when Emacs starts."
|
|
|
|
|
(dolist (buffer '("*Messages*" "*spacemacs*" "*Compile-Log*"))
|
|
|
|
|
(when (and (get-buffer buffer)
|
|
|
|
|
(configuration-layer/package-usedp 'spaceline))
|
|
|
|
|
(spacemacs//restore-powerline buffer))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//prepare-diminish ()
|
|
|
|
|
(when spaceline-minor-modes-p
|
|
|
|
|
(let ((unicodep (dotspacemacs|symbol-value
|
|
|
|
|
dotspacemacs-mode-line-unicode-symbols)))
|
|
|
|
|
(setq spaceline-minor-modes-separator
|
|
|
|
|
(if unicodep (if (display-graphic-p) "" " ") "|"))
|
|
|
|
|
(dolist (mm spacemacs--diminished-minor-modes)
|
|
|
|
|
(let ((mode (car mm)))
|
|
|
|
|
(when (and (boundp mode) (symbol-value mode))
|
|
|
|
|
(let* ((unicode (cadr mm))
|
|
|
|
|
(ascii (caddr mm))
|
|
|
|
|
(dim (if unicodep
|
|
|
|
|
unicode
|
|
|
|
|
(if ascii ascii unicode))))
|
|
|
|
|
(diminish mode dim))))))))
|
|
|
|
|
|
2016-05-20 00:21:30 +00:00
|
|
|
|
|
|
|
|
|
;; vi-tilde-fringe
|
2016-04-29 21:48:00 +00:00
|
|
|
|
|
|
|
|
|
(defun spacemacs/disable-vi-tilde-fringe ()
|
|
|
|
|
"Disable `vi-tilde-fringe' in the current buffer."
|
|
|
|
|
(vi-tilde-fringe-mode -1))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/disable-vi-tilde-fringe-read-only ()
|
|
|
|
|
"Disable `vi-tilde-fringe' in the current buffer if it is read only."
|
|
|
|
|
(when buffer-read-only
|
|
|
|
|
(spacemacs/disable-vi-tilde-fringe)))
|
2016-06-08 14:41:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; zoom
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//zoom-frm-powerline-reset ()
|
|
|
|
|
(when (fboundp 'powerline-reset)
|
|
|
|
|
(setq-default powerline-height (spacemacs/compute-powerline-height))
|
|
|
|
|
(powerline-reset)))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs//zoom-frm-do (arg)
|
|
|
|
|
"Perform a zoom action depending on ARG value."
|
|
|
|
|
(let ((zoom-action (cond ((eq arg 0) 'zoom-frm-unzoom)
|
|
|
|
|
((< arg 0) 'zoom-frm-out)
|
|
|
|
|
((> arg 0) 'zoom-frm-in)))
|
|
|
|
|
(fm (cdr (assoc 'fullscreen (frame-parameters))))
|
|
|
|
|
(fwp (* (frame-char-width) (frame-width)))
|
|
|
|
|
(fhp (* (frame-char-height) (frame-height))))
|
|
|
|
|
(when (equal fm 'maximized)
|
|
|
|
|
(toggle-frame-maximized))
|
|
|
|
|
(funcall zoom-action)
|
|
|
|
|
(set-frame-size nil fwp fhp t)
|
|
|
|
|
(when (equal fm 'maximized)
|
|
|
|
|
(toggle-frame-maximized))))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/zoom-frm-in ()
|
|
|
|
|
"zoom in frame, but keep the same pixel size"
|
|
|
|
|
(interactive)
|
|
|
|
|
(spacemacs//zoom-frm-do 1)
|
|
|
|
|
(spacemacs//zoom-frm-powerline-reset))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/zoom-frm-out ()
|
|
|
|
|
"zoom out frame, but keep the same pixel size"
|
|
|
|
|
(interactive)
|
|
|
|
|
(spacemacs//zoom-frm-do -1)
|
|
|
|
|
(spacemacs//zoom-frm-powerline-reset))
|
|
|
|
|
|
|
|
|
|
(defun spacemacs/zoom-frm-unzoom ()
|
|
|
|
|
"Unzoom current frame, keeping the same pixel size"
|
|
|
|
|
(interactive)
|
|
|
|
|
(spacemacs//zoom-frm-do 0)
|
|
|
|
|
(spacemacs//zoom-frm-powerline-reset))
|