Skip to content

Latest commit

 

History

History
528 lines (491 loc) · 16.8 KB

config.org

File metadata and controls

528 lines (491 loc) · 16.8 KB

Add files

(add-to-list 'load-path "~/.emacs.d/lisp/")

Better defaults

Enable number line

(add-hook 'prog-mode-hook 'display-line-numbers-mode)

Simple settings

(tool-bar-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(setq inhibit-startup-message t)
(setq make-backup-files nil)
(setq auto-save-default nil)
(setq scroll-conservatively 100)
(defalias 'yes-or-no-p 'y-or-n-p)
(global-subword-mode 1)
(setq confirm-kill-emacs 'y-or-n-p)

Frame opacity

(add-to-list 'default-frame-alist '(alpha 85 80))

Buffer defaults

(setq ibuffer-expert t)

Line highlight

(when window-system (global-hl-line-mode t))

Config reload

(defun config-reload ()
  "Reloads ~/.emacs.d/config.org at runtime"
  (interactive)
  (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
(global-set-key (kbd "C-c r") 'config-reload)

Column indicator

(display-fill-column-indicator-mode)
(add-hook 'org-mode-hook 'display-fill-column-indicator-mode)
(add-hook 'prog-mode 'display-fill-column-indicator-mode)

Packages

Convenience

Sudo edit

(use-package sudo-edit
  :ensure t
  :bind ("s-e" . sudo-edit))

Which-key

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

Dashboard

(use-package dashboard
  :ensure t
  :config
  (dashboard-setup-startup-hook)
  (setq dashboard-startup-banner "~/.emacs.d/img/dashLogo.png")
  (setq dashboard-items '((recents  . 5))))

Open in external app

(use-package openwith
  :ensure t
  :config
  (openwith-mode t)
  (setq openwith-associations '(("\\.pdf\\'" "zathura" (file)))))

Tools

Xah-Fly-Keys

(require 'xah-fly-keys)
(xah-fly-keys-set-layout "colemak-dhm")
;; put this BEFORE loading xah fly keys
;; (setq xah-fly-use-control-key nil)
(setq xah-fly-use-meta-key nil)
(xah-fly-keys 1)
(defun xah-insert-angle-bracket () (interactive) (xah-insert-bracket-pair "<" ">"))

Latex

(use-package auctex
  :ensure t
  :defer t
  :hook (LaTeX-mode .
                    (lambda ()
                      (push (list 'output-pdf "Zathura")
                            TeX-view-program-selection))))

Ssh

(use-package ssh
  :ensure t)
(add-hook 'ssh-mode-hook
          (lambda ()
            (setq ssh-directory-tracking-mode t)
            (shell-dirtrack-mode t)
            (setq dirtrackp nil)))

Visual

Rainbow

(use-package rainbow-mode
  :ensure t
  :bind
  ("s-h" . rainbow-mode))

Rainbow-delimiters

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

Theme

(set-face-background hl-line-face "#313131")

Mode line

(use-package doom-modeline
  :ensure t
  :init (doom-modeline-mode 1))
(setq doom-modeline-icon nil)
(setq doom-modeline-buffer-encoding nil)
(setq doom-modeline-minor-modes nil)
(setq doom-modeline-modal nil)
(setq line-number-mode nil)

Programmig

Magit

(use-package magit
  :ensure t)

GNU style indenting

(setq c-default-style "linux"
      c-basic-offset 4)

Compilation (C)

(use-package recompile-on-save
  :ensure t)
(recompile-on-save-advice compile)

(use-package smart-compile
  :ensure t
  :bind
  ("C-u" . smart-compile))

Show compilation buffer

(defun brian-compile-finish (buffer outstr)
  (unless (string-match "finished" outstr)
    (switch-to-buffer-other-window buffer))
  t)

(setq compilation-finish-functions 'brian-compile-finish)

(defadvice compilation-start
    (around inhibit-display
            (command &optional mode name-function highlight-regexp))
  (if (not (string-match "^\\(find\\|grep\\)" command))
      (flet ((display-buffer)
             (set-window-point)
             (goto-char))
        (fset 'display-buffer 'ignore)
        (fset 'goto-char 'ignore)
        (fset 'set-window-point 'ignore)
        (save-window-excursion
          ad-do-it))
    ad-do-it))

(ad-activate 'compilation-start)

Language server protocol

(use-package lsp-mode
  :ensure t
  :bind (:map lsp-mode-map
		("C-c d" . lsp-describe-thing-at-point))
  :config
  (lsp-enable-which-key-integration t))
(use-package flycheck
  :ensure t)

Completions

(use-package company
  :ensure t
  :config
  (company-tng-configure-default)
  (setq company-idle-delay 0.1
        company-minimum-prefix-lenght 1))

Golang

(use-package go-mode
  :ensure t
  :hook ((go-mode . lsp-deferred)
         (go-mode . company-mode))
  :bind (:map go-mode-map
              ("<f5>" . gofmt))
  :config
  (require 'lsp-go)
  ;; GOPATH/bin
  (add-to-list 'exec-path "~/Programming/golang/bin")
  ;; add imports
  (setq gofmt-command "goimports"))

Functions

Increment/Decrement number

(defun increment-number-at-point ()
  (interactive)
  (skip-chars-backward "0-9")
  (or (looking-at "[0-9]+")
      (error "No number at point"))
  (replace-match (number-to-string (1+ (string-to-number (match-string 0))))))

(defun decrement-number-at-point ()
  (interactive)
  (skip-chars-backward "0-9")
  (or (looking-at "[0-9]+")
      (error "No number at point"))
  (replace-match (number-to-string (1- (string-to-number (match-string 0))))))

Org mode

Common settings

(setq org-ellipsis " ")
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
(setq org-confirm-babel-evaluate nil)
(setq org-export-with-smart-quotes t)
(setq org-src-window-setup 'current-window)
(add-hook 'org-mode-hook 'org-indent-mode)

Org-superstar

(use-package org-superstar
  :ensure t
  :config
  (add-hook 'org-mode-hook (lambda () (org-superstar-mode 1))))

Org agenda

Better defaults

(setq org-agenda-span 10)
;; (setq org-agenda-span 10
      ;; org-agenda-start-on-weekday nil
      ;; org-agenda-start-day "-1d")

Better syntax for org-capture-template

(use-package doct
  :ensure t
  ;;recommended: defer until calling doct
  :commands (doct))

Creating templater

(defvar +org-capture-todo-file  "/home/ethan/Docs/self/agenda/todo.org")
(defvar +org-capture-interesting-file  "/home/ethan/Docs/self/agenda/intesenting.org")
;; (defvar +org-capture-agenda-file  "/home/ethan/Docs/self/agenda/agenda.org")
;; (defvar +org-capture-personal-file  "/home/ethan/Docs/self/agenda/personal.org")
;; (defvar +org-capture-college-file  "/home/ethan/Docs/self/agenda/college.org")

(defun set-org-capture-templates ()
  (setq org-capture-templates
        (doct `(("Personal todo" :keys "t"
                 :icon ("checklist" :set "octicon" :color "green")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "TODO's"
                 :type entry
                 :template ("* TODO %?"
                            "%i %a"))
                ("Personal note" :keys "n"
                 :icon ("sticky-note-o" :set "faicon" :color "green")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "Notes"
                 :type entry
                 :template ("* %?"
                            "%i %a"))

                ("Interesting" :keys "i"
                 :icon ("eye" :set "faicon" :color "lcyan")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "Interesting"
                 :type entry
                 :template ("* [ ] %{desc}%? :%{i-type}:"
                            "%i %a")
                 :children (("Webpage" :keys "w"
                             :icon ("globe" :set "faicon" :color "green")
                             :desc "%(org-cliplink-capture) "
                             :i-type "read:web")
                            ("Article" :keys "a"
                             :icon ("file-text" :set "octicon" :color "yellow")
                             :desc ""
                             :i-type "read:reaserch")
                            ("Information" :keys "i"
                             :icon ("info-circle" :set "faicon" :color "blue")
                             :desc ""
                             :i-type "read:info")
                            ("Idea" :keys "I"
                             :icon ("bubble_chart" :set "material" :color "silver")
                             :desc ""
                             :i-type "idea")))
                ("Tasks" :keys "k"
                 :icon ("inbox" :set "octicon" :color "yellow")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "Tasks"
                 :type entry
                 :template ("* TODO %? %^G%{extra}"
                            "%i %a")
                 :children (("General Task" :keys "k"
                             :icon ("inbox" :set "octicon" :color "yellow")
                             :extra "")
                            ("Task with deadline" :keys "d"
                             :icon ("timer" :set "material" :color "orange" :v-adjust -0.1)
                             :extra "\nDEADLINE: %^{Deadline:}t")
                            ("Scheduled Task" :keys "s"
                             :icon ("calendar" :set "octicon" :color "orange")
                             :extra "\nSCHEDULED: %^{Start time:}t")))
                ("WAITING" :keys "w"
                 :icon ("inbox" :set "octicon" :color "yellow")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "Waiting"
                 :type entry
                 :template ("** WAITING %?"
                            "%i %a"))

                ("College" :keys "c"
                 :icon ("inbox" :set "octicon" :color "yellow")
                 :file +org-capture-todo-file
                 :prepend t
                 :headline "Tasks"
                 :type entry
                 :template ("* TODO %? %^G%{extra}"
                            "%i %a")
                 :children (("General Task" :keys "k"
                             :icon ("inbox" :set "octicon" :color "yellow")
                             :extra "")
                            ("Task with deadline" :keys "d"
                             :icon ("timer" :set "material" :color "orange" :v-adjust -0.1)
                             :extra "\nDEADLINE: %^{Deadline:}t")
                            ("Scheduled Task" :keys "s"
                             :icon ("calendar" :set "octicon" :color "orange")
                             :extra "\nSCHEDULED: %^{Start time:}t")))))))
(set-org-capture-templates)

Org-super-agenda

(use-package org-super-agenda
  :ensure t
  :commands org-super-agenda-mode)
(org-super-agenda-mode)

(setq org-agenda-skip-scheduled-if-done t
      org-agenda-skip-deadline-if-done t
      org-agenda-include-deadlines t
      org-agenda-block-separator nil
      org-agenda-tags-column 100 ;; from testing this seems to be a good value
      org-agenda-compact-blocks t)

(setq org-agenda-custom-commands
      '(("o" "Overview"
         ((agenda "" ((org-agenda-span 'day)
                      (org-super-agenda-groups
                       '((:name "Today"
                                :time-grid t
                                :date today
                                :todo "TODAY"
                                :scheduled today
                                :order 1)))))
          (alltodo "" ((org-agenda-overriding-header "")
                       (org-super-agenda-groups
                        '(
                          (:name "Next to do"
                                 :todo "NEXT"
                                 :order 1)
                          ;; (:name "Important"
                          ;; :tag "Important"
                          ;; :priority "A"
                          ;; :order 6)
                          (:name "Calendar"
                                 :todo "TODO"
                                 :order 2)
                          (:name "Due Today"
                                 :deadline today
                                 :order 1)
                          (:name "Due Soon"
                                 :deadline future
                                 :order 8)
                          (:name "Overdue"
                                 :deadline past
                                 :face error
                                 :order 7)
                          ;; (:name "Assignments"
                          ;; :tag "Assignment"
                          ;; :order 10)
                          ;; (:name "Issues"
                          ;; :tag "Issue"
                          ;; :order 12)
                          (:name "Emacs"
                                 :tag "Emacs"
                                 :order 13)
                          ;; (:name "Projects"
                          ;; :tag "Project"
                          ;; :order 14)
                          ;; (:name "Research"
                          ;; :tag "Research"
                          ;; :order 15)
                          (:name "To read"
                                 :tag "Read"
                                 :order 30)
                          (:name "Waiting"
                                 :todo "WAITING"
                                 :order 20)
                          (:name "Trivial"
                                 :priority<= "E"
                                 :tag ("Trivial" "Unimportant")
                                 :todo ("SOMEDAY" )
                                 :order 90)
                          (:discard (:tag ("Chore" "Routine" "Daily")))))))))))

Org todo keywords

;; Include the todo keywords
(setq org-fast-tag-selection-include-todo t)

;; == Custom State Keywords ==
(setq org-use-fast-todo-selection t)
(setq org-todo-keywords
      '((sequence "TODO(t)" "NEXT(n)" "PROJ(p)" "|" "DONE(d)")
        (sequence "TASK(T)")
        (sequence "AMOTIVATOR(MA)" "TMOTIVATOR(MT)" "CMOTIVATOR(MC)" "|")
        (sequence "WAITING(w@/!)" "INACTIVE(i)" "SOMEDAY(s)" "|" "CANCELLED(c@/!)")))
;; Custom colors for the keywords
(setq org-todo-keyword-faces
      '(("TODO" :foreground "red" :weight bold)
        ("TASK" :foreground "#5C888B" :weight bold)
        ("NEXT" :foreground "#5C999B" :weight bold)
        ("PROJ" :foreground "magenta" :weight bold)
        ("AMOTIVATOR" :foreground "#F06292" :weight bold)
        ("TMOTIVATOR" :foreground "#AB47BC" :weight bold)
        ("CMOTIVATOR" :foreground "#5E35B1" :weight bold)
        ("DONE" :foreground "forest green" :weight bold)
        ("WAITING" :foreground "orange" :weight bold)
        ("INACTIVE" :foreground "magenta" :weight bold)
        ("SOMEDAY" :foreground "cyan" :weight bold)
        ("CANCELLED" :foreground "forest green" :weight bold)))

Structure templates

(setq org-structure-template-alist
      '(("el" . "src emacs-lisp\n")))

Calfw

(require 'calfw-org)
(require 'calfw)
(setq calendar-week-start-day 1)
(setq cfw:display-calendar-holidays nil)

Keybindings

Xah-Fly-Keys

(global-set-key (kbd "<escape>") 'xah-fly-command-mode-activate)
(define-key key-translation-map (kbd "C-e") (kbd "C-g"))

Org-mode

(global-set-key (kbd "C-c '") 'org-edit-src-code)
(global-set-key (kbd "<f12>") 'org-agenda)
(global-set-key (kbd "<f11>") 'cfw:open-org-calendar)
(global-set-key (kbd "C-c c") 'org-capture)