the cutest emacs config!
;; syntax highlighting
(setq font-lock-maximum-decoration t)
(global-font-lock-mode t)
;; syntax highlighting for cxx (why doesn't this just work?)
;;(add-hook 'c++-mode-hook #'font-lock-mode)
;; line numbers
(setq-default line-number-mode t)
(global-display-line-numbers-mode 1)
;; line numbers relative to current cursor position
(setq-default display-line-numbers-type 'relative)
(setq-default column-number-mode t)
;; c style
(setq-default
c-default-style "k&r"
c-basic-offset 4)
;; 4-space indents
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq-default tab-stop-list 4)
(setq-default electric-indent-inhibit t)
;;(setq-default indent-line-function 'insert-tab)
;; automatically complete brackets/quotes
(setq-default electric-pair-pairs '(
(?\( . ?\))
(?\[ . ?\])
(?\{ . ?\})
(?\" . ?\")
(?\' . ?\')
))(setq-default inhibit-splash-screen t)
(setq-default initial-scratch-message nil)
(setq-default inhibit-startup-message t)
(setq-default ring-bell-function 'ignore)
(setq-default backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq-default auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
(electric-pair-mode t)
(when window-system
(scroll-bar-mode -1)
(tool-bar-mode -1)
(menu-bar-mode -1)
(global-prettify-symbols-mode t));; from stackexchange user "Ole"
;; Makes *scratch* empty.
(setq initial-scratch-message "")
;; Removes *scratch* from buffer after the mode has been set.
;;(defun remove-scratch-buffer ()
;; (if (get-buffer "*scratch*")
;; (kill-buffer "*scratch*")))
;;(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)
;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
;;(kill-buffer "*Messages*")
;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
'(lambda ()
(let ((buffer "*Completions*"))
(and (get-buffer buffer)
(kill-buffer buffer)))))
;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)non-coding related editing enhancements
;; highlight current line
(global-hl-line-mode t)
;; interactively do things in minibuffers
(ido-mode t);; open org files with everything collapsed
(setq-default org-startup-folded t)
;; automatically display embedded images
(add-hook 'org-mode-hook 'org-display-inline-images) ;; automatically start an emacs server with emacs, since we use emacsclient in the terminal
(server-start)(defvar my-term-shell "/bin/zsh")
(defadvice ansi-term (before force-bash)
(interactive (list my-term-shell)))
(ad-activate 'ansi-term)actual themeing is done through the ewal package below
;; larger modeline
(add-hook 'find-file-hook (lambda () (set-face-attribute 'mode-line nil :height 175)))
;; custom font
(custom-set-faces
'(default ((t (:inherit nil :extend nil :stipple nil :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 145 :width normal :foundry "outline" :family "azukifontB")))))
;; modeline stuff
(size-indication-mode)
(display-time-mode)we’ll use erc as our client because why not
;; moar width
(setq erc-fill-column 135)
;; Protect me from accidentally sending excess lines.
(setq erc-inhibit-multiline-input t)
(setq erc-send-whitespace-lines t)
(setq erc-ask-about-multiline-input t)
;; Scroll all windows to prompt when submitting input.
(setq erc-scrolltobottom-all t);; dired-mode
(setq dired-kill-when-opening-new-dired-buffer t)
(setq dired-dwim-target t)keeps code properly indented
; (use-package aggressive-indent
; :ensure t
; :init
; (add-hook 'prog-mode-hook 'aggressive-indent-mode))find cursor after moving
(use-package beacon
:ensure t
:init
(beacon-mode 1))little autocomplete box
(use-package company
:ensure t
:init
(setq company-minimum-prefix-length 1
company-idle-delay 0.0)
(add-hook 'after-init-hook 'global-company-mode))add a nice dashboard
(use-package dashboard
:ensure t
:config
(dashboard-setup-startup-hook)
(setq dashboard-items '((recents . 10)))
;; (setq dashboard-banner-logo-title )
(setq dashboard-center-content t)
(setq dashboard-startup-banner "~/.emacs.d/images/patchouli.png"))dim inactive windows
(use-package dimmer
:ensure t
:config
(progn
(setq dimmer-fraction 0.75)
(setq dimmer-adjustment-mode :foreground)
(dimmer-configure-which-key)
(dimmer-configure-magit))
:init
(dimmer-mode t))load various things from a .editorconfig file
(use-package editorconfig
:ensure t
:config
(editorconfig-mode 1))set our discord status
(use-package elcord
:ensure t
:init
(elcord-mode 1)) ;; irc client stuffs
(use-package erc
:custom
;;(erc-autojoin-channels-alist '(("freenode.net" "#archlinux" "#bash" "#bitcoin"
;; "#emacs" "#gentoo" "#i3" "#latex" "#org-mode" "#python")))
(erc-autojoin-timing 'ident)
(erc-fill-function 'erc-fill-static)
(erc-fill-static-center 22)
(erc-hide-list '("JOIN" "PART" "QUIT"))
(erc-lurker-hide-list '("JOIN" "PART" "QUIT"))
(erc-lurker-threshold-time 43200)
(erc-prompt-for-nickserv-password nil)
(erc-server-reconnect-attempts 5)
(erc-server-reconnect-timeout 3)
(erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT"
"324" "329" "332" "333" "353" "477"))
:config
(add-to-list 'erc-modules 'notifications)
(add-to-list 'erc-modules 'spelling)
(erc-services-mode 1)
(erc-log-mode)
;; this directory needs to be manually created
;; http://www.nihamkin.com/2013/12/04/how-to-enable-logging-of-chat-sessions-in-erc/
(setq erc-log-channels-directory "~/.emacs.d/erc/logs/")
(setq erc-generate-log-file-name-function (quote erc-generate-log-file-name-with-date))
(setq erc-save-buffer-on-part nil)
(setq erc-save-queries-on-quit nil)
(setq erc-log-write-after-insert t)
(setq erc-log-write-after-send t)
(erc-update-modules))
generate color scheme automatically from pywal
(use-package ewal
:ensure t
:init (setq ewal-use-built-in-always-p nil
ewal-use-built-in-on-failure-p t
ewal-json-file "~/.cache/wal/colors.json"
ewal-built-in-palette "sexy-material"))
(use-package ewal-spacemacs-themes
:ensure t
:init (progn
(show-paren-mode +1)
(global-hl-line-mode))
:config (progn
(load-theme 'ewal-spacemacs-modern t)
(enable-theme 'ewal-spacemacs-modern)))(use-package protobuf-mode
:ensure t
:init)
(use-package sourcepawn-mode
:ensure t
:init)
(use-package typescript-mode
:ensure t
:init)on the fly error checking
(use-package flycheck
:ensure t
:init
(add-hook 'after-init-hook #'global-flycheck-mode))smooth scrolling, better than the built in pixel-scroll mode
(use-package good-scroll
:ensure t
:init
(good-scroll-mode 1))show the line while entering it
(use-package goto-line-preview
:ensure t
:init)
(global-set-key [remap goto-line] 'goto-line-preview)language server protocol
(use-package lsp-mode
:ensure t
:init
(setq lsp-keymap-prefix "C-c l"
lsp-idle-delay 0.1)
;;:hook ((c++-mode . clangd)
;; (python-mode . lsp)
;; (c-mode . clangd)
;; (csharp-mode . omnisharp))
:commands lsp)
(use-package lsp-ui
:ensure t
:init
(lsp-ui-mode t))lua stuffs
(use-package lua-mode
:ensure t
:init)git client in emacs
(use-package magit
:ensure t
:bind (("C-x g" . magit-status)
("C-x C-g" . magit-status)));; lets you edit multiple lines at once ; #+BEGIN_SRC emacs-lisp :tangle yes ; (use-package multiple-cursors ; :ensure t) ; #+END_SRC
switch buffers with ctrl+tab
(use-package pc-bufsw
:ensure t
:config
(pc-bufsw t))highlight delimiters
(use-package rainbow-delimiters
:ensure t
:init
(rainbow-delimiters-mode 1))cool search minibuffer thing
(use-package swiper
:ensure t
:bind ("C-s" . 'swiper))show a nice little file view with M-x treemacs
(use-package treemacs
:ensure t)
(use-package lsp-treemacs
:ensure t)track emacs usage https://wakatime.com/emacs
(when (load-file "~/.emacs.d/pass.el")
(use-package wakatime-mode
:ensure t
:config
(setq-default wakatime-cli-path "~/.wakatime/wakatime-cli"
wakatime-api-key wakatime-pass)
:init
(global-wakatime-mode)))show key bindings
(use-package which-key
:ensure t
:init
(which-key-mode))autocomplete for company-mode
(use-package yasnippet
:ensure t
:init
(yas-global-mode 1))