I think I have a problem..
This commit is contained in:
parent
5aa3c282be
commit
7ddb52699d
55 changed files with 745 additions and 318 deletions
24
Cask
24
Cask
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))))
|
||||
|
|
|
@ -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.
|
||||
|
|
19
core/core.el
19
core/core.el
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
252
elisp/hide-mode-line.el
Normal 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
14
init.el
|
@ -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
|
||||
|
||||
|
|
|
@ -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
6
init/init-d.el
Normal file
|
@ -0,0 +1,6 @@
|
|||
(use-package d-mode
|
||||
:disabled t
|
||||
:modes "\\.d$")
|
||||
|
||||
(provide 'init-d)
|
||||
;;; init-d.el ends here
|
|
@ -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
|
|
@ -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
|
|
@ -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
295
init/init-org.el
Normal 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
|
|
@ -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
|
||||
(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))
|
||||
(unless robe-running (robe-start 1))
|
||||
(my--ruby-load-file buffer-file-name))
|
||||
(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
12
init/init-rust.el
Normal 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
|
|
@ -24,6 +24,9 @@
|
|||
(markdown-unwrap-thing-at-point nil 2 4)
|
||||
(markdown-wrap-or-insert delim delim 'word nil nil))))))
|
||||
:config
|
||||
(progn
|
||||
(sp-local-pair 'markdown-mode "*" "*" :unless '(sp-point-after-bol-p sp-point-before-same-p sp-point-after-same-p))
|
||||
|
||||
(let ((map markdown-mode-map))
|
||||
(bind '(normal visual) map
|
||||
",i" 'markdown-insert-image
|
||||
|
@ -46,4 +49,4 @@
|
|||
(kbd "s-*") 'markdown-insert-list-item
|
||||
(kbd "s-b") 'markdown-insert-bold
|
||||
(kbd "s-i") 'markdown-insert-italic
|
||||
(kbd "s-`") 'markdown-insert-del)))
|
||||
(kbd "s-`") 'markdown-insert-del))))
|
|
@ -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)))
|
|
@ -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
|
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue