2015-06-06 06:40:33 -04:00
|
|
|
;;; core.el --- The heart of the beast
|
2015-06-04 18:23:21 -04:00
|
|
|
;;
|
2015-06-06 06:40:33 -04:00
|
|
|
;;; Naming conventions:
|
2015-06-04 18:23:21 -04:00
|
|
|
;;
|
2016-05-12 22:11:43 -04:00
|
|
|
;; narf-… A public variable/constant or function
|
|
|
|
;; narf--… An internal variable or function (non-interactive)
|
|
|
|
;; narf/… An autoloaded interactive function
|
|
|
|
;; narf:… An ex command
|
|
|
|
;; narf|… A hook
|
|
|
|
;; narf*… An advising function
|
|
|
|
;; narf.… Custom prefix commands
|
|
|
|
;; …! Macro
|
2015-06-04 18:23:21 -04:00
|
|
|
;;
|
2016-05-12 22:11:43 -04:00
|
|
|
;; Autoloaded functions are in {core,modules}/defuns/defuns-*.el
|
2016-03-03 15:04:14 -05:00
|
|
|
;;
|
2015-09-30 13:47:57 -04:00
|
|
|
;;;
|
2015-06-04 18:23:21 -04:00
|
|
|
|
2015-12-11 22:43:55 -05:00
|
|
|
(setq-default
|
2016-04-21 00:31:54 -04:00
|
|
|
;; stop package.el from being annoying. I rely solely on Cask.
|
|
|
|
package--init-file-ensured t
|
|
|
|
package-enable-at-startup nil
|
|
|
|
package-archives
|
|
|
|
'(("gnu" . "http://elpa.gnu.org/packages/")
|
|
|
|
("melpa" . "http://melpa.org/packages/")
|
|
|
|
("org" . "http://orgmode.org/elpa/"))
|
|
|
|
|
2015-10-01 13:48:48 -04:00
|
|
|
ad-redefinition-action 'accept ; silence the advised function warnings
|
2015-11-17 21:48:21 -05:00
|
|
|
compilation-always-kill t ; kill compilation process before spawning another
|
|
|
|
compilation-ask-about-save nil ; save all buffers before compiling
|
|
|
|
compilation-scroll-output t ; scroll with output while compiling
|
2016-04-08 16:15:37 -04:00
|
|
|
delete-by-moving-to-trash t
|
|
|
|
echo-keystrokes 0.02 ; show me what I type
|
2015-06-06 06:40:33 -04:00
|
|
|
ediff-diff-options "-w"
|
|
|
|
ediff-split-window-function 'split-window-horizontally ; side-by-side diffs
|
|
|
|
ediff-window-setup-function 'ediff-setup-windows-plain ; no extra frames
|
2016-04-08 16:15:37 -04:00
|
|
|
enable-recursive-minibuffers nil ; no minibufferception
|
|
|
|
idle-update-delay 2 ; update a little less often
|
2015-09-30 13:47:57 -04:00
|
|
|
inhibit-startup-echo-area-message "hlissner" ; username shuts up emacs
|
|
|
|
inhibit-startup-screen t ; don't show emacs start screen
|
2015-11-17 21:48:21 -05:00
|
|
|
initial-major-mode 'text-mode ; initial scratch buffer mode
|
2016-04-08 16:15:37 -04:00
|
|
|
initial-scratch-message nil
|
2015-09-30 13:47:57 -04:00
|
|
|
major-mode 'text-mode
|
2016-04-08 16:15:37 -04:00
|
|
|
ring-bell-function 'ignore ; silence of the bells!
|
|
|
|
save-interprogram-paste-before-kill nil
|
|
|
|
sentence-end-double-space nil
|
2015-06-06 06:40:33 -04:00
|
|
|
|
|
|
|
;; remove annoying ellipsis when printing sexp in message buffer
|
|
|
|
eval-expression-print-length nil
|
|
|
|
eval-expression-print-level nil
|
|
|
|
|
2016-04-08 16:15:37 -04:00
|
|
|
;; http://ergoemacs.org/emacs/emacs_stop_cursor_enter_prompt.html
|
|
|
|
minibuffer-prompt-properties
|
|
|
|
'(read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt)
|
|
|
|
|
2015-06-06 06:40:33 -04:00
|
|
|
bookmark-save-flag t
|
2016-03-27 00:49:52 -04:00
|
|
|
bookmark-default-file (concat narf-temp-dir "/bookmarks")
|
2015-11-17 21:48:21 -05:00
|
|
|
|
|
|
|
;; Disable all backups (that's what git/dropbox are for)
|
2016-04-26 02:00:19 -04:00
|
|
|
history-length 1000
|
|
|
|
vc-make-backup-files nil
|
2015-06-06 06:40:33 -04:00
|
|
|
auto-save-default nil
|
2016-03-27 00:49:52 -04:00
|
|
|
auto-save-list-file-name (concat narf-temp-dir "/autosave")
|
2015-06-06 06:40:33 -04:00
|
|
|
make-backup-files nil
|
|
|
|
create-lockfiles nil
|
2016-03-27 00:49:52 -04:00
|
|
|
backup-directory-alist `((".*" . ,(concat narf-temp-dir "/backup/")))
|
2015-06-06 06:40:33 -04:00
|
|
|
|
|
|
|
;; Remember undo history
|
2016-03-09 21:39:21 -05:00
|
|
|
undo-tree-auto-save-history nil
|
2016-03-27 00:49:52 -04:00
|
|
|
undo-tree-history-directory-alist `(("." . ,(concat narf-temp-dir "/undo/"))))
|
2015-06-04 18:23:21 -04:00
|
|
|
|
2016-03-03 15:04:14 -05:00
|
|
|
;; UTF-8 please
|
2015-09-30 13:47:57 -04:00
|
|
|
(setq locale-coding-system 'utf-8) ; pretty
|
|
|
|
(set-terminal-coding-system 'utf-8) ; pretty
|
|
|
|
(set-keyboard-coding-system 'utf-8) ; pretty
|
|
|
|
(set-selection-coding-system 'utf-8) ; please
|
|
|
|
(prefer-coding-system 'utf-8) ; with sugar on top
|
2016-03-10 23:54:56 -05:00
|
|
|
(set-charset-priority 'unicode)
|
|
|
|
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
|
|
|
|
|
2015-09-30 13:47:57 -04:00
|
|
|
|
2016-04-05 23:58:32 -04:00
|
|
|
;;
|
|
|
|
;; Variables
|
|
|
|
;;
|
|
|
|
|
|
|
|
(defvar narf-leader-prefix "," "Prefix key for <leader> maps")
|
|
|
|
(defvar narf-localleader-prefix "\\" "Prefix key for <localleader> maps")
|
|
|
|
|
|
|
|
;; Buffers/Files
|
|
|
|
(defvar narf-unreal-buffers '("^ ?\\*.+\\*"
|
|
|
|
image-mode
|
|
|
|
dired-mode
|
|
|
|
reb-mode
|
|
|
|
messages-buffer-mode)
|
|
|
|
"A list of regexps or modes whose buffers are considered unreal, and will be
|
|
|
|
ignored when using `narf:next-real-buffer' and `narf:previous-real-buffer', and
|
|
|
|
killed by `narf/kill-unreal-buffers'.
|
|
|
|
|
2016-05-12 22:11:43 -04:00
|
|
|
`narf/kill-real-buffer' will also gloss over these buffers when finding a new
|
2016-04-05 23:58:32 -04:00
|
|
|
buffer to display.")
|
|
|
|
|
|
|
|
(defvar narf-ignore-buffers '("*Completions*" "*Compile-Log*" "*inferior-lisp*"
|
|
|
|
"*Fuzzy Completions*" "*Apropos*" "*Help*" "*cvs*"
|
2016-05-12 22:11:43 -04:00
|
|
|
"*Buffer List*" "*Ibuffer*" "*NeoTree*" "
|
|
|
|
*NeoTree*" "*esh command on file*" "*WoMan-Log*"
|
|
|
|
"*compilation*" "*use-package*" "*quickrun*"
|
|
|
|
"*eclim: problems*" "*Flycheck errors*"
|
|
|
|
"*popwin-dummy*"
|
2016-04-05 23:58:32 -04:00
|
|
|
;; Helm
|
2016-05-12 22:11:43 -04:00
|
|
|
"*helm*" "*helm recentf*" "*helm projectile*"
|
|
|
|
"*helm imenu*" "*helm company*" "*helm buffers*"
|
|
|
|
"*Helm Css SCSS*" "*helm-ag*" "*helm-ag-edit*"
|
|
|
|
"*Helm Swoop*" "*helm M-x*" "*helm mini*"
|
|
|
|
"*Helm Completions*" "*Helm Find Files*"
|
|
|
|
"*helm mu*" "*helm mu contacts*"
|
|
|
|
"*helm-mode-describe-variable*"
|
|
|
|
"*helm-mode-describe-function*"
|
2016-04-05 23:58:32 -04:00
|
|
|
;; Org
|
|
|
|
"*Org todo*" "*Org Links*" "*Agenda Commands*")
|
|
|
|
"List of buffer names to ignore when using `winner-undo', or `winner-redo'")
|
|
|
|
|
|
|
|
(defvar narf-cleanup-processes-alist '(("pry" . ruby-mode)
|
|
|
|
("irb" . ruby-mode)
|
|
|
|
("ipython" . python-mode))
|
|
|
|
"An alist of (process-name . major-mode), that `narf:cleanup-processes' checks
|
|
|
|
before killing processes. If there are no buffers with matching major-modes, it
|
|
|
|
gets killed.")
|
|
|
|
|
|
|
|
(defvar narf-project-root-files
|
|
|
|
'(".git" ".hg" ".svn" ".project" "local.properties" "project.properties"
|
|
|
|
"rebar.config" "project.clj" "SConstruct" "pom.xml" "build.sbt"
|
|
|
|
"build.gradle" "Gemfile" "requirements.txt" "tox.ini" "package.json"
|
|
|
|
"gulpfile.js" "Gruntfile.js" "bower.json" "composer.json" "Cargo.toml"
|
|
|
|
"mix.exs")
|
|
|
|
"A list of files that count as 'project files', which determine whether a
|
2016-05-12 22:11:43 -04:00
|
|
|
folder is the root of a project or not.")
|
2016-04-05 23:58:32 -04:00
|
|
|
|
|
|
|
;; Fringe/margins
|
|
|
|
(defvar narf-fringe-size 6 "Default width to use for the fringes.")
|
2015-09-30 13:47:57 -04:00
|
|
|
|
2016-03-03 15:04:14 -05:00
|
|
|
|
|
|
|
;;
|
|
|
|
;; Bootstrap
|
|
|
|
;;
|
2015-09-30 13:47:57 -04:00
|
|
|
|
2016-05-11 05:36:49 -04:00
|
|
|
(require 'f)
|
2016-05-18 02:09:32 -04:00
|
|
|
(autoload 'use-package "use-package" "" nil 'macro)
|
2016-04-16 21:27:59 -04:00
|
|
|
(autoload 'awhen "anaphora" "" nil 'macro)
|
|
|
|
(autoload 'aif "anaphora" "" nil 'macro)
|
2015-09-30 13:47:57 -04:00
|
|
|
(unless (require 'autoloads nil t)
|
2016-03-26 01:19:31 -04:00
|
|
|
(load (concat narf-emacs-dir "/scripts/generate-autoloads.el"))
|
2015-09-30 13:47:57 -04:00
|
|
|
(require 'autoloads))
|
|
|
|
(require 'core-defuns)
|
|
|
|
|
2015-11-17 02:08:35 -05:00
|
|
|
(use-package persistent-soft
|
|
|
|
:commands (persistent-soft-store
|
|
|
|
persistent-soft-fetch
|
|
|
|
persistent-soft-exists-p
|
|
|
|
persistent-soft-flush
|
|
|
|
persistent-soft-location-readable
|
2015-11-17 02:18:56 -05:00
|
|
|
persistent-soft-location-destroy)
|
2016-03-27 00:49:52 -04:00
|
|
|
:init (defvar pcache-directory (concat narf-temp-dir "/pcache/")))
|
2015-11-17 02:08:35 -05:00
|
|
|
|
|
|
|
(use-package async
|
|
|
|
:commands (async-start
|
|
|
|
async-start-process
|
|
|
|
async-get
|
|
|
|
async-wait
|
|
|
|
async-inject-variables))
|
|
|
|
|
2016-03-03 15:04:14 -05:00
|
|
|
;;
|
2016-03-27 18:18:43 -04:00
|
|
|
;; We add this to `after-init-hook' to allow errors to stop this advice
|
2016-01-29 07:09:53 -05:00
|
|
|
(add-hook! after-init
|
|
|
|
(defadvice save-buffers-kill-emacs (around no-query-kill-emacs activate)
|
|
|
|
"Prevent annoying \"Active processes exist\" query when you quit Emacs."
|
|
|
|
(cl-flet ((process-list ())) ad-do-it)))
|
|
|
|
|
2016-03-27 18:18:43 -04:00
|
|
|
(defun display-startup-echo-area-message ()
|
|
|
|
(message ":: Loaded in %s" (emacs-init-time)))
|
2016-01-29 07:09:53 -05:00
|
|
|
|
2015-06-04 18:23:21 -04:00
|
|
|
(provide 'core)
|
|
|
|
;;; core.el ends here
|