   :if window-system
   :init
   :config
-   (progn
-    (global-git-gutter+-mode t))
+  (global-git-gutter+-mode t)
   :defer 1
   :diminish git-gutter+-mode)
 

  :init
  (setq which-key-max-description-length nil)
  :config
  (progn
    (which-key-mode)
    (which-key-setup-side-window-bottom))
  :defer 2
  :diminish which-key-mode)

(use-package magit
  :init
  (progn
    (setq magit-completing-read-function 'ivy-completing-read)
    (add-hook 'with-editor-mode-hook (lambda () (setq fill-column 70))))
  :config
  (progn
    (use-package evil-magit
      :demand
      :init
      (setq evil-magit-state 'normal))))

;; N.B. disabling this because once neotree is popped up once, tab completion in mini-buffer
;; is screwed up.
(use-package neotree
  :disabled
  :init
  (progn
    (add-hook 'popwin:before-popup-hook
              (lambda () (setq neo-persist-show nil)))
    (add-hook 'popwin:after-popup-hook
              (lambda () (setq neo-persist-show t)))
    (add-hook 'neotree-mode-hook
              (lambda ()
                (define-key evil-normal-state-local-map (kbd "TAB") #'neotree-enter)
                (define-key evil-normal-state-local-map (kbd "SPC") #'neotree-enter)
                (define-key evil-normal-state-local-map (kbd "q") #'neotree-hide)
                (define-key evil-normal-state-local-map (kbd "RET") #'neotree-enter))))
  :bind
  (("<f4> /" . neotree-toggle)
   ("<f7> /" . neotree-projectile-action)))

(use-package popwin
  :init
  (progn
    (setq display-buffer-function #'popwin:display-buffer))
  :config
  (progn
    (push '("*Async Shell Command*" :noselect t) popwin:special-display-config)
    (push '("*Completions*" :stick t :noselect t) popwin:special-display-config)
    (push '("*Help*" :stick t ) popwin:special-display-config)
    (push '(Man-mode :stick t :height 20) popwin:special-display-config)
    (push '("*undo-tree*" :stick t :width 60 :position right) popwin:special-display-config)
    (popwin-mode 1))
  :defer 2)

;; Load system-dependent init file if it exists

  :diminish projectile-mode
  :after evil
  :init
  (setq projectile-completion-system 'ivy
        projectile-globally-ignored-files #'( "TAGS" "GTAGS" "GRTAGS" "GPATH" )
        projectile-globally-ignored-file-suffixes #'( ".o" ".so" ".a" ".ko" ".jar" ".bc" ".class")
        projectile-use-git-grep t
        projectile-project-root-files-functions
          #'( projectile-root-local projectile-root-top-down projectile-root-bottom-up projectile-project-root-files-top-down-recurring)
        projectile-mode-line '(:eval (format " [%s]" (projectile-project-name)))
        projectile-enable-caching t)
  :config
  (push "compile_commands.json" projectile-project-root-files)
  (push "build" projectile-globally-ignored-directories)
  (use-package persp-projectile :demand :config)
  (projectile-mode 1))

(use-package counsel-projectile
  :commands (counsel-projectile-find-file)
