diff options
-rw-r--r-- | emacs/elisp/ap-functions.el | 6 | ||||
-rw-r--r-- | emacs/init.el | 31 | ||||
-rwxr-xr-x | zsh/zshrc | 10 |
3 files changed, 42 insertions, 5 deletions
diff --git a/emacs/elisp/ap-functions.el b/emacs/elisp/ap-functions.el index b699464..104b444 100644 --- a/emacs/elisp/ap-functions.el +++ b/emacs/elisp/ap-functions.el @@ -37,10 +37,10 @@ (byte-compile-dest-file filename)))))) ;;;###autoload -(defun shell-execute () - (interactive) +(defun shell-execute (to-current-buffer) + (interactive "P") (let ((file-buffer (if (buffer-file-name) (file-name-nondirectory (buffer-file-name)) "")) (command (read-shell-command "Shell command: " nil nil nil))) - (shell-command (replace-regexp-in-string "%" file-buffer command)))) + (shell-command (replace-regexp-in-string "%" file-buffer command) to-current-buffer))) diff --git a/emacs/init.el b/emacs/init.el index 71c2ffb..1092e9b 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -9,6 +9,8 @@ user-full-name "Alan Pearce" custom-file "~/.emacs.d/custom.el") +(load custom-file :noerror) + ;;; Allow lisps to use a common setup. I don't know why they don't have some lispy mode as their parent, but this is close enough (defcustom lisp-common-mode-hook nil "Hook run when entering any Lisp mode." @@ -47,7 +49,10 @@ Values: `desktop', `server', `laptop'") (interactive) (setq env/location (env/get-location))) -(defvar *init-file* (expand-file-name "init.el" (file-name-directory (file-truename user-init-file))) +(defvar *init-file* + (when user-init-file + (expand-file-name "init.el" + (file-name-directory (file-truename user-init-file)))) "Where the emacs init file really is, passing through symlinks.") ;;;; Package Management @@ -576,6 +581,7 @@ Values: `desktop', `server', `laptop'") ;;;; Planning (use-package org + :ensure org-plus-contrib :bind (("C-c C-a" . org-agenda-list) ("C-c a" . org-agenda) ("C-c l" . org-store-link) @@ -763,6 +769,7 @@ Also returns nil if pid is nil." eshell-smart-space-goes-to-end t) (eshell-smart-initialize))))) +(autoload #'eshell/cd "em-dirs") (defun eshell-goto-current-dir (&optional arg) (interactive "P") (let ((dir default-directory)) @@ -908,10 +915,16 @@ Also returns nil if pid is nil." (setq indent-tabs-mode nil) (local-set-key (kbd "RET") #'paredit-newline)) +(defun set-common-lisp-indentation () + (set (make-local-variable 'lisp-indent-function) + #'common-lisp-indent-function)) + (add-hook 'emacs-lisp-mode-hook #'ap/lisp-setup) (add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode) (add-hook 'scheme-mode-hook #'ap/lisp-setup) +(add-hook 'lisp-mode-hook #'ap/lisp-setup) +(add-hook 'lisp-mode-hook #'set-common-lisp-indentation) (use-package bytecomp :defer t @@ -973,6 +986,18 @@ Also returns nil if pid is nil." (add-hook 'emacs-lisp-mode-hook 'imenu-elisp-sections) +(defun eval-and-replace () + "Replace the preceding sexp with its value." + (interactive) + (backward-kill-sexp) + (condition-case nil + (prin1 (eval (read (current-kill 0))) + (current-buffer)) + (error (message "Invalid expression") + (insert (current-kill 0))))) + +(bind-key "C-c e" #'eval-and-replace) + ;;;; Programming (use-package auto-compile @@ -1085,6 +1110,10 @@ Works with: arglist-cont-nonempty, arglist-close." ("\\.mt\\'" . mustache-mode) ("\\.template\\'" . mustache-mode))) +(use-package jinja2-mode + :ensure t + :mode (("\\.j2\\'" . jinja2-mode))) + (use-package nxhtml-mode :defer t :if (eq env/system-type 'laptop) diff --git a/zsh/zshrc b/zsh/zshrc index 938dcbd..3bf6e3b 100755 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -10,6 +10,13 @@ then $defpath ~/bin ) + if [[ -d ~/.gem/ruby ]] + then + path=( + $path + ~/.gem/ruby/*/bin + ) + fi fi if [[ ! -d ~/.zsh/cache ]] @@ -275,7 +282,8 @@ alias E="SUDO_EDITOR=\emacsclient -c -a emacs\" sudoedit" alias aticonfig="DISPLAY=:0 \aticonfig" alias wprop='xprop |awk '\'' /^WM_CLASS/{sub(/.* =/, "instance:"); sub(/,/, "\nclass:"); print} - /^WM_NAME/{sub(/.* =/, "title:"); print}'\''' + /^WM_NAME/{sub(/.* =/, "title:"); print} + /^WM_WINDOW_ROLE/{sub(/.* =/, "role:"); print}'\''' alias -g ...='../..' |