- Menu and toobars
;;(require 'org)
;;(org-babel-load-file (expand-file-name "~/.emacs.d/settings.org"))
(scroll-bar-mode -1) ; Disable visible scrollbar
;; (tool-bar-mode -1) ; Disable tool bar
;; (tooltip-mode -1) ; Disable tooltip
;; (set-fringe-mode 80) ; Give some breathing room?
;; (menu-bar-mode -1) ; Go full spartan- Scroll Emacs
(setq scroll-step 1
scroll-conservatively 10000)- Set up the visible bell
(setq visible-bell t)- Set Fonts
(set-face-attribute 'default nil :font "Cascadia code" :height 120)- Set Emacs Theme
(load-theme 'adwaita)- Display line numbers
(global-display-line-numbers-mode t)
;; We don't want line numbers everywhere, e.g shell
(dolist (mode '(org-hook-mode
term-mode-hook
eshell-mode-hook
shell-mode-hook))
(add-hook mode(lambda() (display-line-numbers-mode 0))))- Truncate long lines in certain modes
(add-hook 'org-mode-hook (lambda() (setq truncate-lines nil)))- Initialize Melpa
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("melpa-stable" . "https://stable.melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
;; Initialize use-package on non-linux platforms
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
- Since I have been using VI for quite sometime now, I don’t want to train myself to learn Emacs
;; package: evil
;; First thing first. Be EVIL!
(use-package evil
:init
(setq evil-want-integration t)
(setq evil-want-keybinding nil)
(setq evil-want-C-u-scroll t)
(setq evil-want-C-i-jump nil)
:config
(evil-mode 1)
(define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state)
(define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join)
;; Use visual line motions even outside of visual-line-mode buffers
(evil-global-set-key 'motion "j" 'evil-next-visual-line)
(evil-global-set-key 'motion "k" 'evil-previous-visual-line)
(evil-set-initial-state 'messages-buffer-mode 'normal)
(evil-set-initial-state 'dashboard-mode 'normal))
;; package: evil-collection
;; Now be EVIL on every mode
;; TODO: Doesn't work
(use-package evil-collection
:after evil
:ensure t
:config
(evil-collection-init))(setq inhibit-startup-message t)
;; (scroll-bar-mode -1) ; Disable visible scrollbar
;; (tool-bar-mode -1) ; Disable visible scrollbar
;; (tooltip-mode -1) ; Disable tooltips
;; (set-fringe-mode 10) ; Give some breathing room?
;; (menu-bar-mode -1) ; Go full spartan
;; Set up the visible bell
(setq visible-bell t)
;; Scroll emacs
(setq scroll-step 1
scroll-conservatively 10000)
;; Set font-face
(set-face-attribute 'default nil :font "Cascadia code" :height 120)
;; Set emacs theme
(load-theme 'adwaita)
;; Display line numbers
(global-display-line-numbers-mode t)
;; We don't want line numbers in a shell right?
;; Disable line numbers for certain modes
(dolist (mode '(org-hook-mode
term-mode-hook
eshell-mode-hook
shell-mode-hook))
(add-hook mode(lambda() (display-line-numbers-mode 0))))
;; Truncate long lines in certain modes
(add-hook 'org-mode-hook (lambda() (setq truncate-lines nil)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialize package sources
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("melpa-stable" . "https://stable.melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
;; Initialize use-package on non-linux platforms
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Packages
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; package: evil
;; First thing first. Be EVIL!
(use-package evil
:init
(setq evil-want-integration t)
(setq evil-want-keybinding nil)
(setq evil-want-C-u-scroll t)
(setq evil-want-C-i-jump nil)
:config
(evil-mode 1)
(define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state)
(define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join)
;; Use visual line motions even outside of visual-line-mode buffers
(evil-global-set-key 'motion "j" 'evil-next-visual-line)
(evil-global-set-key 'motion "k" 'evil-previous-visual-line)
(evil-set-initial-state 'messages-buffer-mode 'normal)
(evil-set-initial-state 'dashboard-mode 'normal))
;; package: evil-collection
;; Now be EVIL on every mode
;; TODO: Doesn't work
(use-package evil-collection
:after evil
:ensure t
:config
(evil-collection-init))
;; package: hydra
(use-package hydra)
(defhydra hydra-text-scale (:timeout 4)
"scale text"
("j" text-scale-increase "in")
("k" text-scale-decrease "out")
("0" text-scale-set "set")
("f" nil "finished" :exit t))
;; package: general.el
;; Global keybinding for modes
(use-package general
:config
(general-create-definer rune/leader-keys
:keymaps '(normal insert visual emacs)
:prefix "SPC"
:global-prefic "C-SPC"))
(rune/leader-keys
"t" '(:ignore t :which-key "toggles")
"tt" '(counsel-load-theme :which-key "choose theme")
"ts" '(hydra-text-scale/body :which-key "scale-text"))
;; package
;; package: all-the-icons
;; Icons for doom-modeline and treemacs
(use-package all-the-icons)
;; package: doom-modeline
;; Doom modeline: The beauty.
;; https://github.com/seagle0128/doom-modeline
(use-package doom-modeline
:init (doom-modeline-mode 1)
:custom ((doom-modeline-height 30)))
;; package: doom-themes
;; This package has a bunch of famous themes.
(use-package doom-themes)
;; package: command-log-mode
;; Command log mode shows the key presses and their respective emacs
;; and their respective emacs functions in a buffer.
;; Usage:
;; Enable variable: M-x command-log-mode or M-x global-command-log-mode
;; Show buffer: MX clm/toggle-command-log-buffer
(use-package command-log-mode)
;; package: ivy/counsel/swiper
;; Set up Ivy for better completions
;; Installing counsel will install ivy and swiper.
(use-package counsel
:diminish
:bind (("C-s" . swiper)
;; Counsel stuff
("M-x" . counsel-M-x)
("C-x b" . counsel-ibuffer)
("C-x C-f" . counsel-find-file)
:map minibuffer-local-map
("C-x C-r" . 'counsel-minibuffer-history)
:map ivy-minibuffer-map
("TAB" . ivy-alt-done)
("C-f" . ivy-alt-done)
("C-l" . ivy-alt-done)
("C-j" . ivy-next-line)
("C-k" . ivy-previous-line)
:map ivy-switch-buffer-map
("C-k" . ivy-previous-line)
("C-l" . ivy-done)
("C-d" . ivy-switch-buffer-kill)
:map ivy-reverse-i-search-map
("C-k" . ivy-previous-line)
("C-d" . ivy-reverse-i-search-kill))
:init
(ivy-mode 1))
;; package: ivy-rich
;; More friendly interface (display transformer) for ivy.
(use-package ivy-rich
:init
(ivy-rich-mode 1))
;; package: rainbow-delimiters
;; For any buffer that represents a programming mode, we
;; will enable rainbow-delimiters-mode.
;; This mode matches the parenthesis with same color for
;; better visibility.
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
;; package: emacs-which-key
;; This package displays available keybindings in popup.
;; config:
;; 1. Set the pop up delay to 1 seconds.
;; 2. It should popup in the minibuffer.
(use-package which-key
:init (which-key-mode)
:diminish which-key-mode
:config
(setq which-key-idle-delay 1)
(setq which-key-popup-type 'minibuffer))
;; package: helpful
(use-package helpful
:custom
(counsel-describe-function-function #'helpful-callable)
(counsel-describe-variable-function #'helpful-variable)
:bind
([remap describe-function] . counsel-describe-function)
([remap describe-command] . helpful-command)
([remap describe-variable] . counsel-describe-variable)
([remap describe-key] . helpful-key))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Key binding madness
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Make ESC quit prompts
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
;; Switch buffer
(global-set-key (kbd "C-M-j") 'counsel-switch-buffer)
(define-key emacs-lisp-mode-map (kbd "C-x M-t") 'counsel-load-theme)