nixos/home-manager/software/emacs/emacs.d/lib/ui.el

157 lines
4.5 KiB
EmacsLisp

;; Amx, an alternative interface for M-x in Emacs
;; https://github.com/DarwinAwardWinner/amx
(use-package amx
:ensure t
:config
(amx-mode t))
(use-package highlight-indent-guides
:ensure t
:config
(setq highlight-indent-guides-method 'character
hightlight-indentation-mode nil
highlight-indent-guides-auto-enabled nil)
(set-face-background 'highlight-indent-guides-odd-face "darkgray")
(set-face-background 'highlight-indent-guides-even-face "gray")
(set-face-foreground 'highlight-indent-guides-character-face "gray")
(add-hook 'text-mode-hook 'highlight-indent-guides-mode)
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode))
;; change the colours of parenthesis the further out they are
(use-package rainbow-delimiters
:ensure t
:config
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
;; smooth scrolling
(use-package smooth-scrolling
:ensure t
:config
(setq scroll-margin 1
scroll-conservatively 9999
scroll-step 1))
;; highlight bad whitespace
(use-package whitespace
:ensure t
:config
(setq whitespace-style '(face lines-tail tabs trailing))
(set-face-attribute 'whitespace-line nil :foreground "#af005f")
(global-whitespace-mode t))
;; disable menu and toolbar
(tool-bar-mode -1)
(menu-bar-mode -99)
(when (boundp 'enable-scroll-bar)
(scroll-bar-mode -1))
;; Proper line wrapping
(global-visual-line-mode 1)
;; Disable fringe because I use visual-line-mode
(when (boundp 'disable-fringe)
(set-fringe-mode '(0 . 0)))
;; Disable splash screen
(setq inhibit-splash-screen t)
;; disable tooltips
(tooltip-mode -1)
(setq tooltip-use-echo-area t)
;; disable or reconfigure prompts
(fset 'yes-or-no-p 'y-or-n-p) ;; remap yes or no to y or n
;; just create buffers don't ask
(setq confirm-nonexistent-file-or-buffer nil)
(setq ido-create-new-buffer 'always)
(when (boundp 'enable-font)
(set-face-attribute 'default nil
:family "Source Code Pro"
:height 120
:weight 'normal
:width 'normal))
(toggle-frame-maximized)
(setq-default mode-line-format
'("%e"
mode-line-front-space
;; mode-line-mule-info
mode-line-client
mode-line-modified
mode-line-remote
mode-line-frame-identification
mode-line-buffer-identification
" "
mode-line-position
(vc-mode vc-mode)
;; " "
;; mode-line-modes
" "
mode-line-misc-info
;; battery-mode-line-string
;; mode-line-end-spaces
))
(setq display-line-numbers-type 'visual)
(add-hook 'prog-mode-hook (lambda ()
(when (version<= "26.0.50" emacs-version )
(display-line-numbers-mode))))
(setq inhibit-compacting-font-caches t)
;; hide temporary buffers
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-filter-by-name "^[^*]")))
(setq ibuffer-saved-filter-groups
(quote (("default"
("Org" ;; all org-related buffers
(mode . org-mode))
("Programming" ;; prog stuff not already in MyProjectX
(or
(mode . python-mode)
(mode . web-mode)
(mode . php-mode)
(mode . csharp-mode)
(mode . javascript-mode)
(mode . sql-mode)
(mode . powershell-mode)
(mode . nix-mode)
(mode . yaml-mode)
(mode . emacs-lisp-mode)))
;; etc
("Dired"
(mode . dired-mode))))))
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-switch-to-saved-filter-groups "default")))
(when (boundp 'enable-emojis)
(when (is-linux-p)
(set-fontset-font t nil "Symbola" nil 'prepend)))
(setq column-number-mode 1)
;; improve performance with large files (
(defun buffer-too-big-p ()
(or (> (buffer-size) (* 5000 64))
(> (line-number-at-pos (point-max)) 5000)))
(defun generic-setup ()
;; turn off `linum-mode' when there are more than 5000 lines
(if (buffer-too-big-p) (display-line-numbers-mode -1)))
(add-hook 'prog-mode-hook 'generic-setup)
(add-hook 'text-mode-hook 'generic-setup)
;; )
;; Matches parentheses and such in every mode
(show-paren-mode 1)
;; pair parentheses
(electric-pair-mode 1)