;;; funcs.el --- Spacemacs Visual UI Layer functions File ;; ;; Copyright (c) 2012-2016 Sylvain Benner & Contributors ;; ;; Author: Sylvain Benner ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;;; License: GPLv3 ;; golden ratio (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))) (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*"))) ;; 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))) ;; 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 () "Disable smooth scrolling." (interactive) (setq scroll-conservatively 0)) ;; spaceline (defun spacemacs/customize-powerline-faces () "Alter powerline face to make them work with more themes." (when (boundp 'powerline-inactive2) (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)))))))) ;; vi-tilde-fringe (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))) ;; 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)) ;; ansi-colors (defun spacemacs-ui-visual//compilation-buffer-apply-ansi-colors () (let ((inhibit-read-only t)) (ansi-color-apply-on-region compilation-filter-start (point-max))))