I think I have a problem..

This commit is contained in:
Henrik Lissner 2014-12-12 15:26:34 -05:00
parent 5aa3c282be
commit 7ddb52699d
55 changed files with 745 additions and 318 deletions

24
Cask
View file

@ -56,15 +56,15 @@
(depends-on "company-irony")
(depends-on "irony-mode" :git "https://github.com/Sarcasm/irony-mode")
(depends-on "auto-complete")
(depends-on "auto-complete-clang")
(depends-on "auto-complete-c-headers")
(depends-on "ac-etags")
(depends-on "ac-ispell")
(depends-on "ac-anaconda")
(depends-on "tern-auto-complete")
(depends-on "ac-inf-ruby")
(depends-on "jedi")
; (depends-on "auto-complete")
; (depends-on "auto-complete-clang")
; (depends-on "auto-complete-c-headers")
; (depends-on "ac-etags")
; (depends-on "ac-ispell")
; (depends-on "ac-anaconda")
; (depends-on "tern-auto-complete")
; (depends-on "ac-inf-ruby")
; (depends-on "jedi")
;; Eeeevil
(depends-on "god-mode")
@ -104,6 +104,7 @@
;; Modes/mode-specific
(depends-on "org-plus-contrib")
(depends-on "org-opml" :git "https://github.com/edavis/org-opml")
;(depends-on "org-present")
(depends-on "rainbow-mode")
(depends-on "lua-mode")
@ -135,7 +136,7 @@
(depends-on "inf-ruby")
(depends-on "robe")
(depends-on "anaconda")
(depends-on "anaconda-mode")
(depends-on "omnisharp")
(depends-on "csharp-mode")
@ -148,3 +149,6 @@
(depends-on "applescript-mode")
(depends-on "cmake-mode")
(depends-on "rust-mode")
(depends-on "d-mode")

View file

@ -1,7 +1,4 @@
;; Global editor behavior (+ evil)
(provide 'core-editor)
;;;; Editing plugins ;;;;;;;;;;;;;;;;;;;
(use-package expand-region
:commands (er/expand-region er/contract-region))
@ -18,7 +15,7 @@
(setq sp-autowrap-region nil ; let evil-surround handle this
sp-highlight-pair-overlay nil
sp-show-pair-delay 0
sp-autoescape-string-quote nil)
sp-autoescape-string-quote t)
;; Handle newlines
(sp-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
@ -36,3 +33,7 @@
(after "yasnippet"
(defadvice yas-expand (before advice-for-yas-expand activate)
(sp-remove-active-pair-overlay)))))
(provide 'core-editor)
;;; core-editor.el ends here

View file

@ -211,10 +211,11 @@
file-name))
(progn ; ex-commands
(evil-ex-define-cmd "pres[ent]" 'toggle-theme)
(evil-ex-define-cmd "pres[ent]" 'toggle-presentation-mode)
(evil-ex-define-cmd "togglet[heme]" 'toggle-theme)
(evil-ex-define-cmd "full[scr]" 'toggle-frame-fullscreen)
(evil-ex-define-cmd "k[ill]" 'kill-this-buffer) ; Kill current buffer
(evil-ex-define-cmd "k[ill]o" 'cleanup-buffers) ; Kill current project buffers
(evil-ex-define-cmd "k[ill]o" 'my-cleanup-buffers) ; Kill current project buffers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -232,6 +233,13 @@
(mapc 'kill-buffer (buffer-list)))
(delete-other-windows))
(evil-ex-define-cmd "k[ill]buried" 'my:kill-buried-buffers) ; Kill all buffers (bang = project buffers only)
(evil-define-command my:kill-buried-buffers (&optional bang)
:repeat nil
(interactive "<!>")
(mapc 'kill-buffer
(my-living-buffer-list (if bang (projectile-project-buffers) (buffer-list)))))
(evil-ex-define-cmd "ini" 'my:init-files)
(evil-define-command my:init-files (&optional bang)
:repeat nil
@ -254,12 +262,6 @@
(byte-recompile-directory (concat my-dir ".cask") 0 t)
(byte-recompile-directory my-dir 0 t)))
(evil-ex-define-cmd "build" 'my:build)
(evil-define-command my:build (arguments &optional bang)
:repeat t
(interactive "<a><!>")
(my-build arguments))
(evil-ex-define-cmd "cd" 'my:cd)
(evil-define-command my:cd (dir)
:repeat nil
@ -369,4 +371,4 @@ provided."
:repeat nil
(interactive "<r>")
(evil-normal-state)
(narrow-to-region-indirect beg end)))))
(my-narrow-to-region-indirect beg end)))))

View file

@ -22,6 +22,8 @@
(blink-cursor-mode 1) ; blink cursor
;; (global-hl-line-mode 1) ; highlight line
(setq linum-format " %3d")
;; Multiple cursors across buffers cause a strange redraw delay for
;; some things, like auto-complete or evil-mode's cursor color
;; switching.

View file

@ -1,5 +1,3 @@
(provide 'core)
(cd "~") ; instead of /
(require 'cask)
@ -18,10 +16,10 @@
(make-directory my-tmp-dir-autosave t))
(setq load-prefer-newer t)
(setq debug-on-quit *debug-mode)
(setq debug-on-quit DEBUG-MODE)
(require 'shut-up)
(setq shut-up-ignore *debug-mode)
(setq shut-up-ignore DEBUG-MODE)
(when noninteractive (shut-up-silence-emacs)) ; http://youtu.be/Z6woIRLnbmE
(shut-up
@ -48,7 +46,7 @@
;;; Show tab characters
;; (global-whitespace-mode 1)
(setq whitespace-style '(face tabs tab-mark) ; needs to be re-set in every buffer
(setq whitespace-style '(trailing face tabs tab-mark) ; needs to be re-set in every buffer
whitespace-display-mappings
'((tab-mark ?\t [?| ?\t] [?\\ ?\t])
(newline-mark 10 [36 10]))) ; for whitespace-newline-mode
@ -147,7 +145,6 @@
(setq-default tab-width 4)
(setq delete-trailing-lines nil)
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(add-hook 'makefile-mode-hook 'indent-tabs-mode) ; Use normal tabs in makefiles
;; Make sure scratch buffer is always "in a project"
(add-hook 'find-file-hook
@ -217,7 +214,8 @@ the checking happens for all pairs in auto-minor-mode-alist"
;;;; Utility plugins ;;;;;;;;;;;;;;;;;;
(require 'defuns) ; all the defuns
(require 'use-package) ; Package management bootstrap
(setq use-package-verbose *debug-mode)
(setq use-package-verbose DEBUG-MODE)
;;(require 'hide-mode-line)
;; Generate autoloads if necessary
(defun my-update-autoloads (&optional forcep)
@ -225,7 +223,7 @@ the checking happens for all pairs in auto-minor-mode-alist"
(setq generated-autoload-file (concat my-core-dir "autoloads.el"))
(when (or forcep (not (file-exists-p generated-autoload-file)))
(if forcep (delete-file generated-autoload-file))
(update-directory-autoloads my-core-dir my-modules-dir my-personal-dir my-elisp-dir))
(update-directory-autoloads my-core-dir my-modules-dir my-elisp-dir))
(require 'autoloads))
(my-update-autoloads)
@ -258,6 +256,7 @@ the checking happens for all pairs in auto-minor-mode-alist"
(push '("*Compile-Log*" :height 0.3 :position bottom :noselect t) popwin:special-display-config)
(push '(" *undo-tree*" :width 0.3 :position right) popwin:special-display-config)
(push '("^\\*scratch\\*.*" :regexp t :stick t) popwin:special-display-config)
(push '(image-mode) popwin:special-display-config)
(after "evil"
(evil-ex-define-cmd "l[ast]" 'popwin:popup-last-buffer)
@ -279,3 +278,7 @@ the checking happens for all pairs in auto-minor-mode-alist"
(require 'server)
(unless (server-running-p)
(server-start)))
(provide 'core)
;;; core.el ends here

View file

@ -9,6 +9,25 @@
(narrow-to-region start end))
(switch-to-buffer buf)))
;;;###autoload
(defun my--set-region-read-only (begin end)
"See http://stackoverflow.com/questions/7410125"
(let ((modified (buffer-modified-p)))
(add-text-properties begin end '(read-only t))
(set-buffer-modified-p modified)))
;;;###autoload
(defun my--set-region-writeable (begin end)
"See http://stackoverflow.com/questions/7410125"
(let ((modified (buffer-modified-p))
(inhibit-read-only t))
(remove-text-properties begin end '(read-only t))
(set-buffer-modified-p modified)))
;;;###autoload
(defun my-living-buffer-list (&optional buffer-list)
(-remove 'get-buffer-window (or buffer-list (buffer-list))))
;; Killing Buffers ;;;;;;;;;;;;;;;;;;;;;
;; Buffer defuns
@ -18,6 +37,7 @@
"^\\*Compile-Log\\*$"
"^\\*Ediff.*\\*$"
help-mode
image-mode
dired-mode
reb-mode)
"A list of buffer name regexps or major-mode symbols. If buried buffers

View file

@ -66,7 +66,7 @@ whitespace as possible, or just one char if that's not possible."
(if (string-match "\\w*\\(\\s-+\\)$"
(buffer-substring-no-properties (- p movement) p))
(backward-delete-char (- (match-end 1) (match-beginning 1)))
(call-interactively 'backward-delete-char-untabify)))))))
(backward-delete-char-untabify 1)))))))
;;;###autoload
(defun my.dumb-indent ()

252
elisp/hide-mode-line.el Normal file
View file

@ -0,0 +1,252 @@
;;; hide-mode-line.el --- Hides the mode line when there is only one frame and
;;; one buffer.
;;
;; Filename: hide-mode-line.el
;; Description: Hides the mode line when there is only one frame and one
;; buffer.
;; Author: Darren Embry
;; Copyright (c) 2008, 2011 Darren Embry
;; URL: http://webonastick.com/emacs-lisp/hide-mode-line.el
;; Keywords: mode line, writeroom
;; Compatibility: GNU Emacs 22.x, GNU Emacs 23.x
;;
;; Features that might be required by this library:
;;
;; None
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by the Free
;; Software Foundation; either version 2, or (at your option) any later
;; version.
;;
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
;; more details.
;;
;; You should have received a copy of the GNU General Public License along
;; with this program; see the file COPYING. If not, write to the Free
;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
;; 02110-1301, USA.
;;
;; GPL 2 is available here:
;; http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Basically, automatically hides the mode-line if all of the following
;; are true:
;; - there is only one frame.
;; - there is only one window displayed in that frame.
;; - there is no minibuffer.
;; - the hide-mode-line variable is set.
;; and automatically shows the mode-line when any of the above isn't true.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; HOW TO USE
;;
;; Just put this file in your Emacs library directory and add this line to
;; your ~/.emacs:
;;
;; (autoload 'hide-mode-line "hide-mode-line" nil t)
;;
;; and use M-x hide-mode-line to toggle. Setting the hide-mode-line variable
;; won't automatically update the buffers' mode-line visibilities.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; MYSTERY BUG: every once in a while a few lines of text will be hidden
;; for some reason until you do a redraw-display. See if you can
;; reproduce this in a reliable fashion!
;;
;; MYSTERY BUG: not specific to this module, but... load linum, run M-x
;; linum-mode, then (setq mode-line-format nil) this triggers display
;; problems more reproducibly: sometimes the last line in the buffer
;; doesn't have the line number show up; and sometimes the cursor line
;; or the one after it doesn't have the line number show up. May be
;; related to above bug.
;;
;; CAVEAT: this code does not instruct your window system to make the
;; window full-screen.
;;
;; TODO: briefly show modeline for (example) 2 seconds when the following
;; happens:
;; - hide-mode-line is about to be activated
;; - you switch to another buffer
;;
;; TODO: Emacs 21 does not implement window-tree.
;;
;; BUG: if the hide-mode-line-window-configuration-change-hook function
;; displays a (message "moo") before it does its work, the screen is blanked
;; when you resize the window until you hit C-l.
;;
;; BUG: if a frame is closed and there is only one frame remaining, and
;; there is only one buffer in that window, mode lines are not hidden.
;;
;; SEE ALSO:
;; http://www.emacswiki.org/cgi-bin/wiki/LineNumbers
;; http://www.emacswiki.org/cgi-bin/wiki/WriteRoom
;;
;;=============================================================================
;;; History:
;;
;; 2008-01-31 r3090 initial version
;; 2008-02-01 r3097 explicitly defint default for
;; hide-mode-line-saved-mode-line-format
;; 2008-02-01 r3100 implement hide-mode-line-unaffected-by-minibuffer
;; 2008-02-01 r3101 more robust handling of case where mode-line-format is
;; nil before this code runs
;; 2008-02-01 r3106 disable in emacs21: window-tree function not available
;; 2011-03-08 r5835 fix emacsw32 bug
;;; Code:
(defvar hide-mode-line-saved-mode-line-format nil)
(make-variable-buffer-local 'hide-mode-line-saved-mode-line-format)
; TODO: add a hook of some kind when setting mode-line-format.
(defvar hide-mode-line nil)
; TODO: add a hook to run hide-mode-line-update when setting hide-mode-line.
; [or just use M-x hide-mode-line for now]
(defcustom hide-mode-line-unaffected-by-minibuffer nil
"If non-nil, a minibuffer by itself does not un-hide the modeline."
:group 'hide-mode-line
:type 'boolean)
(defun there-is-only-one-frame ()
"Return non-nil if there is only one frame, nil otherwise."
(let ((frames (frames-on-display-list)))
(if (= (length frames) 1)
(car frames)
nil)))
(defun there-is-only-one-window-in (frame)
"Return non-nil if there is only one window in the specified FRAME."
(let ((root (car (window-tree frame)))) ;FIXME: does not work with emacs21
(not (listp root))))
(defun there-is-only-one-frame-and-one-window ()
"Return non-nil if there is only one frame and one window."
(let ((the-only-frame (there-is-only-one-frame)))
(and the-only-frame
(or hide-mode-line-unaffected-by-minibuffer
(= (minibuffer-depth) 0))
(there-is-only-one-window-in the-only-frame))))
(defun hide-mode-line-in (buffer)
"Hide the specified BUFFER's mode line.
Saves the buffer's previous `mode-line-format' value if it's not
already hidden."
(with-current-buffer buffer
(if (and (not hide-mode-line-saved-mode-line-format)
;; minibuffers don't have modelines :p
(not (minibufferp buffer)))
(progn (setq hide-mode-line-saved-mode-line-format
(list mode-line-format))
(setq mode-line-format nil)
;; bug workaround
(redraw-modeline)))))
(defun show-mode-line-in (buffer)
"If the specified BUFFER's mode line is hidden, un-hides it.
Restores the buffer's `mode-line-format' from what was saved when
hide-mode-line-in was called."
(with-current-buffer buffer
(if (and hide-mode-line-saved-mode-line-format
;; minibuffers don't have modelines :p
(not (minibufferp buffer)))
(progn (setq mode-line-format
(car hide-mode-line-saved-mode-line-format))
(setq hide-mode-line-saved-mode-line-format nil)))))
(defun hide-mode-lines ()
"Hide all buffers' mode lines using hide-mode-line-in."
(mapcar 'hide-mode-line-in (buffer-list)))
(defun show-mode-lines ()
"Show all buffers' mode lines using show-mode-line-in."
(mapcar 'show-mode-line-in (buffer-list))
(if (equal window-system 'w32)
;; bug workaround
(redraw-display)))
(defun hide-mode-line-update ()
"Update the state of all buffers' mode lines.
This uses hide-mode-lines or show-mode-lines."
(if hide-mode-line
(if (there-is-only-one-frame-and-one-window)
(hide-mode-lines)
(show-mode-lines))
(show-mode-lines)))
(defun hide-mode-line-minibuffer-setup-hook ()
"Internal function."
(hide-mode-line-update))
(defun hide-mode-line-minibuffer-exit-hook ()
"Internal function."
(hide-mode-line-update))
(defun hide-mode-line-make-frame-function (new-frame)
"Internal function."
(hide-mode-line-update))
(defun hide-mode-line-delete-frame-function (dead-frame-walking)
"Internal function."
(hide-mode-line-update))
(defun hide-mode-line-window-configuration-change-hook ()
"Internal function."
(hide-mode-line-update))
(defun hide-mode-line-add-hooks ()
"Internal function."
(interactive)
(add-hook 'minibuffer-setup-hook
'hide-mode-line-minibuffer-setup-hook)
(add-hook 'minibuffer-exit-hook
'hide-mode-line-minibuffer-exit-hook)
(add-hook 'after-make-frame-functions
'hide-mode-line-make-frame-function)
(add-hook 'delete-frame-functions
'hide-mode-line-delete-frame-function)
(add-hook 'window-configuration-change-hook
'hide-mode-line-window-configuration-change-hook))
(defun hide-mode-line-remove-hooks ()
"Internal function."
(interactive)
(remove-hook 'minibuffer-setup-hook
'hide-mode-line-minibuffer-setup-hook)
(remove-hook 'minibuffer-exit-hook
'hide-mode-line-minibuffer-exit-hook)
(remove-hook 'after-make-frame-functions
'hide-mode-line-make-frame-function)
(remove-hook 'delete-frame-functions
'hide-mode-line-delete-frame-function)
(remove-hook 'window-configuration-change-hook
'hide-mode-line-window-configuration-change-hook))
;;;###autoload
(defun hide-mode-line ()
"Toggle the hide-mode-line functionality."
(interactive)
(if (functionp 'window-tree)
(progn
(if hide-mode-line
(hide-mode-line-remove-hooks)
(hide-mode-line-add-hooks))
(setq hide-mode-line (not hide-mode-line))
(hide-mode-line-update))
(error (concat "Your Emacs does not provide the window-tree function. "
"Please upgrade to GNU Emacs 22 "
"or to some other version of Emacs that provides it."))))
(provide 'hide-mode-line)
;;; hide-mode-line.el ends here

14
init.el
View file

@ -17,13 +17,12 @@
;;
;;; Code:
(defconst *debug-mode nil)
(defconst DEBUG-MODE nil)
(defconst my-dir user-emacs-directory)
(defconst my-core-dir (concat my-dir "core/"))
(defconst my-modules-dir (concat my-dir "modules/"))
(defconst my-personal-dir (concat my-dir "my/"))
(defconst my-elisp-dir (concat my-dir "lib/"))
(defconst my-modules-dir (concat my-dir "init/"))
(defconst my-elisp-dir (concat my-dir "elisp/"))
(defconst my-themes-dir (concat my-dir "themes/"))
(defconst my-snippets-dir (concat my-dir "snippets/"))
(defconst my-tmp-dir (concat my-dir ".cache/"))
@ -34,12 +33,11 @@
(defconst *default-font "Ubuntu Mono")
(defconst *default-font-size (if (eq system-name "ganymede.local") 12 14))
(defconst *presentation-font *default-font)
(defconst *presentation-font-size 18)
(defconst *presentation-font "Panic Sans")
(defconst *presentation-font-size 22)
(add-to-list 'load-path my-core-dir)
(add-to-list 'load-path my-modules-dir)
(add-to-list 'load-path my-personal-dir)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Just the... bear necessities...
@ -51,6 +49,7 @@
init-auto-insert ; for the lazy typis
init-company ; see above
init-cc ; C/C++/Obj-C madness
;; init-d ; D - It's C, but better!
;; init-cscope
;; init-csharp
init-dev ; general dev tools/settings
@ -77,6 +76,7 @@
init-swift ; ever wanted to name a variable an emoticon?
init-text ; I got nothing...
init-tmux
;; init-rust
init-web
init-yasnippet ; type for me

View file

@ -34,7 +34,7 @@
;; ;; ;; Ruby
(template "/spec_helper\\.rb$" "%helper%" 'rspec-mode t)
(template "_spec\\.rb$" "%%" 'rspec-mode t)
(template "/\\.rspec$" "%.rspec%" 'rspec-mode t)
(template "/\\.rspec$" "%.rspec%" 'rspec-mode)
(template "/Rakefile$" "%Rakefile%" 'ruby-mode t)
(template "/Gemfile$" "%Gemfile%" 'ruby-mode t)
;; (template "\\.gemspec$" "%.gemspec%" 'ruby-mode t)

6
init/init-d.el Normal file
View file

@ -0,0 +1,6 @@
(use-package d-mode
:disabled t
:modes "\\.d$")
(provide 'init-d)
;;; init-d.el ends here

View file

@ -14,8 +14,7 @@
(progn
(add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode)
(add-hook 'js2-mode-hook 'rainbow-delimiters-mode)
(add-hook 'scss-mode-hook 'rainbow-delimiters-mode)
(add-hook 'ruby-mode-hook 'rainbow-delimiters-mode)))
(add-hook 'scss-mode-hook 'rainbow-delimiters-mode)))
;;; Config modes
(use-package yaml-mode
@ -33,10 +32,14 @@
(after "evil" (evil-ex-define-cmd "ref[actor]" 'emr-show-refactor-menu))))
;; todo's
(use-package hl-todo :init (add-hook 'find-file-hook 'hl-todo-mode))
(use-package hl-todo
:init (add-hook! 'after-init-hook (add-hook 'find-file-hook 'hl-todo-mode)))
(use-package helm-todo :commands my:helm-todo-search)
(evil-ex-define-cmd "todo" 'my:helm-todo)
;; (require 'evil-snipe)
;; (global-evil-snipe-mode 1)
(provide 'init-dev)
;;; init-dev.el ends here

View file

@ -17,35 +17,38 @@
(evil-ex-define-cmd "a" 'helm-projectile-find-other-file)
(evil-ex-define-cmd "proj[ect]" 'helm-projectile-switch-project)
(evil-ex-define-cmd "ag" 'my:helm-ag-search)
(evil-ex-define-cmd "agr" 'my:helm-ag-regex-search)
(evil-ex-define-cmd "ag[cw]d" 'my:helm-ag-search-cwd)
(evil-ex-define-cmd "agr[cw]d" 'my:helm-ag-regex-search-cwd)
(evil-ex-define-cmd "sw[oop]" 'my:helm-swoop)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package helm-ag
:commands (my:helm-ag-search my:helm-ag-search-cwd helm-ag helm-do-ag my:helm-ag-search)
:commands (my:helm-ag-search
my:helm-ag-search-cwd
my:helm-ag-regex-search
my:helm-ag-regex-search-cwd
helm-ag helm-do-ag)
:config
(progn
;; Ex-mode interface for `helm-ag'. If `bang', then `search' is interpreted as
;; regexp.
(evil-define-operator my:helm-ag-search (beg end &optional bang search pwd-p)
:motion nil
:move-point nil
(evil-define-operator my:helm-ag-search (beg end &optional search hidden-files-p pwd-p regex-p)
:type inclusive
:repeat nil
(interactive "<r><!><a>")
(interactive "<r><a><!>")
(let* ((helm-ag-default-directory (my--project-root pwd-p))
(header-name (format "Search in %s" helm-ag-default-directory))
(helm-ag-command-option (concat (unless regex-p "-Q ")
(if hidden-files-p "--hidden ")))
(input "")
(helm-ag--last-input ""))
(header-name (format "Search in %s" helm-ag-default-directory)))
(if search
(progn
(helm-attrset 'search-this-file nil helm-ag-source)
(setq helm-ag--last-query
(concat "ag " (unless bang "-Q") " --nogroup --nocolor -- "
(shell-quote-argument search))))
(setq helm-ag--last-query search))
(helm-ag-save-current-context)
(if (and beg end)
(if (and beg end (/= beg (1- end)))
(setq input (buffer-substring-no-properties beg end))))
(helm-attrset 'name header-name helm-ag-source)
(helm :sources (if search (helm-ag--select-source) '(helm-source-do-ag))
@ -53,15 +56,25 @@
:input input
:prompt helm-global-prompt)))
;; Ex-mode interface for `helm-do-ag'. If `bang', then `search' is interpreted
;; as regexp
(evil-define-operator my:helm-ag-search-cwd (beg end &optional bang search)
:motion nil
:move-point nil
(evil-define-operator my:helm-ag-regex-search (beg end &optional bang search)
:type inclusive
:repeat nil
(interactive "<r><!><a>")
(my:helm-ag-search beg end search bang t))))
(my:helm-ag-search beg end search bang nil t))
;; Ex-mode interface for `helm-do-ag'. If `bang', then `search' is interpreted
;; as regexp
(evil-define-operator my:helm-ag-search-cwd (beg end &optional search bang)
:type inclusive
:repeat nil
(interactive "<r><a><!>")
(my:helm-ag-search beg end search bang t nil))))
(evil-define-operator my:helm-ag-regex-search-cwd (beg end &optional search bang)
:type inclusive
:repeat nil
(interactive "<r><a><!>")
(my:helm-ag-search beg end search bang t t))))
(use-package helm-css-scss ; https://github.com/ShingoFukuyama/helm-css-scss
:commands (helm-css-scss

View file

@ -1,5 +1,3 @@
(provide 'init-java)
(use-package eclim
:commands (eclim-mode global-eclim-mode)
:init
@ -37,7 +35,9 @@
:mode "\\.gradle$"
:config (after "auto-complete" (add-to-list 'ac-modes 'groovy-mode)))
(use-package java-mode
:config
(sp-with-modes '(java-mode)
(sp-local-pair "/**" "*/" :post-handlers '(("* ||\n[i]" "RET")))))
(sp-with-modes '(java-mode)
(sp-local-pair "/**" "*/" :post-handlers '(("* ||\n[i]" "RET"))))
(provide 'init-java)
;;; init-java.el ends here

295
init/init-org.el Normal file
View file

@ -0,0 +1,295 @@
(use-package org
:mode (("\\.org$" . org-mode)
("\\.opml$" . org-mode))
:init
(progn
(add-hook 'org-mode-hook 'enable-tab-width-2)
(add-hook 'org-mode-hook 'evil-org-mode)
(add-hook 'org-mode-hook 'turn-on-auto-fill)
;; Reset evil to ensure evil-org-mode's maps work
(add-hook! 'org-mode-hook (evil-mode nil) (evil-mode 1))
(setq org-directory "~/Dropbox/notes"
org-default-notes-file "~/Dropbox/notes/notes.org"
org-mobile-inbox-for-pull "~/Dropbox/notes/notes.org"
org-mobile-directory "~/Dropbox/Apps/MobileOrg"
org-agenda-files '("~/Dropbox/notes"
"~/Dropbox/notes/projects"
"~/Dropbox/notes/projects/dev"
"~/Dropbox/notes/projects/gamedev"
"~/Dropbox/notes/projects/webdev")
org-archive-location "~/Dropbox/notes/archive/%s.org::"
org-confirm-babel-evaluate nil
org-src-tab-acts-natively t)
(setq org-completion-use-ido t
org-hidden-keywords '(title)
org-special-ctrl-a/e t
org-hide-leading-stars t
org-hierarchical-todo-statistics t
org-checkbox-hierarchical-statistics t
org-log-done t
org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
(sequence "DOING(s)" "PENDING(p)")
(sequence "|" "CANCELLED(c)")))
(setq org-src-fontify-natively t)
(setq org-blank-before-new-entry '((heading . auto) (plain-list-item . auto)))
(setq org-export-backends '(ascii html latex md opml))
(setq org-tag-alist '(("@home" . ?h)
("@daily" . ?d)
("@invoices" . ?i)
("@personal" . ?p)
("@learning" . ?l)
("@dev" . ?v)
("@writing" . ?w)
("@projects" . ?r)))
(setq org-capture-templates
'(("t" "TODO" entry (file+headline "~/Dropbox/notes/todo.org" "Inbox") "* TODO %? %u\n%i")
("T" "TODO Someday" entry (file+headline "~/Dropbox/notes/todo.org" "Someday") "* TODO %? %u :someday:\n%i")
("c" "Changelog" entry (file+headline (concat (projectile-project-root) "/CHANGELOG.org") "Unsorted") "** %u %? :unsorted:\n%i" :prepend t)
("n" "Note" entry (file org-default-notes-file) "** %T %?\n%i" :prepend t)
("j" "Journal" entry (file+datetree "~/Dropbox/notes/journal.org") "** %?%^g\nAdded: %U\n%i")
("a" "Trivia" entry (file "~/Dropbox/notes/trivia.org") "* %u %?\n%i" :prepend t)
("s" "Writing Scraps" entry (file "~/Dropbox/notes/writing.org") "* %u %?\n%i" :prepend t)
("v" "Vocab" entry (file "~/Dropbox/notes/vocab.org") "* %?\n%i" :prepend t)
("e" "Excerpt" entry (file "~/Dropbox/notes/excerpts.org") "* %u %?\n%i" :prepend t)))
(setq org-agenda-custom-commands
'(("x" agenda)
("y" agenda*)
("w" todo "WAITING")
("W" todo-tree "WAITING")
("to" todo)
("tp" tags "+Projects")
("tg" tags-todo "+gamedev")
("tw" tags-tree "+webdev"))))
:config
(progn
(message "Org-mode loaded")
(push '("\\*Org.+\\*" :regexp t :width 0.3 :position bottom) popwin:special-display-config)
(org-babel-do-load-languages 'org-babel-load-languages
'((python . t)
(ruby . t)
(sh . t)
(emacs-lisp . t)
(matlab . t)
(latex . t)))
;; Remove occur highlights on ESC in normal mode
(defadvice evil-force-normal-state (before evil-esc-org-remove-highlights activate)
(org-remove-occur-highlights))
;; Auto update cookies
(defun my--org-mode-update-cookies ()
(when (eq major-mode 'org-mode) (org-update-parent-todo-statistics) (org-update-statistics-cookies nil)))
(add-hook 'evil-normal-state-entry-hook 'my--org-mode-update-cookies)
(define-minor-mode evil-org-mode
:init-value nil
:lighter " EvilOrg"
:keymap (make-sparse-keymap) ; defines evil-org-mode-map
:group 'evil-org)
;; (use-package org-present
;; :config
;; (progn
;; (defun my--org-present-mode-on ()
;; (org-present-big)
;; (org-display-inline-images)
;; (org-present-hide-cursor)
;; (org-present-read-only))
;; (defun my--org-present-mode-off ()
;; (org-present-small)
;; (org-remove-inline-images)
;; (org-present-show-cursor)
;; (org-present-read-write))
;; (add-hook 'org-present-mode-hook 'my--org-present-mode-on)
;; (add-hook 'org-present-mode-quit-hook 'my--org-present-mode-off)))
(progn ; opml support
(defun set-buffer-file-format-to-opml ()
(when (string-match "\.opml$" (buffer-file-name))
(setq buffer-file-format '(opml))))
(defun my--opml-encode (begin end buffer)
"Export Org mode buffer to OPML."
(let ((org-export-show-temporary-export-buffer nil)
(name "*OPML Export Buffer*"))
(org-export-to-buffer 'opml name)
(erase-buffer)
(insert-buffer-substring (get-buffer name))
(point-max)))
(add-hook 'find-file-hooks 'set-buffer-file-format-to-opml)
(add-to-list 'format-alist '(opml "Outline Processor Markup Language"
"<[?]xml version=\"1.0\"[^>]*[?]>[\n]?.*[\n]?.*[\n]?<opml version=\"[1|2].0\">"
"~/.emacs.d/elisp/org-opml/opml2org.py" my--opml-encode t))
(shut-up (load-library "ox-opml")))
(progn ; key bindings
(defun my--org-in-list-p ()
(and (save-excursion (search-backward-regexp "^ *\\([0-9]+[\.)]\\|[-*+]\\) " (line-beginning-position) t))
(org-in-item-p)))
(defun my--org-insert-item-after ()
"Inserts a new heading or item, depending on the context."
(interactive)
(org-end-of-line)
(cond ((org-at-item-checkbox-p)
(org-insert-heading)
(insert "[ ] "))
((my--org-in-list-p)
(org-insert-heading))
((org-on-heading-p)
(org-insert-heading-after-current))
(t
(org-insert-heading-after-current)
(delete-char 1)))
(evil-insert-state))
;; TODO Check if this and -forward can be combined
(defun my--org-insert-item-before ()
"Inserts a new heading or item, depending on the context."
(interactive)
(evil-first-non-blank)
(cond ((org-at-item-checkbox-p)
(org-insert-heading)
(insert "[ ] "))
((my--org-in-list-p)
(org-insert-heading))
(t (org-insert-heading)))
(evil-insert-state))
(defun my--toggle-checkbox ()
(interactive)
(save-excursion
(org-end-of-line)
(cond ((org-in-item-p)
(if (search-backward-regexp "\\[[ +-]\\]" (line-beginning-position) t)
(delete-char 4)
(org-beginning-of-line)))
(t (org-insert-heading)))
(insert "[ ] ")))
(bind 'insert org-mode-map [remap my.inflate-space-maybe] 'self-insert-command)
(bind org-mode-map
"RET" nil
"C-j" nil
"C-k" nil)
(bind '(normal insert) evil-org-mode-map
"M-l" 'org-metaright
"M-h" 'org-metaleft
"M-k" 'org-metaup
"M-j" 'org-metadown
"M-L" 'org-shiftmetaright
"M-H" 'org-shiftmetaleft
"M-K" 'org-shiftmetaup
"M-J" 'org-shiftmetadown)
(bind 'insert evil-org-mode-map
"C-e" 'org-end-of-line
"C-a" 'org-beginning-of-line)
(bind '(insert normal)
"<s-left>" 'org-beginning-of-line
"<s-right>" 'org-end-of-line
"<s-up>" 'org-up-element
"<s-down>" 'org-down-element)
;; Formatting shortcuts
(defun my/org-surround (delim)
(insert delim) (save-excursion (insert delim)))
(bind 'insert evil-org-mode-map
;; Add new header line before this line
(kbd "<S-s-return>") 'my--org-insert-item-before
;; Add new header line after this line
(kbd "<s-return>") 'my--org-insert-item-after
(kbd "s-b") (λ (my/org-surround "*")) ; bold
(kbd "s-u") (λ (my/org-surround "_")) ; underline
(kbd "s-i") (λ (my/org-surround "/")) ; italics
(kbd "s-`") (λ (my/org-surround "+"))) ; strikethrough
(bind 'visual evil-org-mode-map
(kbd "s-b") "s*"
(kbd "s-u") "s_"
(kbd "s-i") "s/"
(kbd "s-`") "s+")
(bind '(normal visual) evil-org-mode-map
", l" 'org-insert-link)
(bind 'normal evil-org-mode-map
", +" 'org-align-all-tags
", /" 'org-sparse-tree
", ?" 'org-tags-view
", a" 'org-attach
", D" 'org-time-stamp-inactive
", T" 'org-show-todo-tree
", d" 'org-time-stamp
", r" 'org-refile
", s" 'org-schedule
", t" 'org-todo
"g r" 'org-babel-execute-src-block-maybe
"g h" 'outline-up-heading
"g j" 'org-forward-heading-same-level
"g k" 'org-backward-heading-same-level
"g l" 'outline-next-visible-heading
"g o" 'org-open-at-point
"g O" 'org-attach-open
"g C-o" 'org-attach-reveal
"g i" (λ (if (> (length org-inline-image-overlays) 0)
(org-remove-inline-images)
(org-display-inline-images nil t (line-beginning-position) (line-end-position))))
"g a" 'org-agenda
"g t" 'org-show-todo-tree
"$" 'org-end-of-line
"^" 'org-beginning-of-line
"<" 'org-metaleft
">" 'org-metaright
"-" 'org-cycle-list-bullet
", SPC" 'my--toggle-checkbox
", <return>" 'org-archive-subtree
"<S-s-return>" 'my--org-insert-item-before
"<s-return>" 'my--org-insert-item-after
"RET" (λ (cond ((org-at-item-checkbox-p)
(org-toggle-checkbox))
((org-entry-is-todo-p)
(org-todo 'done))))
[tab] 'org-cycle))
(evil-ex-define-cmd "o[rg]edit" 'org-edit-special)
(evil-ex-define-cmd "o[rg]refile" 'org-refile)
(evil-ex-define-cmd "o[rg]archive" 'org-archive-subtree)
(evil-ex-define-cmd "o[rg]agenda" 'org-agenda)
(evil-ex-define-cmd "o[rg]attach" 'my:org-attach)
(evil-ex-define-cmd "o[rg]todo" 'org-show-todo-tree)
(evil-ex-define-cmd "o[rg]link" 'org-link)
(evil-ex-define-cmd "o[rg]align" 'org-align-all-tags)
(evil-define-command my:org-attach (&optional filename bang)
:repeat nil
(interactive "<f><!>")
(if bang
(org-attach)
(unless filename
(user-error "You must specify a file to attach"))
(unless (file-exists-p filename)
(user-error "File %s does not exist" filename))
(let ((dest (f-join org-directory "data/" (concat (format-time-string "%Y%m%d-") (f-filename filename)))))
(when (f-exists? dest)
(user-error "File %s already exists at destination!"))
(copy-file filename dest)
(insert (format "[[file:%s]]" (f-relative dest (f-dirname (buffer-file-name))))))))))
(provide 'init-org)
;;; init-org.el ends here

View file

@ -1,15 +1,15 @@
(provide 'init-ruby)
(use-package ruby-mode
:mode (("\\.rb$" . ruby-mode)
("\\.ru$" . ruby-mode)
("\\.rake$" . ruby-mode)
("\\.gemspec$" . ruby-mode)
("\\.?pryrc$" . ruby-mode)
("Gemfile$" . ruby-mode)
("Capfile$" . ruby-mode)
("Vagrantfile$" . ruby-mode)
("Rakefile$" . ruby-mode))
(use-package enh-ruby-mode
:mode (("\\.rb$" . enh-ruby-mode)
("\\.ru$" . enh-ruby-mode)
("\\.rake$" . enh-ruby-mode)
("\\.gemspec$" . enh-ruby-mode)
("\\.?pryrc$" . enh-ruby-mode)
("Gemfile$" . enh-ruby-mode)
("Capfile$" . enh-ruby-mode)
("Vagrantfile$" . enh-ruby-mode)
("Rakefile$" . enh-ruby-mode))
:interpreter "ruby"
:init
(progn
@ -19,38 +19,40 @@
(associate-mode "/\\.rspec$" 'text-mode))
:config
(progn
(message "Ruby loaded!")
;;; Formatting
(setq ruby-indent-level 2)
(setq ruby-deep-indent-paren t)
(setq enh-ruby-check-syntax nil)
(add-hook 'ruby-mode-hook 'enable-tab-width-2)
(add-hook 'enh-ruby-mode-hook 'enable-tab-width-2)
(define-key ruby-mode-map [?\n] nil)
(define-key enh-ruby-mode-map [?\n] nil)
(after "emr"
(use-package ruby-refactor)
(emr-declare-command 'ruby-refactor-extract-to-method
:title "extract method"
:modes 'ruby-mode
:modes 'enh-ruby-mode
:predicate (lambda () (use-region-p)))
(emr-declare-command 'ruby-refactor-extract-local-variable
:title "extract local variable"
:modes 'ruby-mode
:modes 'enh-ruby-mode
:predicate (lambda () (use-region-p)))
(emr-declare-command 'ruby-refactor-extract-constant
:title "extract constant"
:modes 'ruby-mode
:modes 'enh-ruby-mode
:predicate (lambda () (use-region-p)))
(emr-declare-command 'ruby-refactor-add-parameter
:title "add parameter"
:modes 'ruby-mode)
:modes 'enh-ruby-mode)
(emr-declare-command 'ruby-refactor-extract-to-let
:title "extract to let"
:modes 'ruby-mode
:modes 'enh-ruby-mode
:predicate (lambda () (use-region-p))))
(define-minor-mode rake-mode
@ -61,12 +63,12 @@
:commands (inf-ruby inf-ruby-console-auto)
:config
(progn
(evil-set-initial-state 'inf-ruby-mode 'insert)
(push '(inf-ruby-mode :position bottom :stick t) popwin:special-display-config)
(evil-set-initial-state 'inf-enh-ruby-mode 'insert)
(push '(inf-enh-ruby-mode :position bottom :stick t) popwin:special-display-config)
(after "company"
(use-package company-inf-ruby
:config (company--backend-on 'inf-ruby-mode-hook 'company-inf-ruby)))))
:config (company--backend-on 'inf-enh-ruby-mode-hook 'company-inf-ruby)))))
(use-package rspec-mode
:defer t
@ -92,18 +94,20 @@
(progn
(after "company"
(use-package company-robe
:config (company--backend-on 'ruby-mode-hook 'company-robe)))
:config (company--backend-on 'enh-ruby-mode-hook 'company-robe)))
(add-hook! 'ruby-mode-hook
(robe-mode 1)
;; (after "auto-complete" (ac-robe-setup))
(unless robe-running (robe-start 1))
(my--ruby-load-file buffer-file-name))
(add-hook! 'enh-ruby-mode-hook
(unless (f-ext? (buffer-file-name) "org") ;; in case of org-mode
(robe-mode 1)
;; (after "auto-complete" (ac-robe-setup))
(my--ruby-load-file buffer-file-name)))
(defun my--ruby-load-file (&optional file)
(let ((file (or file buffer-file-name)))
(when (and (eq major-mode 'ruby-mode)
(bound-and-true-p robe-running)
(when (and (eq major-mode 'enh-ruby-mode)
(featurep 'robe)
(not (string= (f-base file) "Gemfile"))
(file-exists-p buffer-file-name))
(ruby-load-file file))))
(unless robe-running (robe-start 1))
(when robe-running (ruby-load-file file)))))
(add-hook 'after-save-hook 'my--ruby-load-file)))))

12
init/init-rust.el Normal file
View file

@ -0,0 +1,12 @@
(use-package rust-mode
:modes "\\.rs$"
:config
(after "company"
(let ((racer-dir (concat my-elisp-dir "racer/")))
(setq racer-rust-src-path (concat racer-dir "src"))
(setq racer-cmd (concat racer-dir "bin/racer"))
(add-to-list 'load-path (concat racer-dir "editors/"))
(require 'racer))))
(provide 'init-rust)
;;; init-rust.el ends here

View file

@ -24,26 +24,29 @@
(markdown-unwrap-thing-at-point nil 2 4)
(markdown-wrap-or-insert delim delim 'word nil nil))))))
:config
(let ((map markdown-mode-map))
(bind '(normal visual) map
",i" 'markdown-insert-image
",l" 'markdown-insert-link
",L" 'markdown-insert-reference-link-dwim
",b" 'markdown-preview)
(progn
(sp-local-pair 'markdown-mode "*" "*" :unless '(sp-point-after-bol-p sp-point-before-same-p sp-point-after-same-p))
(bind 'normal map
"[p" 'markdown-promote
"]p" 'markdown-demote)
(let ((map markdown-mode-map))
(bind '(normal visual) map
",i" 'markdown-insert-image
",l" 'markdown-insert-link
",L" 'markdown-insert-reference-link-dwim
",b" 'markdown-preview)
(bind 'insert map
(kbd "M--") 'markdown-insert-hr)
(bind 'normal map
"[p" 'markdown-promote
"]p" 'markdown-demote)
(bind map
(kbd "<backspace>") nil
(kbd "<M-left>") nil
(kbd "<M-right>") nil
(bind 'insert map
(kbd "M--") 'markdown-insert-hr)
(kbd "s-*") 'markdown-insert-list-item
(kbd "s-b") 'markdown-insert-bold
(kbd "s-i") 'markdown-insert-italic
(kbd "s-`") 'markdown-insert-del)))
(bind map
(kbd "<backspace>") nil
(kbd "<M-left>") nil
(kbd "<M-right>") nil
(kbd "s-*") 'markdown-insert-list-item
(kbd "s-b") 'markdown-insert-bold
(kbd "s-i") 'markdown-insert-italic
(kbd "s-`") 'markdown-insert-del))))

View file

@ -56,22 +56,22 @@
"[ \\" 'er/contract-region)
(bind 'normal my-mode-map
", ," 'helm-projectile-switch-to-buffer
", ." 'helm-resume
", /" 'helm-projectile-find-file
", ;" 'helm-semantic-or-imenu
", <" 'helm-mini
", E" 'my:init-files
", M" 'helm-projectile-recentf ; recent PROJECT files
", ]" 'helm-etags-select
", a" 'helm-projectile-find-other-file
", e" 'ido-find-file
", E" 'my:init-files
", f" 'helm-projectile-find-file-dwim
", g" 'git-gutter+-show-hunk
", h" 'helm-apropos
", m" 'helm-recentf
", M" 'helm-projectile-recentf ; recent PROJECT files
", p" 'helm-projectile-switch-project
", y" 'helm-show-kill-ring
", ;" 'helm-semantic-or-imenu
", ," 'helm-projectile-switch-to-buffer
", <" 'helm-mini
", ]" 'helm-etags-select
", /" 'helm-projectile-find-file
", ." 'helm-resume
;; behave like D and C; yank to end of line
"Y" (λ (evil-yank (point) (point-at-eol)))

View file

@ -23,9 +23,11 @@
(set-register ?. "~/.dotfiles/")
(set-register ?d "~/Dropbox/Projects/")
(set-register ?@ "~/.emacs.d/init.el")
(set-register ?% "~/.emacs.d/init.el")
(add-hook 'help-mode-hook 'visual-line-mode)
(add-hook! 'before-save-hook
(unless (eq major-mode 'org-mode)
(delete-trailing-whitespace)))
;; Performance checks
(add-hook! 'find-file-hook

View file

@ -1,195 +0,0 @@
(provide 'init-org)
;; Defuns
(defun my/org-insert-list-item ()
"Force insertion of org item"
(interactive)
(if (not (org-in-item-p))
(insert "\n- ")
(org-insert-item)))
(defun my/org-eol-call (fun)
"Go to end of line and call provided function"
(end-of-line)
(funcall fun)
(evil-append nil))
(defun my/org-surround (delim)
(insert delim) (save-excursion (insert delim)))
(defun set-buffer-file-format-to-opml ()
(when (string-match "\.opml$" (buffer-file-name))
(setq buffer-file-format '(opml))))
(defun opml-encode (begin end buffer)
"Export Org mode buffer to OPML."
(let ((org-export-show-temporary-export-buffer nil)
(name "*OPML Export Buffer*"))
(org-export-to-buffer 'opml name)
(erase-buffer)
(insert-buffer-substring (get-buffer name))
(point-max)))
;;
(require 'org)
(define-minor-mode evil-org-mode
"Buffer local minor mode for evil-org"
:init-value nil
:lighter " EvilOrg"
:keymap (make-sparse-keymap) ; defines evil-org-mode-map
:group 'evil-org)
(add-hook 'org-mode-hook 'evil-org-mode)
(add-hook 'org-mode-hook 'turn-on-auto-fill)
;; Reset evil to ensure evil-org-mode's maps work
(add-hook! 'org-mode-hook (evil-mode nil) (evil-mode 1))
(shut-up (load-library "ox-opml"))
;; Remove occur highlights on ESC in normal mode
(defadvice evil-force-normal-state (before evil-esc-org-remove-highlights activate)
(org-remove-occur-highlights))
(setq org-export-backends '(ascii html latex md opml))
(add-hook 'find-file-hooks 'set-buffer-file-format-to-opml)
(add-to-list 'auto-mode-alist '("\\.opml$" . org-mode))
(add-to-list 'format-alist '(opml "Outline Processor Markup Language"
"<[?]xml version=\"1.0\"[^>]*[?]>[\n]?.*[\n]?.*[\n]?<opml version=\"[1|2].0\">"
"~/.emacs.d/elisp/org-opml/opml2org.py" opml-encode t))
(setq org-directory "~/Dropbox/notes"
org-default-notes-file "~/Dropbox/notes/notes.org"
org-mobile-inbox-for-pull "~/Dropbox/notes/notes.org"
org-mobile-directory "~/Dropbox/Apps/MobileOrg"
org-agenda-files '("~/Dropbox/notes")
org-src-tab-acts-natively t)
(setq org-completion-use-ido t
org-hide-leading-stars t
org-todo-keywords
'((sequence "TODO(t)" "|" "DONE(d)")
(sequence "DOING(s)" "PENDING(p)")
(sequence "|" "CANCELLED(c)")))
(org-babel-do-load-languages 'org-babel-load-languages
'((python . t)
(ruby . t)
(sh . t)
(matlab . t)
(latex . t)))
(setq org-tag-alist '(("@work" . ?b)
("@home" . ?h)
("@writing" . ?w)
("@errands" . ?e)
("@drawing" . ?d)
("@coding" . ?c)
("@phone" . ?p)
("@reading" . ?r)
("projects" . ?q)
("easy" . ?0)
("hard" . ?1)))
(setq org-capture-templates
'(("t" "TODO" entry (file+headline "~/Dropbox/notes/gtd.org" "Inbox") "* TODO %? %u\n%i")
("T" "TODO Someday" entry (file+headline "~/Dropbox/notes/gtd.org" "Someday") "* TODO %? %u :someday:\n%i")
("c" "Changelog" entry (file+headline (concat (projectile-project-root) "/CHANGELOG.org") "Unsorted") "** %u %? :unsorted:\n%i" :prepend t)
("i" "Invoice" entry (file+headline "~/Dropbox/notes/invoices.org" "Invoices") "** TODO %?\n%i" :prepend t)
("n" "Note" entry (file+datetree org-default-notes-file) "** %?\n%i")
("b" "Blog" entry (file+datetree "~/Dropbox/notes/blog.org") "** %i%?")
("j" "Journal" entry (file+datetree "~/Dropbox/notes/journal.org") "** %?%^g\nAdded: %U\n%i")
("a" "Trivia" entry (file "~/Dropbox/notes/trivia.org") "* %u %?\n%i" :prepend t)
("s" "Writing Scraps" entry (file "~/Dropbox/notes/writing.org") "* %u %?\n%i" :prepend t)
("v" "Vocab" entry (file "~/Dropbox/notes/vocab.org") "* %u %?\n%i" :prepend t)
("e" "Excerpt" entry (file "~/Dropbox/notes/excerpts.org") "* %u %?\n%i" :prepend t)))
(setq org-agenda-custom-commands
'(("x" agenda)
("y" agenda*)
("w" todo "WAITING")
("W" todo-tree "WAITING")
("to" todo)
("tp" tags "+Projects")
("tg" tags-todo "+gamedev")
("tw" tags-tree "+webdev")))
;; Keymaps
(bind 'insert org-mode-map [remap my.inflate-space-maybe] 'self-insert-command)
(bind org-mode-map (kbd "RET") nil
(kbd "C-j") nil
(kbd "C-k") nil)
(mapc (lambda (state)
(evil-define-key state evil-org-mode-map
(kbd "M-l") 'org-metaright
(kbd "M-h") 'org-metaleft
(kbd "M-k") 'org-metaup
(kbd "M-j") 'org-metadown
(kbd "M-L") 'org-shiftmetaright
(kbd "M-H") 'org-shiftmetaleft
(kbd "M-K") 'org-shiftmetaup
(kbd "M-J") 'org-shiftmetadown
(kbd "M-o") '(lambda () (interactive)
(evil-org-eol-call
'(lambda()
(org-insert-heading)
(org-metaright))))
(kbd "M-t") '(lambda () (interactive)
(evil-org-eol-call
'(lambda()
(org-insert-todo-heading nil)
(org-metaright))))
))
'(normal insert))
;; Formatting shortcuts
(bind 'insert evil-org-mode-map
(kbd "s-b") (λ (my/org-surround "*")) ; bold
(kbd "s-u") (λ (my/org-surround "_")) ; underline
(kbd "s-i") (λ (my/org-surround "/")) ; italics
(kbd "s-`") (λ (my/org-surround "+")) ; strikethrough
(kbd "<S-s-return>") (λ (evil-move-beginning-of-line) (org-insert-heading))
(kbd "<s-return>") (λ (org-insert-heading-after-current)))
(bind '(normal visual) evil-org-mode-map
",l" 'org-insert-link)
(bind 'visual evil-org-mode-map
(kbd "s-b") "s*" ; bold
(kbd "s-i") "s/") ; italics
(bind 'normal evil-org-mode-map
",d" 'org-time-stamp
",D" 'org-time-stamp-inactive
",s" 'org-schedule
",a" 'org-attach
",A" 'org-attach-open
",t" 'org-todo
",T" 'org-show-todo-tree
",/" 'org-sparse-tree
",?" 'org-tags-view
",+" 'org-align-all-tags
",r" 'org-refile
"gh" 'outline-up-heading
"gj" 'org-forward-heading-same-level
"gk" 'org-backward-heading-same-level
"gl" 'outline-next-visible-heading
"go" 'org-open-at-point
"ga" 'org-agenda
"gt" 'org-show-todo-tree
"H" 'org-beginning-of-line
"L" 'org-end-of-line
"$" 'org-end-of-line
"^" 'org-beginning-of-line
"<" 'org-metaleft
">" 'org-metaright
"-" 'org-cycle-list-bullet
(kbd ", SPC") 'org-archive-subtree
(kbd "<S-s-return>") (λ (evil-move-beginning-of-line) (org-insert-heading) (evil-insert-state))
(kbd "<s-return>") (λ (org-insert-heading-after-current) (evil-insert-state))
(kbd "RET") (λ (if (org-entry-is-todo-p) (org-todo 'done)))
(kbd "TAB") 'org-cycle)