(add-to-list 'load-path " ~/.emacs.d/lisp/" )
(add-hook 'prog-mode-hook 'display-line-numbers-mode )
(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 )
(add-to-list 'default-frame-alist '(alpha 85 80 ))
(when window-system (global-hl-line-mode t ))
(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 )
(display-fill-column-indicator-mode)
(add-hook 'org-mode-hook 'display-fill-column-indicator-mode )
(add-hook 'prog-mode 'display-fill-column-indicator-mode )
(use-package sudo-edit
:ensure t
:bind (" s-e" . sudo-edit))
(use-package which-key
:ensure t
:init
(which-key-mode 1 ))
(use-package dashboard
:ensure t
:config
(dashboard-setup-startup-hook)
(setq dashboard-startup-banner " ~/.emacs.d/img/dashLogo.png" )
(setq dashboard-items '((recents . 5 ))))
(use-package openwith
:ensure t
:config
(openwith-mode t )
(setq openwith-associations '((" \\ .pdf\\ '" " zathura" (file)))))
(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 " <" " >" ))
(use-package auctex
:ensure t
:defer t
:hook (LaTeX-mode .
(lambda ()
(push (list 'output-pdf " Zathura" )
TeX-view-program-selection))))
(use-package ssh
:ensure t )
(add-hook 'ssh-mode-hook
(lambda ()
(setq ssh-directory-tracking-mode t )
(shell-dirtrack-mode t )
(setq dirtrackp nil )))
(use-package rainbow-mode
:ensure t
:bind
(" s-h" . rainbow-mode))
(use-package rainbow-delimiters
:ensure t
:init
(rainbow-delimiters-mode 1 ))
(set-face-background hl-line-face " #313131" )
(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 )
(use-package magit
:ensure t )
(setq c-default-style " linux"
c-basic-offset 4 )
(use-package recompile-on-save
:ensure t )
(recompile-on-save-advice compile)
(use-package smart-compile
:ensure t
:bind
(" C-u" . smart-compile))
(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 )
(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 )
(use-package company
:ensure t
:config
(company-tng-configure-default)
(setq company-idle-delay 0.1
company-minimum-prefix-lenght 1 ))
(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" ))
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 ))))))
(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 )
(use-package org-superstar
:ensure t
:config
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1 ))))
(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))
(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 " \n DEADLINE: %^{Deadline:}t" )
(" Scheduled Task" :keys " s"
:icon (" calendar" :set " octicon" :color " orange" )
:extra " \n SCHEDULED: %^{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 " \n DEADLINE: %^{Deadline:}t" )
(" Scheduled Task" :keys " s"
:icon (" calendar" :set " octicon" :color " orange" )
:extra " \n SCHEDULED: %^{Start time:}t" )))))))
(set-org-capture-templates)
(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" )))))))))))
; ; 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 )))
(setq org-structure-template-alist
'((" el" . " src emacs-lisp\n " )))
(require 'calfw-org )
(require 'calfw )
(setq calendar-week-start-day 1 )
(setq cfw:display-calendar-holidays nil )
(global-set-key (kbd " <escape>" ) 'xah-fly-command-mode-activate )
(define-key key-translation-map (kbd " C-e" ) (kbd " C-g" ))
(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 )