Skip to content

lilac1337/patchoulimacs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

patchouli(emacs) config

./images/patchouli.png

the cutest emacs config!

emacs tweaks

coding improvements

;; 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 '(
                            (?\( . ?\))
                            (?\[ . ?\])
                            (?\{ . ?\})
                            (?\" . ?\")
                            (?\' . ?\')
                            ))

disable junk

(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))

disable buffers i don’t use

;; 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)

editing improvements

non-coding related editing enhancements

;; highlight current line
(global-hl-line-mode t)

;; interactively do things in minibuffers
(ido-mode t)

org mode

;; 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)  

server

;; automatically start an emacs server with emacs, since we use emacsclient in the terminal
(server-start)

terminal

(defvar my-term-shell "/bin/zsh")
(defadvice ansi-term (before force-bash)
  (interactive (list my-term-shell)))
(ad-activate 'ansi-term)

themeing

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)

irc

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)

other

;; dired-mode
(setq dired-kill-when-opening-new-dired-buffer t)
(setq dired-dwim-target t)

packages

aggressive indent (disabled)

keeps code properly indented

;  (use-package aggressive-indent
;    :ensure t
;    :init
;    (add-hook 'prog-mode-hook 'aggressive-indent-mode))

beacon

find cursor after moving

(use-package beacon
  :ensure t
  :init
  (beacon-mode 1))

company-mode

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))

dashboard

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"))

dimmer

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))

editorconfig

load various things from a .editorconfig file

(use-package editorconfig
    :ensure t
    :config
    (editorconfig-mode 1))

elcord

set our discord status

(use-package elcord
  :ensure t
  :init
  (elcord-mode 1))

erc

    ;; 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))
  

ewal

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)))

extra languages

(use-package protobuf-mode
  :ensure t
  :init)

(use-package sourcepawn-mode
  :ensure t
  :init)

(use-package typescript-mode
  :ensure t
  :init)

flycheck

on the fly error checking

(use-package flycheck
  :ensure t
  :init
  (add-hook 'after-init-hook #'global-flycheck-mode))

good-scroll

smooth scrolling, better than the built in pixel-scroll mode

(use-package good-scroll
  :ensure t
  :init
  (good-scroll-mode 1))

goto-line preview

show the line while entering it

(use-package goto-line-preview
  :ensure t
  :init)

(global-set-key [remap goto-line] 'goto-line-preview)

lsp-mode

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-mode

lua stuffs

(use-package lua-mode
  :ensure t
  :init)

magit

git client in emacs

(use-package magit
  :ensure t
  :bind (("C-x g" . magit-status)
         ("C-x C-g" . magit-status)))

multiple-cursors (disabled)

;; lets you edit multiple lines at once ; #+BEGIN_SRC emacs-lisp :tangle yes ; (use-package multiple-cursors ; :ensure t) ; #+END_SRC

pc-bufsw

switch buffers with ctrl+tab

(use-package pc-bufsw
  :ensure t
  :config
  (pc-bufsw t))

rainbow-delimiters

highlight delimiters

(use-package rainbow-delimiters
  :ensure t
  :init
  (rainbow-delimiters-mode 1))

swiper

cool search minibuffer thing

(use-package swiper
  :ensure t
  :bind ("C-s" . 'swiper))

treemacs

show a nice little file view with M-x treemacs

(use-package treemacs
  :ensure t)

(use-package lsp-treemacs
  :ensure t)

wakatime

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)))

which-key

show key bindings

(use-package which-key
  :ensure t
  :init
  (which-key-mode))

yasnippet

autocomplete for company-mode

(use-package yasnippet
  :ensure t
  :init
  (yas-global-mode 1))

About

the cutest emacs config!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors