You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.5 KiB
198 lines
6.5 KiB
;; Set enironment information
|
|
(setq user-full-name "Drew Short")
|
|
(setq user-email-address "warrick@sothr.com")
|
|
|
|
;; Set UTF-8 as the default encoding
|
|
(prefer-coding-system 'utf-8)
|
|
(setq coding-system-for-read 'utf-8)
|
|
(setq coding-system-for-write 'utf-8)
|
|
|
|
;; Load common lisp
|
|
(require 'cl)
|
|
|
|
;; Package management
|
|
(load "package")
|
|
(package-initialize)
|
|
|
|
;; Theme packages
|
|
(defvar sothr/themes '(cyberpunk-theme) "Themes")
|
|
|
|
;; Tool packages
|
|
(defvar sothr/tools '(auto-complete
|
|
better-defaults
|
|
gist
|
|
projectile
|
|
magit
|
|
neotree
|
|
slime)
|
|
"Tools")
|
|
|
|
;; Additional mode packages
|
|
(defvar sothr/modes '(markdown-mode
|
|
go-mode
|
|
rust-mode
|
|
yaml-mode)
|
|
"Modes")
|
|
|
|
;; Org mode specific packages
|
|
(defvar sothr/org '(org
|
|
org-ac
|
|
org-autolist
|
|
org-bullets
|
|
org-doing)
|
|
"Org Mode Packages")
|
|
|
|
;; Combine the package lists
|
|
(defvar sothr/packages (append sothr/themes sothr/tools sothr/modes sothr/org) "Default Packages")
|
|
|
|
;; Repositories
|
|
(add-to-list 'package-archives
|
|
'("melpa" . "http://melpa.milkbox.net/packages/") t)
|
|
|
|
(setq package-archive-enable-alist '(("melpa" deft magit)))
|
|
|
|
;; Advice from the melpa site for a package dependency validation error in emacs 24
|
|
;;(defadvice package-compute-transaction
|
|
;; (before package-compute-transaction-reverse (package-list requirements) activate compile)
|
|
;; "reverse the requirements"
|
|
;; (setq requirements (reverse requirements))
|
|
;; (print requirements))
|
|
|
|
;; Make sure default packages are installed
|
|
(defun sothr/packages-installed-p ()
|
|
(loop for pkg in sothr/packages
|
|
when (not (package-installed-p pkg)) do (return nil)
|
|
finally (return t)))
|
|
|
|
;; This is the logic that runs the above function
|
|
(unless (sothr/packages-installed-p)
|
|
(message "%s" "Refreshing package database...")
|
|
(package-refresh-contents)
|
|
(dolist (pkg sothr/packages)
|
|
(when (not (package-installed-p pkg))
|
|
(package-install pkg))))
|
|
|
|
;; Disable emacs help screen
|
|
(setq inhibit-splash-screen t)
|
|
|
|
;; Emable emacs copying from X11
|
|
(setq x-select-enable-clipboard t)
|
|
|
|
;; Always follow symbolic links back to the source file in version control
|
|
(setq x-select-enable-clipboard t)
|
|
|
|
;; Markdown Mode Configuration
|
|
(autoload 'markdown-mode "markdown-mode"
|
|
"Major mode for editing Markdown files" t)
|
|
(add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
|
|
|
|
;; Set the markdown processor to grip
|
|
;; pip3 install grip
|
|
(setq markdown-command "grip --export -")
|
|
|
|
;; Set NeoTree to toggle with F8
|
|
(global-set-key [f8] 'neotree-toggle)
|
|
|
|
;; Default configuration for auto-complete
|
|
(ac-config-default)
|
|
|
|
;; Make all files show a line number
|
|
(global-linum-mode)
|
|
;; Make sure that there is spacing in linum mode
|
|
;(setq linum-format "%4d \u2502 ") ;; Fancy line with vertical bar
|
|
;; Dynamic width for lines for convienient right justification
|
|
(unless window-system
|
|
(add-hook 'linum-before-numbering-hook
|
|
(lambda ()
|
|
(setq-local linum-format-fmt
|
|
(let ((w (length (number-to-string
|
|
(count-lines (point-min) (point-max))))))
|
|
(concat "%" (number-to-string w) "d"))))))
|
|
|
|
(defun linum-format-func (line)
|
|
(concat
|
|
(propertize (format linum-format-fmt line) 'face 'linum)
|
|
(propertize " " 'face 'mode-line)))
|
|
|
|
(unless window-system
|
|
(setq linum-format 'linum-format-func))
|
|
|
|
;; Configure SLIME
|
|
;; Inferior Lisp interpreter is found at $CL_BIN
|
|
(setq inferior-lisp-program (getenv "CL_BIN"))
|
|
(setq slime-contribs '(slime-fancy))
|
|
|
|
;; A method create a lambda that switches between
|
|
;; themes with the press of a button
|
|
;; Emcas requires explicit closures otherwise they're
|
|
;; abandoned at runtime and cryptic errors occur
|
|
(let ((next nil) (themes nil))
|
|
(defun make-theme-switcher (theme_list)
|
|
(setf themes theme_list)
|
|
#'(lambda ()
|
|
(setf next (pop themes))
|
|
;; Move the first entry in the list to the last
|
|
(setf themes (append themes (list next)))
|
|
;; Load the theme that was next in the list
|
|
(load-theme next t))))
|
|
|
|
;; create a function to loop over and apply themes
|
|
(setf load-next-theme (make-theme-switcher '(cyberpunk adwaita)))
|
|
|
|
;; Load the first theme as the default theme
|
|
(funcall load-next-theme)
|
|
|
|
;; Toggle theme switch with F3
|
|
(global-set-key [f3] (lambda ()
|
|
(interactive)
|
|
(funcall load-next-theme)))
|
|
|
|
;; Set the autoencrypt feature of emacs for .gpg files
|
|
(require `epa-file)
|
|
(epa-file-enable)
|
|
|
|
;; Windows specific configuration
|
|
;; A Linux environment is assumed by default
|
|
;(defun windows-config ()
|
|
;; When running in Windows, we want to use an alternate shell so we
|
|
;; can be more unixy.
|
|
;(setq shell-file-name "c:/Tools/msys64/usr/bin/zsh")
|
|
;(setq explicit-shell-file-name shell-file-name)
|
|
;(setq explicit-zsh-args '("-i")) ; Make sure the shell is in the home
|
|
;(setenv "HOME" "c:/tools/msys64/home/neria")) ; Set the home environment correctly
|
|
;(setenv "PATH"
|
|
;(concat ".:/usr/local/bin:/msys64/bin:/bin:"
|
|
;(replace-regexp-in-string "/////" "\\\\ "
|
|
;(replace-regexp-in-string "\\\\" "/"
|
|
;(replace-regexp-in-string "\\([A-Za-z]\\):" "/\\1"
|
|
;(getenv "PATH")))))))
|
|
|
|
;; Windows specific configurations
|
|
;(cond
|
|
;((string-equal system-type "windows-nt") ; MS Windows System
|
|
;(windows-config)))
|
|
|
|
;; Advice for open files as root if we don't have enough permissions
|
|
(defadvice ido-find-file (after find-file-sudo activate)
|
|
"Find file as root if necessary."
|
|
(unless (and buffer-file-name
|
|
(file-writable-p buffer-file-name))
|
|
(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
|
|
|
|
(custom-set-variables
|
|
;; custom-set-variables was added by Custom.
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
;; Your init file should contain only one such instance.
|
|
;; If there is more than one, they won't work right.
|
|
'(package-selected-packages
|
|
(quote
|
|
(org-doing org-bullets org-autolist org-ac better-defaults yaml-mode slime rust-mode projectile markdown-mode magit go-mode gist cyberpunk-theme auto-complete))))
|
|
|
|
(custom-set-faces
|
|
;; custom-set-faces was added by Custom.
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
;; Your init file should contain only one such instance.
|
|
;; If there is more than one, they won't work right.
|
|
)
|