mirror of
https://github.com/jimeh/.emacs.d.git
synced 2026-02-19 13:46:41 +00:00
Add rewritten config, dubbed emacs-siren
I've taken a lot of inspiration from Emacs-Prelude when it came to the structure of this rewritten config. I didn't want to use Prelude as I don't agree with all it's defaults, nor do I want to have to deal with any future changes in Prelude that might break things for me. So instead I went down the fully custom path, but heavily inspired by Prelude, both in terms of file/code structure, and also some of it's features. Compared to my old config setup, it's got most of the same things, but nearly everything is in a module file now, making it easy to fully enable/disable certain features.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -17,6 +17,7 @@ project-explorer-cache/*
|
||||
recentf
|
||||
saved-places
|
||||
smex-items
|
||||
savefile/*
|
||||
|
||||
# Bittorrent Sync related
|
||||
.AppleDouble
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -0,0 +1,3 @@
|
||||
[submodule "vendor/tomorrow-night-paradise-theme"]
|
||||
path = vendor/tomorrow-night-paradise-theme
|
||||
url = https://github.com/jimeh/tomorrow-night-paradise-theme.el.git
|
||||
|
||||
45
core/siren-core.el
Normal file
45
core/siren-core.el
Normal file
@@ -0,0 +1,45 @@
|
||||
;;
|
||||
;; core stuff - again shamelessly ripped from Emacs Prelude
|
||||
;;
|
||||
|
||||
|
||||
(defun siren-smart-open-line-above ()
|
||||
"Insert an empty line above the current line.
|
||||
Position the cursor at it's beginning, according to the current mode."
|
||||
(interactive)
|
||||
(move-beginning-of-line nil)
|
||||
(newline-and-indent)
|
||||
(forward-line -1)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(defun siren-wrap-with (s)
|
||||
"Create a wrapper function for smartparens using S."
|
||||
`(lambda (&optional arg)
|
||||
(interactive "P")
|
||||
(sp-wrap-with-pair ,s)))
|
||||
|
||||
(defun siren-move-beginning-of-line (arg)
|
||||
"Move point back to indentation of beginning of line.
|
||||
|
||||
Move point to the first non-whitespace character on this line.
|
||||
If point is already there, move to the beginning of the line.
|
||||
Effectively toggle between the first non-whitespace character and
|
||||
the beginning of the line.
|
||||
|
||||
If ARG is not nil or 1, move forward ARG - 1 lines first. If
|
||||
point reaches the beginning or end of the buffer, stop there."
|
||||
(interactive "^p")
|
||||
(setq arg (or arg 1))
|
||||
|
||||
;; Move lines first
|
||||
(when (/= arg 1)
|
||||
(let ((line-move-visual nil))
|
||||
(forward-line (1- arg))))
|
||||
|
||||
(let ((orig-point (point)))
|
||||
(back-to-indentation)
|
||||
(when (= orig-point (point))
|
||||
(move-beginning-of-line 1))))
|
||||
|
||||
|
||||
(provide 'siren-core)
|
||||
23
core/siren-custom.el
Normal file
23
core/siren-custom.el
Normal file
@@ -0,0 +1,23 @@
|
||||
;;
|
||||
;; siren custom
|
||||
;;
|
||||
|
||||
(defcustom siren-yank-indent-threshold 1000
|
||||
"Threshold (# chars) over which indentation does not automatically occur."
|
||||
:type 'number
|
||||
:group 'siren)
|
||||
|
||||
(defcustom siren-indent-sensitive-modes
|
||||
'(conf-mode coffee-mode haml-mode python-mode slim-mode yaml-mode)
|
||||
"Modes for which auto-indenting is suppressed."
|
||||
:type 'list
|
||||
:group 'siren)
|
||||
|
||||
(defcustom siren-yank-indent-modes '(LaTeX-mode TeX-mode)
|
||||
"Modes in which to indent regions that are yanked (or yank-popped).
|
||||
Only modes that don't derive from `prog-mode' should be listed here."
|
||||
:type 'list
|
||||
:group 'siren)
|
||||
|
||||
|
||||
(provide 'siren-custom)
|
||||
207
core/siren-editor.el
Normal file
207
core/siren-editor.el
Normal file
@@ -0,0 +1,207 @@
|
||||
;;
|
||||
;; editor
|
||||
;;
|
||||
|
||||
;; Set default font
|
||||
(if window-system
|
||||
(set-face-attribute 'default nil :family "Monaco" :height 100))
|
||||
|
||||
;; don't use tabs to indent
|
||||
(setq-default indent-tabs-mode nil)
|
||||
|
||||
;; but maintain correct appearance
|
||||
(setq-default tab-width 8)
|
||||
|
||||
;; Newline at end of file
|
||||
(setq require-final-newline t)
|
||||
|
||||
;; Visual Line mode - wrap lines
|
||||
(visual-line-mode t)
|
||||
|
||||
;; Show matching parentheses
|
||||
(show-paren-mode t)
|
||||
|
||||
;; Highlight current line globally
|
||||
(global-hl-line-mode t)
|
||||
|
||||
;; delete the selection with a keypress
|
||||
(delete-selection-mode t)
|
||||
|
||||
;; Electric behavior
|
||||
;; (electric-layout-mode t)
|
||||
|
||||
;; Cursor
|
||||
(if window-system
|
||||
(progn
|
||||
(blink-cursor-mode t)
|
||||
(setq initial-frame-alist
|
||||
(cons '(cursor-type . bar) (copy-alist initial-frame-alist)))
|
||||
(setq default-frame-alist
|
||||
(cons '(cursor-type . bar) (copy-alist default-frame-alist))))
|
||||
(blink-cursor-mode -1))
|
||||
|
||||
;; store all backup and autosave files in the tmp dir
|
||||
(setq backup-directory-alist
|
||||
`((".*" . ,temporary-file-directory)))
|
||||
(setq auto-save-file-name-transforms
|
||||
`((".*" ,temporary-file-directory t)))
|
||||
|
||||
;; autosave the undo-tree history
|
||||
(setq undo-tree-history-directory-alist
|
||||
`((".*" . ,temporary-file-directory)))
|
||||
(setq undo-tree-auto-save-history t)
|
||||
|
||||
;; smart tab behavior - indent or complete
|
||||
(setq tab-always-indent 'complete)
|
||||
|
||||
;; revert buffers automatically when underlying files are changed externally
|
||||
(global-auto-revert-mode t)
|
||||
|
||||
;; diminish keeps the modeline tidy
|
||||
(require 'diminish)
|
||||
(diminish 'visual-line-mode)
|
||||
|
||||
;; Enable mouse support when running in a console
|
||||
(unless window-system
|
||||
(xterm-mouse-mode 1)
|
||||
(global-set-key [mouse-4] 'scroll-down-line)
|
||||
(global-set-key [mouse-5] 'scroll-up-line))
|
||||
|
||||
;; saveplace remembers your location in a file when saving files
|
||||
(require 'saveplace)
|
||||
(setq save-place-file (expand-file-name "saveplace" siren-savefile-dir))
|
||||
;; activate it for all buffers
|
||||
(setq-default save-place t)
|
||||
|
||||
;; savehist keeps track of some history
|
||||
(require 'savehist)
|
||||
(setq savehist-additional-variables
|
||||
;; search entries
|
||||
'(search-ring regexp-search-ring)
|
||||
;; save every minute
|
||||
savehist-autosave-interval 60
|
||||
;; keep the home clean
|
||||
savehist-file (expand-file-name "savehist" siren-savefile-dir))
|
||||
(savehist-mode +1)
|
||||
|
||||
;; Recentf
|
||||
(require 'recentf)
|
||||
(recentf-mode 1)
|
||||
(setq recentf-save-file (expand-file-name "recentf" siren-savefile-dir)
|
||||
recentf-max-saved-items 500
|
||||
recentf-max-menu-items 100
|
||||
;; disable recentf-cleanup on Emacs start, because it can cause
|
||||
;; problems with remote files
|
||||
recentf-auto-cleanup 'never
|
||||
recentf-exclude '("\\.git.*" "\\.hg.*" "\\.svn.*"))
|
||||
|
||||
(defun siren-recentf-exclude-p (file)
|
||||
"A predicate to decide whether to exclude FILE from recentf."
|
||||
(let ((file-dir (file-truename (file-name-directory file))))
|
||||
(-any-p (lambda (dir)
|
||||
(string-prefix-p dir file-dir))
|
||||
(mapcar 'file-truename (list siren-savefile-dir package-user-dir)))))
|
||||
|
||||
(add-to-list 'recentf-exclude 'siren-recentf-exclude-p)
|
||||
|
||||
(recentf-mode +1)
|
||||
|
||||
;; meaningful names for buffers with the same name
|
||||
(require 'uniquify)
|
||||
(setq uniquify-buffer-name-style 'post-forward-angle-brackets
|
||||
uniquify-separator "/"
|
||||
uniquify-after-kill-buffer-p t ; rename after killing uniquified
|
||||
uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers
|
||||
|
||||
;; Display whitespace characters globally
|
||||
(global-whitespace-mode t)
|
||||
(diminish 'whitespace-mode)
|
||||
(diminish 'global-whitespace-mode)
|
||||
(setq whitespace-line-column 80)
|
||||
|
||||
;; Customize Whitespace Characters
|
||||
;; - Newline: \u00AC = ¬
|
||||
;; - Tab: \u2192 = →
|
||||
;; \u00BB = »
|
||||
;; \u25B6 = ▶
|
||||
(setq whitespace-display-mappings
|
||||
(quote ((newline-mark ?\n [?\u00AC ?\n] [?$ ?\n])
|
||||
(tab-mark ?\t [?\u2192 ?\t] [?\u00BB ?\t] [?\\ ?\t]))))
|
||||
|
||||
(setq whitespace-style
|
||||
(quote (face tabs trailing space-before-tab newline
|
||||
indentation space-after-tab tab-mark newline-mark
|
||||
empty)))
|
||||
|
||||
;; flyspell setup
|
||||
(require 'flyspell)
|
||||
(diminish 'flyspell-mode)
|
||||
(setq ispell-program-name "aspell" ; use aspell instead of ispell
|
||||
ispell-extra-args '("--sug-mode=ultra"))
|
||||
|
||||
|
||||
;; enabled change region case commands
|
||||
(put 'upcase-region 'disabled nil)
|
||||
(put 'downcase-region 'disabled nil)
|
||||
|
||||
;; smarter kill-ring navigation
|
||||
(require 'browse-kill-ring)
|
||||
(browse-kill-ring-default-keybindings)
|
||||
(global-set-key (kbd "s-y") 'browse-kill-ring)
|
||||
|
||||
;; automatically indenting yanked text if in programming-modes
|
||||
(defun yank-advised-indent-function (beg end)
|
||||
"Do indentation, as long as the region isn't too large."
|
||||
(if (<= (- end beg) siren-yank-indent-threshold)
|
||||
(indent-region beg end nil)))
|
||||
|
||||
(defmacro advise-commands (advice-name commands class &rest body)
|
||||
"Apply advice named ADVICE-NAME to multiple COMMANDS.
|
||||
|
||||
The body of the advice is in BODY."
|
||||
`(progn
|
||||
,@(mapcar (lambda (command)
|
||||
`(defadvice ,command (,class ,(intern (concat (symbol-name command) "-" advice-name)) activate)
|
||||
,@body))
|
||||
commands)))
|
||||
|
||||
(advise-commands "indent" (yank yank-pop) after
|
||||
"If current mode is one of `siren-yank-indent-modes',
|
||||
indent yanked text (with prefix arg don't indent)."
|
||||
(if (and (not (ad-get-arg 0))
|
||||
(not (member major-mode siren-indent-sensitive-modes))
|
||||
(or (derived-mode-p 'prog-mode)
|
||||
(member major-mode siren-yank-indent-modes)))
|
||||
(let ((transient-mark-mode nil))
|
||||
(yank-advised-indent-function (region-beginning) (region-end)))))
|
||||
|
||||
;; make a shell script executable automatically on save
|
||||
(add-hook 'after-save-hook
|
||||
'executable-make-buffer-file-executable-if-script-p)
|
||||
|
||||
;; .zsh file is shell script too
|
||||
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . shell-script-mode))
|
||||
|
||||
;; saner regex syntax
|
||||
(require 're-builder)
|
||||
(setq reb-re-syntax 'string)
|
||||
|
||||
;; sensible undo
|
||||
(global-undo-tree-mode)
|
||||
(diminish 'undo-tree-mode)
|
||||
|
||||
;; diff-hl
|
||||
(global-diff-hl-mode +1)
|
||||
(add-hook 'dired-mode-hook 'diff-hl-dired-mode)
|
||||
|
||||
;; easy-kill
|
||||
(global-set-key [remap kill-ring-save] 'easy-kill)
|
||||
(global-set-key [remap mark-sexp] 'easy-mark)
|
||||
|
||||
;; diminish various modes
|
||||
;; (diminish 'hs-minor-mode)
|
||||
;; (diminish 'subword-mode)
|
||||
|
||||
|
||||
|
||||
(provide 'siren-editor)
|
||||
22
core/siren-env.el
Normal file
22
core/siren-env.el
Normal file
@@ -0,0 +1,22 @@
|
||||
;;
|
||||
;; env
|
||||
;;
|
||||
|
||||
;; Nix package manager
|
||||
(push "~/.nix-profile/bin" exec-path)
|
||||
|
||||
;; Homebrew
|
||||
(push "/usr/local/bin" exec-path)
|
||||
|
||||
;; rbenv
|
||||
(setq exec-path (cons "~/.rbenv/bin" exec-path))
|
||||
(setenv "PATH" (concat "~/.rbenv/bin:" (getenv "PATH")))
|
||||
(setq exec-path (cons "~/.rbenv/shims" exec-path))
|
||||
(setenv "PATH" (concat "~/.rbenv/shims:" (getenv "PATH")))
|
||||
|
||||
;; node.js
|
||||
(setq exec-path (cons "~/.nvm/versions/node/v0.12.4/bin" exec-path))
|
||||
(setenv "PATH" (concat "~/.nvm/versions/node/v0.12.4/bin:" (getenv "PATH")))
|
||||
|
||||
|
||||
(provide 'siren-env)
|
||||
12
core/siren-osx.el
Normal file
12
core/siren-osx.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;;
|
||||
;; osx
|
||||
;;
|
||||
|
||||
;; It's all in the Meta
|
||||
(setq ns-function-modifier 'hyper)
|
||||
|
||||
;; Don't use OSX Native fullscreen mode
|
||||
(setq ns-use-native-fullscreen nil)
|
||||
|
||||
|
||||
(provide 'siren-osx)
|
||||
70
core/siren-packages.el
Normal file
70
core/siren-packages.el
Normal file
@@ -0,0 +1,70 @@
|
||||
;;
|
||||
;; packages
|
||||
;;
|
||||
|
||||
(require 'cl)
|
||||
(require 'package)
|
||||
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "http://melpa.org/packages/") t)
|
||||
|
||||
;; set package-user-dir to be relative to config path
|
||||
(setq package-user-dir (expand-file-name "elpa" siren-dir))
|
||||
(package-initialize)
|
||||
|
||||
(defvar siren-packages
|
||||
'(browse-kill-ring
|
||||
dash
|
||||
discover-my-major
|
||||
diff-hl
|
||||
diminish
|
||||
easy-kill
|
||||
epl
|
||||
gist
|
||||
git-timemachine
|
||||
gitconfig-mode
|
||||
gitignore-mode
|
||||
; god-mode
|
||||
grizzl
|
||||
; operate-on-number
|
||||
smart-mode-line
|
||||
; smartrep
|
||||
undo-tree
|
||||
)
|
||||
"A list of default packages to ensure are installed at launch.")
|
||||
|
||||
;;
|
||||
;; Package helpers (borrowed from Emacs Prelude)
|
||||
;;
|
||||
|
||||
(defun siren-packages-installed-p ()
|
||||
"Check if all packages in `siren-packages' are installed."
|
||||
(every #'package-installed-p siren-packages))
|
||||
|
||||
(defun siren-require-package (package)
|
||||
"Install PACKAGE unless already installed."
|
||||
(unless (memq package siren-packages)
|
||||
(add-to-list 'siren-packages package))
|
||||
(unless (package-installed-p package)
|
||||
(package-install package)))
|
||||
|
||||
(defun siren-require-packages (packages)
|
||||
"Ensure PACKAGES are installed.
|
||||
Missing packages are installed automatically."
|
||||
(mapc #'siren-require-package packages))
|
||||
|
||||
(defun siren-install-packages ()
|
||||
"Install all packages listed in `siren-packages'."
|
||||
(unless (siren-packages-installed-p)
|
||||
;; check for new packages (package versions)
|
||||
(message "%s" "Emacs is now refreshing its package database...")
|
||||
(package-refresh-contents)
|
||||
(message "%s" " done.")
|
||||
;; install the missing packages
|
||||
(siren-require-packages siren-packages)))
|
||||
|
||||
;; Install Melpa packages
|
||||
(siren-install-packages)
|
||||
|
||||
|
||||
(provide 'siren-packages)
|
||||
52
core/siren-ui.el
Normal file
52
core/siren-ui.el
Normal file
@@ -0,0 +1,52 @@
|
||||
;;
|
||||
;; ui
|
||||
;;
|
||||
|
||||
;; the toolbar is just a waste of valuable screen estate
|
||||
;; in a tty tool-bar-mode does not properly auto-load, and is
|
||||
;; already disabled anyway
|
||||
(when (fboundp 'tool-bar-mode)
|
||||
(tool-bar-mode -1))
|
||||
|
||||
(menu-bar-mode -1)
|
||||
|
||||
;; disable startup screen
|
||||
(setq inhibit-startup-screen t)
|
||||
|
||||
;; Disable Scrollbar
|
||||
(if window-system (set-scroll-bar-mode 'nil))
|
||||
|
||||
;; nice scrolling
|
||||
;; (setq scroll-margin 0
|
||||
;; scroll-conservatively 100000
|
||||
;; scroll-preserve-screen-position 1)
|
||||
;; (setq redisplay-dont-pause t)
|
||||
(setq mouse-wheel-scroll-amount '(1 ((shift) . 10))) ;; one line at a time
|
||||
(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
|
||||
(setq scroll-margin 4)
|
||||
(setq scroll-step 1)
|
||||
(setq scroll-conservatively 10000)
|
||||
|
||||
;; mode line settings
|
||||
(line-number-mode t)
|
||||
(column-number-mode t)
|
||||
(size-indication-mode t)
|
||||
|
||||
;; enable y/n answers
|
||||
(fset 'yes-or-no-p 'y-or-n-p)
|
||||
|
||||
;; more useful frame title, that show either a file or a
|
||||
;; buffer name (if the buffer isn't visiting a file)
|
||||
(setq frame-title-format
|
||||
'("Emacs - " (:eval (if (buffer-file-name)
|
||||
(abbreviate-file-name (buffer-file-name))
|
||||
"%b"))))
|
||||
|
||||
(require 'smart-mode-line)
|
||||
(setq sml/no-confirm-load-theme t)
|
||||
;; delegate theming to the currently active theme
|
||||
(setq sml/theme nil)
|
||||
(add-hook 'after-init-hook #'sml/setup)
|
||||
|
||||
|
||||
(provide 'siren-ui)
|
||||
13
custom.el
Normal file
13
custom.el
Normal file
@@ -0,0 +1,13 @@
|
||||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(ecb-options-version "2.40")
|
||||
'(magit-commit-arguments (quote ("-S"))))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(sp-pair-overlay-face ((t (:inherit nil)))))
|
||||
73
init.el
73
init.el
@@ -9,3 +9,76 @@
|
||||
;; the `packages.el' file that's loaded in further down.
|
||||
;;
|
||||
;; (package-initialize)
|
||||
|
||||
(defvar current-user
|
||||
(getenv
|
||||
(if (equal system-type 'windows-nt) "USERNAME" "USER")))
|
||||
|
||||
(message "Siren is powering up... Be patient, Master %s!" current-user)
|
||||
|
||||
(when (version< emacs-version "24.1")
|
||||
(error "Siren requires at least GNU Emacs 24.1, but you're running %s" emacs-version))
|
||||
|
||||
;; Always load newest byte code
|
||||
(setq load-prefer-newer t)
|
||||
|
||||
;; Setup paths
|
||||
(defvar siren-dir (file-name-directory load-file-name)
|
||||
"The root dir of the Emacs config.")
|
||||
(defvar siren-core-dir (expand-file-name "core" siren-dir)
|
||||
"The home of core stuff.")
|
||||
(defvar siren-modules-dir (expand-file-name "modules" siren-dir)
|
||||
"This directory houses all of the modules.")
|
||||
(defvar siren-themes-dir (expand-file-name "themes" siren-dir)
|
||||
"This directory houses all of the modules.")
|
||||
(defvar siren-savefile-dir (expand-file-name "savefile" siren-dir)
|
||||
"This folder stores all the automatically generated save/history-files.")
|
||||
(defvar siren-vendor-dir (expand-file-name "vendor" siren-dir)
|
||||
"This directory houses packages that are not yet available in ELPA (or MELPA).")
|
||||
|
||||
(defvar siren-modules-file (expand-file-name "siren-modules.el" siren-dir)
|
||||
"This files contains a list of modules to be loaded.")
|
||||
(defvar siren-theme-file (expand-file-name "siren-theme.el" siren-dir)
|
||||
"This files contains a list of modules to be loaded.")
|
||||
|
||||
(unless (file-exists-p siren-savefile-dir)
|
||||
(make-directory siren-savefile-dir))
|
||||
|
||||
(defun siren-add-subfolders-to-load-path (parent-dir)
|
||||
"Add all level PARENT-DIR subdirs to the `load-path'."
|
||||
(dolist (f (directory-files parent-dir))
|
||||
(let ((name (expand-file-name f parent-dir)))
|
||||
(when (and (file-directory-p name)
|
||||
(not (string-prefix-p "." f)))
|
||||
(add-to-list 'load-path name)
|
||||
(siren-add-subfolders-to-load-path name)))))
|
||||
|
||||
(add-to-list 'load-path siren-core-dir)
|
||||
(add-to-list 'load-path siren-modules-dir)
|
||||
(add-to-list 'load-path siren-themes-dir)
|
||||
(add-to-list 'load-path siren-vendor-dir)
|
||||
(siren-add-subfolders-to-load-path siren-vendor-dir)
|
||||
|
||||
;; core stuff
|
||||
(require 'siren-env)
|
||||
(require 'siren-custom)
|
||||
(require 'siren-core)
|
||||
(require 'siren-packages)
|
||||
(require 'siren-ui)
|
||||
(require 'siren-editor)
|
||||
|
||||
;; osx specific
|
||||
(when (eq system-type 'darwin)
|
||||
(require 'siren-osx))
|
||||
|
||||
;; config changes made through the customize UI will be store here
|
||||
(setq custom-file (expand-file-name "custom.el" siren-dir))
|
||||
(load-file custom-file)
|
||||
|
||||
;; the modules
|
||||
(if (file-exists-p siren-modules-file)
|
||||
(load siren-modules-file))
|
||||
|
||||
;; the theme
|
||||
(if (file-exists-p siren-theme-file)
|
||||
(load siren-theme-file))
|
||||
|
||||
35
modules/siren-aliases.el
Normal file
35
modules/siren-aliases.el
Normal file
@@ -0,0 +1,35 @@
|
||||
;;
|
||||
;; Setup a few global command aliases
|
||||
;;
|
||||
|
||||
;; Text Manipulation
|
||||
(defalias 'rs 'replace-string)
|
||||
(defalias 'qr 'query-replace-regexp)
|
||||
(defalias 'al 'align-regexp)
|
||||
(defalias 'sl 'sort-lines)
|
||||
(defalias 'rr 'reverse-region)
|
||||
(defalias 'wc 'whitespace-cleanup)
|
||||
|
||||
(defalias 'lml 'list-matching-lines)
|
||||
(defalias 'dml 'delete-matching-lines)
|
||||
(defalias 'dnml 'delete-non-matching-lines)
|
||||
(defalias 'dtw 'delete-trailing-whitespace)
|
||||
|
||||
;; Buffer Manipulation
|
||||
(defalias 'rb 'revert-buffer)
|
||||
|
||||
;; Emacs Lisp
|
||||
(defalias 'eb 'eval-buffer)
|
||||
(defalias 'er 'eval-region)
|
||||
(defalias 'ed 'eval-defun)
|
||||
(defalias 'eis 'elisp-index-search)
|
||||
(defalias 'lf 'load-file)
|
||||
|
||||
;; Dired
|
||||
(defalias 'wd 'wdired-change-to-wdired-mode)
|
||||
|
||||
;; Modes
|
||||
(defalias 'sh 'shell-script-mode)
|
||||
|
||||
|
||||
(provide 'siren-aliases)
|
||||
32
modules/siren-auto-complete.el
Normal file
32
modules/siren-auto-complete.el
Normal file
@@ -0,0 +1,32 @@
|
||||
;;
|
||||
;; auto-complete
|
||||
;;
|
||||
|
||||
(siren-require-packages '(auto-complete))
|
||||
|
||||
(require 'auto-complete)
|
||||
;; (require 'auto-complete-config)
|
||||
;; (ac-config-default)
|
||||
(ac-flyspell-workaround)
|
||||
|
||||
(setq ac-auto-show-menu 0.2)
|
||||
(setq ac-auto-start 3)
|
||||
(setq ac-delay 0.05)
|
||||
(setq ac-menu-height 15)
|
||||
|
||||
(let ((map ac-completing-map))
|
||||
(define-key map (kbd "RET") 'ac-complete)
|
||||
(define-key map (kbd "C-m") 'ac-complete)
|
||||
(define-key map (kbd "C-s") 'ac-isearch)
|
||||
(define-key map (kbd "C-n") 'ac-next)
|
||||
(define-key map (kbd "C-p") 'ac-previous))
|
||||
|
||||
;; Auto-complete when indenting.
|
||||
(defadvice indent-for-tab-command (around ac-before-indent activate)
|
||||
"Call `auto-complete' if text was recently entered"
|
||||
(if (ac-trigger-command-p last-command)
|
||||
(auto-complete)
|
||||
ad-do-it))
|
||||
|
||||
|
||||
(provide 'siren-auto-complete)
|
||||
18
modules/siren-avy.el
Normal file
18
modules/siren-avy.el
Normal file
@@ -0,0 +1,18 @@
|
||||
;;
|
||||
;; avy allows us to effectively navigate to visible things
|
||||
;;
|
||||
|
||||
(siren-require-packages '(ace-window avy))
|
||||
|
||||
(require 'avy)
|
||||
(require 'ace-window)
|
||||
|
||||
(setq avy-background t
|
||||
avy-style 'at-full)
|
||||
|
||||
(define-key global-map (kbd "C-c C-j") 'avy-goto-word-or-subword-1)
|
||||
(define-key global-map (kbd "C-c SPC") 'avy-goto-char)
|
||||
(define-key global-map (kbd "M-o") 'ace-window)
|
||||
|
||||
|
||||
(provide 'siren-avy)
|
||||
36
modules/siren-coffee.el
Normal file
36
modules/siren-coffee.el
Normal file
@@ -0,0 +1,36 @@
|
||||
;;
|
||||
;; coffeescript
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(eval-after-load 'coffee-mode
|
||||
'(progn
|
||||
(siren-require-packages '(coffee-mode))
|
||||
|
||||
(setq coffee-tab-width 2)
|
||||
|
||||
;; remove the "Generated by CoffeeScript" header
|
||||
(add-to-list 'coffee-args-compile "--no-header")
|
||||
|
||||
(defun siren-coffee-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
|
||||
;; Update the already compiled js on save
|
||||
(and (buffer-file-name)
|
||||
(file-exists-p (buffer-file-name))
|
||||
(file-exists-p (coffee-compiled-file-name (buffer-file-name)))
|
||||
(coffee-cos-mode t))
|
||||
|
||||
(setq tab-width 2)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode)
|
||||
(subword-mode +1))
|
||||
|
||||
(setq siren-coffee-mode-hook 'siren-coffee-mode-defaults)
|
||||
|
||||
(add-hook 'coffee-mode-hook (lambda ()
|
||||
(run-hooks 'siren-coffee-mode-hook)))))
|
||||
|
||||
|
||||
(provide 'siren-coffee)
|
||||
40
modules/siren-company.el
Normal file
40
modules/siren-company.el
Normal file
@@ -0,0 +1,40 @@
|
||||
;;
|
||||
;; company
|
||||
;;
|
||||
|
||||
(siren-require-packages '(company))
|
||||
|
||||
(require 'company)
|
||||
|
||||
(setq company-idle-delay 0.5
|
||||
company-tooltip-limit 10
|
||||
company-minimum-prefix-length 2)
|
||||
|
||||
;; invert the navigation direction if the the completion popup-isearch-match
|
||||
;; is displayed on top (happens near the bottom of windows)
|
||||
(setq company-tooltip-flip-when-above t)
|
||||
|
||||
(global-company-mode 1)
|
||||
|
||||
|
||||
;; Trigger completion popup by pressing tab
|
||||
;; - from: https://github.com/company-mode/company-mode/issues/94#issuecomment-40884387
|
||||
(define-key company-mode-map [remap indent-for-tab-command]
|
||||
'company-indent-for-tab-command)
|
||||
|
||||
(setq tab-always-indent 'complete)
|
||||
|
||||
(defvar completion-at-point-functions-saved nil)
|
||||
|
||||
(defun company-indent-for-tab-command (&optional arg)
|
||||
(interactive "P")
|
||||
(let ((completion-at-point-functions-saved completion-at-point-functions)
|
||||
(completion-at-point-functions '(company-complete-common-wrapper)))
|
||||
(indent-for-tab-command arg)))
|
||||
|
||||
(defun company-complete-common-wrapper ()
|
||||
(let ((completion-at-point-functions completion-at-point-functions-saved))
|
||||
(company-complete-common)))
|
||||
|
||||
|
||||
(provide 'siren-company)
|
||||
27
modules/siren-css.el
Normal file
27
modules/siren-css.el
Normal file
@@ -0,0 +1,27 @@
|
||||
;;
|
||||
;; css
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(eval-after-load 'css-mode
|
||||
'(progn
|
||||
(siren-require-packages '(rainbow-mode))
|
||||
|
||||
(setq css-indent-offset 2)
|
||||
|
||||
(defun siren-css-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
(rainbow-mode +1)
|
||||
(setq tab-width 2)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode)
|
||||
(run-hooks 'siren-prog-mode-hook))
|
||||
|
||||
(setq siren-css-mode-hook 'siren-css-mode-defaults)
|
||||
|
||||
(add-hook 'css-mode-hook (lambda ()
|
||||
(run-hooks 'siren-css-mode-hook)))))
|
||||
|
||||
|
||||
(provide 'siren-css)
|
||||
22
modules/siren-cucumber.el
Normal file
22
modules/siren-cucumber.el
Normal file
@@ -0,0 +1,22 @@
|
||||
;;
|
||||
;; feature
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(siren-require-packages '(feature-mode))
|
||||
|
||||
(defun siren-feature-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
(setq tab-width 2)
|
||||
(setq highlight-indentation-offset 2)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode))
|
||||
|
||||
(setq siren-feature-mode-hook 'siren-feature-mode-defaults)
|
||||
|
||||
(add-hook 'feature-mode-hook (lambda ()
|
||||
(run-hooks 'siren-feature-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-cucumber)
|
||||
19
modules/siren-dired.el
Normal file
19
modules/siren-dired.el
Normal file
@@ -0,0 +1,19 @@
|
||||
;;
|
||||
;; dired
|
||||
;;
|
||||
|
||||
(siren-require-packages '(dired+))
|
||||
(require 'dired+)
|
||||
|
||||
(defun siren-dired-mode-defaults ()
|
||||
(linum-mode t)
|
||||
(define-key dired-mode-map (kbd "c") 'dired-create-directory)
|
||||
(toggle-diredp-find-file-reuse-dir 1))
|
||||
|
||||
(setq siren-dired-mode-hook 'siren-dired-mode-defaults)
|
||||
|
||||
(add-hook 'dired-mode-hook (lambda ()
|
||||
(run-hooks 'siren-dired-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-dired)
|
||||
31
modules/siren-ecb.el
Normal file
31
modules/siren-ecb.el
Normal file
@@ -0,0 +1,31 @@
|
||||
;;
|
||||
;; ecb
|
||||
;;
|
||||
|
||||
(siren-require-packages '(ecb))
|
||||
|
||||
(require 'ecb)
|
||||
|
||||
(setq ecb-layout-name "left13")
|
||||
(setq ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
|
||||
(setq ecb-tree-make-parent-node-sticky nil)
|
||||
(setq ecb-prescan-directories-for-emptyness nil)
|
||||
(setq ecb-tip-of-the-day nil)
|
||||
(setq ecb-tree-indent 3)
|
||||
(setq ecb-windows-width 0.24)
|
||||
(setq ecb-source-path
|
||||
(quote
|
||||
(("~/Projects" "Projects")
|
||||
("~/.emacs.d" ".emacs.d")
|
||||
("~/.dotfiles" ".dotfiles")
|
||||
("~/Projects/fitzdares" "fitzdares")
|
||||
("~/.go" ".go")
|
||||
("~/src" "src")
|
||||
("~/Sites" "Sites")
|
||||
("~" "~")
|
||||
("/" "/"))))
|
||||
|
||||
(if window-system (ecb-activate))
|
||||
|
||||
|
||||
(provide 'siren-ecb)
|
||||
27
modules/siren-elscreen.el
Normal file
27
modules/siren-elscreen.el
Normal file
@@ -0,0 +1,27 @@
|
||||
;;
|
||||
;; elscreen
|
||||
;;
|
||||
|
||||
(siren-require-packages '(elscreen))
|
||||
|
||||
(require 'elscreen)
|
||||
(define-key elscreen-map (kbd "C-z") elscreen-map)
|
||||
|
||||
;; Goto screens.
|
||||
(global-set-key (kbd "s-}") 'elscreen-next)
|
||||
(global-set-key (kbd "s-{") 'elscreen-previous)
|
||||
|
||||
;; Set screen nickname
|
||||
(define-key elscreen-map (kbd ",") 'elscreen-screen-nickname)
|
||||
(define-key elscreen-map (kbd "C-,") 'elscreen-screen-nickname)
|
||||
|
||||
;; Toggle screens.
|
||||
(define-key elscreen-map (kbd "l") 'elscreen-toggle)
|
||||
(define-key elscreen-map (kbd "C-l") 'elscreen-toggle)
|
||||
|
||||
;; Display list of screens.
|
||||
(define-key elscreen-map (kbd ";") 'elscreen-display-screen-name-list)
|
||||
(define-key elscreen-map (kbd "C-;") 'elscreen-display-screen-name-list)
|
||||
|
||||
|
||||
(provide 'siren-elscreen)
|
||||
47
modules/siren-emacs-lisp.el
Normal file
47
modules/siren-emacs-lisp.el
Normal file
@@ -0,0 +1,47 @@
|
||||
;;
|
||||
;; emacs-lisp
|
||||
;;
|
||||
|
||||
(siren-require-packages '(rainbow-mode))
|
||||
|
||||
(require 'siren-lisp)
|
||||
|
||||
(defun siren-recompile-elc-on-save ()
|
||||
"Recompile your elc when saving an elisp file."
|
||||
(add-hook 'after-save-hook
|
||||
(lambda ()
|
||||
(when (and
|
||||
(string-prefix-p siren-dir (file-truename buffer-file-name))
|
||||
(file-exists-p (byte-compile-dest-file buffer-file-name)))
|
||||
(emacs-lisp-byte-compile)))
|
||||
nil
|
||||
t))
|
||||
|
||||
(defun siren-conditional-emacs-lisp-checker ()
|
||||
"Don't check doc style in Emacs Lisp test files."
|
||||
(let ((file-name (buffer-file-name)))
|
||||
(when (and file-name (string-match-p ".*-tests?\\.el\\'" file-name))
|
||||
(setq-local flycheck-checkers '(emacs-lisp)))))
|
||||
|
||||
(defun siren-emacs-lisp-mode-defaults ()
|
||||
"Sensible defaults for `emacs-lisp-mode'."
|
||||
; (run-hooks 'siren-lisp-coding-hook)
|
||||
; (eldoc-mode +1)
|
||||
; (siren-recompile-elc-on-save)
|
||||
; (rainbow-mode +1)
|
||||
; (setq mode-name "EL")
|
||||
; (siren-conditional-emacs-lisp-checker)
|
||||
)
|
||||
|
||||
(setq siren-emacs-lisp-mode-hook 'siren-emacs-lisp-mode-defaults)
|
||||
|
||||
(add-hook 'emacs-lisp-mode-hook (lambda ()
|
||||
(run-hooks 'siren-emacs-lisp-mode-hook)))
|
||||
|
||||
(add-to-list 'auto-mode-alist '("Cask\\'" . emacs-lisp-mode))
|
||||
|
||||
(eval-after-load "rainbow-mode"
|
||||
'(diminish 'rainbow-mode))
|
||||
|
||||
|
||||
(provide 'siren-emacs-lisp)
|
||||
69
modules/siren-escreen.el
Normal file
69
modules/siren-escreen.el
Normal file
@@ -0,0 +1,69 @@
|
||||
;;
|
||||
;; escreen
|
||||
;;
|
||||
|
||||
(siren-require-packages '(escreen))
|
||||
|
||||
(require 'escreen)
|
||||
|
||||
;;
|
||||
;; Escreen Helper
|
||||
;; - from http://blog.nguyenvq.com/2011/03/07/escreen-instead-of-elscreen-for-screen-like-features-in-emacs/
|
||||
;;
|
||||
|
||||
(defun escreen-get-active-screen-numbers-with-emphasis ()
|
||||
"what the name says"
|
||||
(interactive)
|
||||
(let ((escreens (escreen-get-active-screen-numbers))
|
||||
(emphased ""))
|
||||
(dolist (s escreens)
|
||||
(setq emphased
|
||||
(concat emphased (if (= escreen-current-screen-number s)
|
||||
(propertize (number-to-string s)
|
||||
;;'face 'custom-variable-tag) " ")
|
||||
;;'face 'info-title-3)
|
||||
'face 'font-lock-warning-face)
|
||||
;;'face 'secondary-selection)
|
||||
(number-to-string s))
|
||||
" ")))
|
||||
(message "escreen: active screens: %s" emphased)))
|
||||
|
||||
;; Initialize escreen
|
||||
(escreen-install)
|
||||
|
||||
;; Set prefix key to C-z.
|
||||
(setq escreen-prefix-char (kbd "C-z"))
|
||||
(global-set-key escreen-prefix-char 'escreen-prefix)
|
||||
(define-key escreen-map escreen-prefix-char 'escreen-goto-last-screen)
|
||||
|
||||
;; Toggle screens.
|
||||
(define-key escreen-map (kbd "l") 'escreen-goto-last-screen)
|
||||
(define-key escreen-map (kbd "C-l") 'escreen-goto-last-screen)
|
||||
|
||||
;; List screens.
|
||||
(define-key escreen-map (kbd "a")
|
||||
'escreen-get-active-screen-numbers-with-emphasis)
|
||||
(define-key escreen-map (kbd "C-a")
|
||||
'escreen-get-active-screen-numbers-with-emphasis)
|
||||
(define-key escreen-map (kbd ";")
|
||||
'escreen-get-active-screen-numbers-with-emphasis)
|
||||
(define-key escreen-map (kbd "C-;")
|
||||
'escreen-get-active-screen-numbers-with-emphasis)
|
||||
|
||||
;; Goto screens.
|
||||
(global-set-key (kbd "s-}") 'escreen-goto-next-screen)
|
||||
(global-set-key (kbd "s-{") 'escreen-goto-prev-screen)
|
||||
|
||||
;; Ctrl versions of default commands.
|
||||
(define-key escreen-map (kbd "C-c") 'escreen-create-screen)
|
||||
(define-key escreen-map (kbd "C-g") 'escreen-goto-screen)
|
||||
(define-key escreen-map (kbd "C-k") 'escreen-kill-screen)
|
||||
(define-key escreen-map (kbd "C-n") 'escreen-goto-next-screen)
|
||||
(define-key escreen-map (kbd "C-p") 'escreen-goto-prev-screen)
|
||||
|
||||
;; Show list of screens when you switch/create/kill.
|
||||
(add-hook 'escreen-goto-screen-hook
|
||||
'escreen-get-active-screen-numbers-with-emphasis)
|
||||
|
||||
|
||||
(provide 'siren-escreen)
|
||||
11
modules/siren-exec-path-from-shell.el
Normal file
11
modules/siren-exec-path-from-shell.el
Normal file
@@ -0,0 +1,11 @@
|
||||
;;
|
||||
;; exec-path-from-shell
|
||||
;;
|
||||
|
||||
(siren-require-packages '(exec-path-from-shell))
|
||||
|
||||
(require 'exec-path-from-shell)
|
||||
(when (memq window-system '(mac ns))
|
||||
(exec-path-from-shell-initialize))
|
||||
|
||||
(provide 'siren-exec-path-from-shell)
|
||||
12
modules/siren-fci.el
Normal file
12
modules/siren-fci.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;;
|
||||
;; fci
|
||||
;;
|
||||
|
||||
(siren-require-packages '(fill-column-indicator))
|
||||
|
||||
(require 'fill-column-indicator)
|
||||
(setq fci-rule-width 1
|
||||
fci-handle-trucate-lines nil)
|
||||
|
||||
|
||||
(provide 'siren-fci)
|
||||
13
modules/siren-flycheck.el
Normal file
13
modules/siren-flycheck.el
Normal file
@@ -0,0 +1,13 @@
|
||||
;;
|
||||
;; flycheck
|
||||
;;
|
||||
|
||||
(siren-require-packages '(flycheck))
|
||||
|
||||
(require 'flycheck)
|
||||
(setq flycheck-completion-system 'ido)
|
||||
(setq flycheck-idle-change-delay 1.0)
|
||||
(setq flycheck-indication-mode 'right-fringe)
|
||||
|
||||
|
||||
(provide 'siren-flycheck)
|
||||
48
modules/siren-frame-transparency.el
Normal file
48
modules/siren-frame-transparency.el
Normal file
@@ -0,0 +1,48 @@
|
||||
;;
|
||||
;; frame transparency
|
||||
;;
|
||||
|
||||
(defun siren-frame-transparency-fix ()
|
||||
"Set initial value of alpha parameter for the current frame"
|
||||
(interactive)
|
||||
(if (equal (frame-parameter nil 'alpha) nil)
|
||||
(set-frame-parameter nil 'alpha 100)))
|
||||
|
||||
(defun siren-frame-transparency-increase ()
|
||||
"Increase level of transparency for the current frame"
|
||||
(interactive)
|
||||
(siren-frame-transparency-fix)
|
||||
(if (> (frame-parameter nil 'alpha) 0)
|
||||
(set-frame-parameter nil 'alpha (+ (frame-parameter nil 'alpha) -1))
|
||||
(message "This is a minimum value of transparency!")))
|
||||
|
||||
(defun siren-frame-transparency-decrease ()
|
||||
"Decrease level of transparency for the current frame"
|
||||
(interactive)
|
||||
(siren-frame-transparency-fix)
|
||||
(if (< (frame-parameter nil 'alpha) 100)
|
||||
(set-frame-parameter nil 'alpha (+ (frame-parameter nil 'alpha) +1))
|
||||
(message "This is a minimum value of transparency!")))
|
||||
|
||||
(defun siren-frame-transparency (numb)
|
||||
"Set level of transparency for the current frame"
|
||||
(interactive "nEnter transparency level in range 0-100: ")
|
||||
(if (> numb 100)
|
||||
(message "Error! The maximum value for transparency is 100!")
|
||||
(if (< numb 0)
|
||||
(message "Error! The minimum value for transparency is 0!")
|
||||
(set-frame-parameter nil 'alpha numb))))
|
||||
|
||||
(setq siren-transparency-level 99)
|
||||
(siren-frame-transparency siren-transparency-level)
|
||||
(add-hook 'after-make-frame-functions
|
||||
(lambda (selected-frame)
|
||||
(set-frame-parameter selected-frame 'alpha siren-transparency-level)))
|
||||
|
||||
;; Keybindings
|
||||
(global-set-key (kbd "C-M-|") 'siren-frame-transparency)
|
||||
(global-set-key (kbd "C-M-<") 'siren-frame-transparency-increase)
|
||||
(global-set-key (kbd "C-M->") 'siren-frame-transparency-decrease)
|
||||
|
||||
|
||||
(provide 'siren-frame-transparency)
|
||||
38
modules/siren-full-ack.el
Normal file
38
modules/siren-full-ack.el
Normal file
@@ -0,0 +1,38 @@
|
||||
;;
|
||||
;; full-ack
|
||||
;;
|
||||
|
||||
(siren-require-packages '(full-ack))
|
||||
|
||||
(require 'full-ack)
|
||||
(setq ack-arguments
|
||||
(quote ("--ignore-dir=vendor/ruby"
|
||||
"--ignore-dir=vendor/bundle"
|
||||
"--ignore-dir=coverage"
|
||||
"--ignore-dir=savefile"
|
||||
"--ignore-dir=Godeps"
|
||||
"--ignore-dir=elpa"
|
||||
"--ignore-dir=docs"
|
||||
"--ignore-dir=doc"
|
||||
"--type-add=js=.js,.js.erb"
|
||||
"--type-add=ruby=.jbuilder,.rabl"
|
||||
"--type-add=html=.haml,.hamlc,.jade"
|
||||
"--type-add=css=.sass,.scss,.styl"
|
||||
"--type-set=coffee=.coffee"
|
||||
"--type-set=cucumber=.feature")))
|
||||
(setq ack-project-root-file-patterns
|
||||
(quote (".project\\'"
|
||||
".xcodeproj\\'"
|
||||
".sln\\'"
|
||||
"\\`Project.ede\\'"
|
||||
"\\`.git\\'"
|
||||
"\\`.bzr\\'"
|
||||
"\\`_darcs\\'"
|
||||
"\\`.hg\\'"
|
||||
"\\`Gemfile\\'"
|
||||
"\\`Rakefile\\'"
|
||||
"\\`Makefile\\'")))
|
||||
(setq ack-prompt-for-directory 'unless-guessed)
|
||||
|
||||
|
||||
(provide 'siren-full-ack)
|
||||
10
modules/siren-github.el
Normal file
10
modules/siren-github.el
Normal file
@@ -0,0 +1,10 @@
|
||||
;;
|
||||
;; github
|
||||
;;
|
||||
|
||||
(siren-require-packages '(github-browse-file))
|
||||
|
||||
(require 'github-browse-file)
|
||||
|
||||
|
||||
(provide 'siren-github)
|
||||
89
modules/siren-global-keybindings.el
Normal file
89
modules/siren-global-keybindings.el
Normal file
@@ -0,0 +1,89 @@
|
||||
;;
|
||||
;; global keybindings (customized)
|
||||
;;
|
||||
|
||||
(require 'siren-helpers)
|
||||
|
||||
;; Enable dabbrev-expand via custom keybinding.
|
||||
(global-set-key (kbd "C-x M-/") 'dabbrev-expand)
|
||||
|
||||
;; Easier version of "C-x k" to kill buffer
|
||||
(global-set-key (kbd "C-x C-k") 'kill-buffer)
|
||||
|
||||
;; Evaluate buffer
|
||||
(global-set-key (kbd "C-c C-e") 'eval-buffer)
|
||||
|
||||
;; Duplicate line (via siren-helpers.el)
|
||||
(global-set-key (kbd "C-x C-d") 'duplicate-current-line-or-region)
|
||||
|
||||
;; Switch to next/previous buffer
|
||||
(global-set-key (kbd "C-c C-n") 'switch-to-next-buffer)
|
||||
(global-set-key (kbd "C-c C-p") 'switch-to-prev-buffer)
|
||||
|
||||
;; Window switching (via siren-helpers.el).
|
||||
(global-set-key (kbd "C-x i") 'other-window-reverse)
|
||||
(global-set-key (kbd "C-x C-o") 'other-window)
|
||||
(global-set-key (kbd "C-x C-i") 'other-window-reverse)
|
||||
|
||||
;; Kill-Ring related (via siren-helpers.el).
|
||||
(global-set-key (kbd "M-Y") 'yank-pop-forwards)
|
||||
|
||||
;; Align to equal signs (via siren-helpers.el).
|
||||
(global-set-key (kbd "C-x a =") 'align-region-to-equals)
|
||||
(global-set-key (kbd "M-]") 'align-region-to-equals)
|
||||
(global-set-key (kbd "C-x a {") 'align-region-to-opening-brace)
|
||||
|
||||
;; align-regexp
|
||||
(global-set-key (kbd "C-c C-a") 'align-regexp)
|
||||
|
||||
;; Toggle auto-fill-mode.
|
||||
(global-set-key (kbd "C-c q") 'auto-fill-mode)
|
||||
|
||||
;; Custom HideShow toggles (via siren-helpers.el)
|
||||
(global-set-key (kbd "C-=") 'toggle-selective-display)
|
||||
(global-set-key (kbd "C-\\") 'toggle-hiding)
|
||||
|
||||
;; undo/redo via undo-tree
|
||||
(global-set-key (kbd "M--") 'undo-tree-undo)
|
||||
(global-set-key (kbd "M-_") 'undo-tree-redo)
|
||||
|
||||
;; iBuffer
|
||||
(global-set-key (kbd "C-x C-b") 'ibuffer)
|
||||
|
||||
;; String inflections
|
||||
(siren-require-packages '(string-inflection))
|
||||
(require 'string-inflection)
|
||||
(global-set-key (kbd "C-c C-.") 'string-inflection-cycle)
|
||||
|
||||
;; Rename current file and buffer (via siren-helpers.el)
|
||||
(global-set-key (kbd "C-c r") 'rename-file-and-buffer)
|
||||
|
||||
;; Use siren-move-beginning-of-line
|
||||
(global-set-key (kbd "C-a") 'siren-move-beginning-of-line)
|
||||
|
||||
;; Mac OS X specific keybindings
|
||||
(when (eq system-type 'darwin)
|
||||
|
||||
;; Mac OS X Fullscreen (requires Emacs 24.4 or later)
|
||||
(global-set-key (kbd "s-<return>") 'toggle-frame-fullscreen)
|
||||
|
||||
;; Undo/Redo (via undo-tree)
|
||||
(when (require 'undo-tree nil 'noerror)
|
||||
(global-set-key (kbd "s-z") 'undo-tree-undo)
|
||||
(global-set-key (kbd "s-Z") 'undo-tree-redo))
|
||||
|
||||
;; Flyspell correct previous word
|
||||
(when (require 'flyspell nil 'noerror)
|
||||
(global-set-key (kbd "s-.") 'flyspell-correct-word-before-point))
|
||||
|
||||
;; Move to beginning/end of buffer
|
||||
(global-set-key (kbd "s-<up>") 'beginning-of-buffer)
|
||||
(global-set-key (kbd "s-<down>") 'end-of-buffer)
|
||||
|
||||
;; Move to beginning/end of line
|
||||
(global-set-key (kbd "s-<left>") 'beginning-of-line)
|
||||
(global-set-key (kbd "s-<right>") 'end-of-line))
|
||||
|
||||
|
||||
|
||||
(provide 'siren-global-keybindings)
|
||||
66
modules/siren-go.el
Normal file
66
modules/siren-go.el
Normal file
@@ -0,0 +1,66 @@
|
||||
;;
|
||||
;; go
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(setenv "GOPATH" (expand-file-name "~/.go"))
|
||||
|
||||
;; Ignore go test -c output files
|
||||
(add-to-list 'completion-ignored-extensions ".test")
|
||||
|
||||
(define-key 'help-command (kbd "G") 'godoc)
|
||||
|
||||
(eval-after-load 'go-mode
|
||||
'(progn
|
||||
(siren-require-packages
|
||||
'(go-mode go-autocomplete go-eldoc go-projectile gotest))
|
||||
|
||||
(require 'go-projectile)
|
||||
(require 'go-autocomplete)
|
||||
|
||||
(defun siren-go-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
|
||||
;; Add to default go-mode key bindings
|
||||
(let ((map go-mode-map))
|
||||
(define-key map (kbd "RET") 'newline-and-indent)
|
||||
(define-key map (kbd "C-c a") 'go-test-current-project)
|
||||
(define-key map (kbd "C-c m") 'go-test-current-file)
|
||||
(define-key map (kbd "C-c .") 'go-test-current-test)
|
||||
(define-key map (kbd "C-c b") 'go-run)
|
||||
(define-key map (kbd "C-h f") 'godoc-at-point))
|
||||
|
||||
;; Prefer goimports to gofmt if installed
|
||||
(let ((goimports (executable-find "goimports")))
|
||||
(when goimports
|
||||
(setq gofmt-command goimports)))
|
||||
|
||||
;; gofmt on save
|
||||
(add-hook 'before-save-hook 'gofmt-before-save nil t)
|
||||
|
||||
;; enable hide/show
|
||||
(hs-minor-mode 1)
|
||||
|
||||
;; stop whitespace being highlighted
|
||||
(whitespace-toggle-options '(tabs))
|
||||
|
||||
;; enable auto-complete
|
||||
(auto-complete-mode +1)
|
||||
|
||||
;; make tabs 4 spaces wide
|
||||
(setq tab-width 4)
|
||||
|
||||
;; El-doc for Go
|
||||
;; (go-eldoc-setup)
|
||||
|
||||
;; CamelCase aware editing operations
|
||||
(subword-mode +1))
|
||||
|
||||
(setq siren-go-mode-hook 'siren-go-mode-defaults)
|
||||
|
||||
(add-hook 'go-mode-hook (lambda ()
|
||||
(run-hooks 'siren-go-mode-hook)))))
|
||||
|
||||
|
||||
(provide 'siren-go)
|
||||
56
modules/siren-goto-symbol.el
Normal file
56
modules/siren-goto-symbol.el
Normal file
@@ -0,0 +1,56 @@
|
||||
;;
|
||||
;; goto-symbol
|
||||
;;
|
||||
|
||||
;; Shamelessly ripped from Emacs Prelude.
|
||||
|
||||
(require 'imenu)
|
||||
(set-default 'imenu-auto-rescan t)
|
||||
(set-default 'imenu-max-item-length 160)
|
||||
(set-default 'imenu-max-items 100)
|
||||
|
||||
(defun siren-goto-symbol (&optional symbol-list)
|
||||
"Refresh imenu and jump to a place in the buffer using Ido."
|
||||
(interactive)
|
||||
(cond
|
||||
((not symbol-list)
|
||||
(let (name-and-pos symbol-names position)
|
||||
(while (progn
|
||||
(imenu--cleanup)
|
||||
(setq imenu--index-alist nil)
|
||||
(siren-goto-symbol (imenu--make-index-alist))
|
||||
(setq selected-symbol
|
||||
(completing-read "Symbol? " (reverse symbol-names)))
|
||||
(string= (car imenu--rescan-item) selected-symbol)))
|
||||
(unless (and (boundp 'mark-active) mark-active)
|
||||
(push-mark nil t nil))
|
||||
(setq position (cdr (assoc selected-symbol name-and-pos)))
|
||||
(cond
|
||||
((overlayp position)
|
||||
(goto-char (overlay-start position)))
|
||||
(t
|
||||
(goto-char position)))
|
||||
(recenter)))
|
||||
((listp symbol-list)
|
||||
(dolist (symbol symbol-list)
|
||||
(let (name position)
|
||||
(cond
|
||||
((and (listp symbol) (imenu--subalist-p symbol))
|
||||
(siren-goto-symbol symbol))
|
||||
((listp symbol)
|
||||
(setq name (car symbol))
|
||||
(setq position (cdr symbol)))
|
||||
((stringp symbol)
|
||||
(setq name symbol)
|
||||
(setq position
|
||||
(get-text-property 1 'org-imenu-marker symbol))))
|
||||
(unless (or (null position) (null name)
|
||||
(string= (car imenu--rescan-item) name))
|
||||
(add-to-list 'symbol-names (substring-no-properties name))
|
||||
(add-to-list 'name-and-pos (cons (substring-no-properties name) position))))))))
|
||||
|
||||
|
||||
(global-set-key (kbd "C-t") 'siren-goto-symbol)
|
||||
|
||||
|
||||
(provide 'siren-goto-symbol)
|
||||
23
modules/siren-haml.el
Normal file
23
modules/siren-haml.el
Normal file
@@ -0,0 +1,23 @@
|
||||
;;
|
||||
;; haml
|
||||
;;
|
||||
|
||||
(siren-require-packages '(haml-mode))
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.hamlc\\'" . haml-mode))
|
||||
|
||||
(defun siren-haml-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
(setq tab-width 2)
|
||||
(setq highlight-indentation-offset 2)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode))
|
||||
|
||||
(setq siren-haml-mode-hook 'siren-haml-mode-defaults)
|
||||
|
||||
(add-hook 'haml-mode-hook (lambda () (run-hooks 'siren-haml-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-haml)
|
||||
39
modules/siren-helm.el
Normal file
39
modules/siren-helm.el
Normal file
@@ -0,0 +1,39 @@
|
||||
;;
|
||||
;; helm
|
||||
;;
|
||||
|
||||
(siren-require-packages '(helm helm-swoop helm-projectile helm-open-github))
|
||||
|
||||
(require 'helm)
|
||||
(require 'helm-swoop)
|
||||
(require 'helm-projectile)
|
||||
(require 'helm-open-github)
|
||||
|
||||
(setq helm-ag-source-type "file-line"
|
||||
helm-open-github-commit-limit 10000)
|
||||
|
||||
;; Helm
|
||||
(define-key helm-map (kbd "<up>") 'previous-history-element)
|
||||
(define-key helm-map (kbd "<down>") 'next-history-element)
|
||||
(define-key helm-map (kbd "M-p") 'helm-previous-source)
|
||||
(define-key helm-map (kbd "M-n") 'helm-next-source)
|
||||
(global-set-key (kbd "C-c h") 'helm-mini)
|
||||
|
||||
;; Helm Swoop
|
||||
(global-set-key (kbd "M-r") 'helm-swoop)
|
||||
(global-set-key (kbd "M-R") 'helm-swoop-back-to-last-point)
|
||||
(global-set-key (kbd "C-c M-r") 'helm-multi-swoop)
|
||||
(global-set-key (kbd "C-x M-r") 'helm-multi-swoop-all)
|
||||
|
||||
;; Helm Projectile
|
||||
(global-set-key (kbd "C-c ;") 'helm-projectile)
|
||||
(global-set-key (kbd "C-c C-;") 'helm-projectile)
|
||||
|
||||
;; Helm Open Github
|
||||
(global-set-key (kbd "C-c o f") 'helm-open-github-from-file)
|
||||
(global-set-key (kbd "C-c o c") 'helm-open-github-from-commit)
|
||||
(global-set-key (kbd "C-c o i") 'helm-open-github-from-issues)
|
||||
(global-set-key (kbd "C-c o p") 'helm-open-github-from-pull-requests)
|
||||
|
||||
|
||||
(provide 'siren-helm)
|
||||
107
modules/siren-helpers.el
Normal file
107
modules/siren-helpers.el
Normal file
@@ -0,0 +1,107 @@
|
||||
;;
|
||||
;; helpers
|
||||
;;
|
||||
|
||||
;;
|
||||
;; Duplicate Line
|
||||
;; - from: http://tuxicity.se/emacs/elisp/2010/03/11/duplicate-current-line-or-region-in-emacs.html
|
||||
;;
|
||||
|
||||
(defun duplicate-current-line-or-region (arg)
|
||||
"Duplicates the current line or region ARG times.
|
||||
If there's no region, the current line will be duplicated. However, if
|
||||
there's a region, all lines that region covers will be duplicated."
|
||||
(interactive "p")
|
||||
(let (beg end (origin (point)))
|
||||
(if (and mark-active (> (point) (mark)))
|
||||
(exchange-point-and-mark))
|
||||
(setq beg (line-beginning-position))
|
||||
(if mark-active
|
||||
(exchange-point-and-mark))
|
||||
(setq end (line-end-position))
|
||||
(let ((region (buffer-substring-no-properties beg end)))
|
||||
(dotimes (i arg)
|
||||
(goto-char end)
|
||||
(newline)
|
||||
(insert region)
|
||||
(setq end (point)))
|
||||
(goto-char (+ origin (* (length region) arg) arg)))))
|
||||
|
||||
|
||||
;;
|
||||
;; Align Equal Signs
|
||||
;;
|
||||
|
||||
(defun align-region-to-equals (begin end)
|
||||
"Align region to equal signs"
|
||||
(interactive "r")
|
||||
(align-regexp begin end "\\(\\s-*\\)=" 1 1 ))
|
||||
|
||||
(defun align-region-to-opening-brace (begin end)
|
||||
"Align region to equal signs"
|
||||
(interactive "r")
|
||||
(align-regexp begin end "\\(\\s-*\\){" 1 1 ))
|
||||
|
||||
|
||||
;;
|
||||
;; Yank Pop Forwards
|
||||
;;
|
||||
|
||||
(defun yank-pop-forwards (arg)
|
||||
(interactive "p")
|
||||
(yank-pop (- arg)))
|
||||
|
||||
|
||||
;;
|
||||
;; Window Switching
|
||||
;;
|
||||
|
||||
(defun other-window-reverse ()
|
||||
"Switch to the previous window"
|
||||
(interactive)
|
||||
(other-window -1))
|
||||
|
||||
|
||||
;;
|
||||
;; HideShow mode helpers
|
||||
;; - from: http://www.emacswiki.org/emacs/HideShow
|
||||
;;
|
||||
(defun toggle-selective-display (column)
|
||||
(interactive "P")
|
||||
(set-selective-display
|
||||
(or column
|
||||
(unless selective-display
|
||||
(1+ (current-column))))))
|
||||
|
||||
(defun toggle-hiding (column)
|
||||
(interactive "P")
|
||||
(if hs-minor-mode
|
||||
(if (condition-case nil
|
||||
(hs-toggle-hiding)
|
||||
(error t))
|
||||
(hs-show-all))
|
||||
(toggle-selective-display column)))
|
||||
|
||||
|
||||
;;
|
||||
;; File and Buffer Renaming
|
||||
;; - from: http://emacsredux.com/blog/2013/05/04/rename-file-and-buffer/
|
||||
;;
|
||||
|
||||
(defun rename-file-and-buffer ()
|
||||
"Rename the current buffer and file it is visiting."
|
||||
(interactive)
|
||||
(let ((filename (buffer-file-name)))
|
||||
(if (not (and filename (file-exists-p filename)))
|
||||
(message "Buffer is not visiting a file!")
|
||||
(let ((new-name (read-file-name "New name: " filename)))
|
||||
(cond
|
||||
((vc-backend filename) (vc-rename-file filename new-name))
|
||||
(t
|
||||
(rename-file filename new-name t)
|
||||
(rename-buffer new-name)
|
||||
(set-visited-file-name new-name)
|
||||
(set-buffer-modified-p nil)))))))
|
||||
|
||||
|
||||
(provide 'siren-helpers)
|
||||
12
modules/siren-highlight-indentation.el
Normal file
12
modules/siren-highlight-indentation.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;;
|
||||
;; highlight-indentation
|
||||
;;
|
||||
|
||||
(siren-require-packages '(highlight-indentation))
|
||||
|
||||
(require 'highlight-indentation)
|
||||
(diminish 'highlight-indentation-mode)
|
||||
(diminish 'highlight-indentation-current-column-mode)
|
||||
|
||||
|
||||
(provide 'siren-highlight-indentation)
|
||||
36
modules/siren-ido.el
Normal file
36
modules/siren-ido.el
Normal file
@@ -0,0 +1,36 @@
|
||||
;;
|
||||
;; ido relateed
|
||||
;;
|
||||
|
||||
(siren-require-packages '(ido-ubiquitous ido-vertical-mode smex))
|
||||
|
||||
(require 'ido)
|
||||
(require 'ido-ubiquitous)
|
||||
(require 'ido-vertical-mode)
|
||||
|
||||
(setq ido-enable-prefix nil
|
||||
ido-enable-flex-matching t
|
||||
ido-create-new-buffer 'always
|
||||
ido-use-filename-at-point 'guess
|
||||
ido-max-prospects 10
|
||||
ido-save-directory-list-file (expand-file-name "ido.hist" siren-savefile-dir)
|
||||
ido-default-file-method 'selected-window
|
||||
ido-auto-merge-work-directories-length -1
|
||||
ido-vertical-define-keys "C-n-C-p-up-down-left-right")
|
||||
|
||||
(ido-mode +1)
|
||||
(ido-ubiquitous-mode +1)
|
||||
(ido-vertical-mode +1)
|
||||
|
||||
;; disable ido faces to see flx highlights
|
||||
(setq ido-use-faces nil)
|
||||
|
||||
;;; smex, remember recently and most frequently used commands
|
||||
(require 'smex)
|
||||
(setq smex-save-file (expand-file-name ".smex-items" siren-savefile-dir))
|
||||
(smex-initialize)
|
||||
(global-set-key (kbd "M-x") 'smex)
|
||||
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
|
||||
|
||||
|
||||
(provide 'siren-ido)
|
||||
14
modules/siren-linum.el
Normal file
14
modules/siren-linum.el
Normal file
@@ -0,0 +1,14 @@
|
||||
;;
|
||||
;; linum
|
||||
;;
|
||||
|
||||
;; Customize line numbers - In gui mode the fringe is the spacer between line
|
||||
;; numbers and code, while in console mode we add an extra space for it.
|
||||
(if window-system (setq linum+-dynamic-format " %%%dd")
|
||||
(setq linum+-dynamic-format " %%%dd "))
|
||||
|
||||
(eval-after-load "linum+" '(progn (setq linum-format 'dynamic)))
|
||||
|
||||
(require 'linum+)
|
||||
|
||||
(provide 'siren-linum)
|
||||
34
modules/siren-lisp.el
Normal file
34
modules/siren-lisp.el
Normal file
@@ -0,0 +1,34 @@
|
||||
;;
|
||||
;; lisp
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
(siren-require-packages '(rainbow-delimiters))
|
||||
|
||||
;; Lisp configuration
|
||||
(define-key read-expression-map (kbd "TAB") 'completion-at-point)
|
||||
|
||||
;; wrap keybindings
|
||||
(define-key lisp-mode-shared-map (kbd "M-(") (siren-wrap-with "("))
|
||||
;; FIXME: Pick terminal-friendly binding.
|
||||
;;(define-key lisp-mode-shared-map (kbd "M-[") (siren-wrap-with "["))
|
||||
(define-key lisp-mode-shared-map (kbd "M-\"") (siren-wrap-with "\""))
|
||||
|
||||
;; a great lisp coding hook
|
||||
(defun siren-lisp-coding-defaults ()
|
||||
;; (smartparens-strict-mode +1)
|
||||
(rainbow-delimiters-mode +1)
|
||||
)
|
||||
|
||||
(setq siren-lisp-coding-hook 'siren-lisp-coding-defaults)
|
||||
|
||||
;; interactive modes don't need whitespace checks
|
||||
(defun siren-interactive-lisp-coding-defaults ()
|
||||
;; (smartparens-strict-mode +1)
|
||||
(rainbow-delimiters-mode +1)
|
||||
(whitespace-mode -1))
|
||||
|
||||
(setq siren-interactive-lisp-coding-hook 'siren-interactive-lisp-coding-defaults)
|
||||
|
||||
|
||||
(provide 'siren-lisp)
|
||||
46
modules/siren-magit.el
Normal file
46
modules/siren-magit.el
Normal file
@@ -0,0 +1,46 @@
|
||||
;;
|
||||
;; magit
|
||||
;;
|
||||
|
||||
|
||||
(siren-require-packages '(magit))
|
||||
|
||||
(require 'siren-fci)
|
||||
(require 'magit)
|
||||
|
||||
(setq magit-completing-read-function 'magit-ido-completing-read)
|
||||
(setq magit-status-buffer-switch-function 'switch-to-buffer)
|
||||
(setq magit-bury-buffer-function 'magit-mode-quit-window)
|
||||
(setq magit-default-tracking-name-function
|
||||
'magit-default-tracking-name-branch-only)
|
||||
(setq magit-repository-directories
|
||||
(quote ("~/Projects" "~/src" "~/.emacs.d" "~/.dotfiles")))
|
||||
|
||||
(global-set-key (kbd "C-x g") 'magit-status)
|
||||
(defalias 'bl 'magit-blame)
|
||||
|
||||
;; Configure magit-mode
|
||||
(defun siren-magit-mode-defaults ()
|
||||
;; (linum-mode t) ;; Causes magit to freeze sometimes
|
||||
)
|
||||
|
||||
(setq siren-magit-mode-hook 'siren-magit-mode-defaults)
|
||||
|
||||
(add-hook 'magit-mode-hook (lambda () (run-hooks 'siren-magit-mode-hook)))
|
||||
|
||||
;; Configure git-commit-mode
|
||||
(defun siren-git-commit-mode-defaults ()
|
||||
(subword-mode +1)
|
||||
(setq tab-width 2)
|
||||
(flyspell-mode)
|
||||
(linum-mode t)
|
||||
(auto-fill-mode)
|
||||
(subword-mode))
|
||||
|
||||
(setq siren-git-commit-mode-hook 'siren-git-commit-mode-defaults)
|
||||
|
||||
(add-hook 'git-commit-mode-hook (lambda ()
|
||||
(run-hooks 'siren-git-commit-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-magit)
|
||||
21
modules/siren-makefile.el
Normal file
21
modules/siren-makefile.el
Normal file
@@ -0,0 +1,21 @@
|
||||
;;
|
||||
;; makefile
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(defun siren-makefile-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
(subword-mode)
|
||||
(setq tab-width 4)
|
||||
(setq highlight-indentation-offset 4)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode))
|
||||
|
||||
(setq siren-makefile-mode-hook 'siren-makefile-mode-defaults)
|
||||
|
||||
(add-hook 'makefile-mode-hook (lambda ()
|
||||
(run-hooks 'siren-makefile-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-makefile)
|
||||
32
modules/siren-markdown.el
Normal file
32
modules/siren-markdown.el
Normal file
@@ -0,0 +1,32 @@
|
||||
;;
|
||||
;; sass
|
||||
;;
|
||||
|
||||
(siren-require-packages '(markdown-mode))
|
||||
|
||||
(require 'markdown-mode)
|
||||
|
||||
(setq markdown-command "redcarpet")
|
||||
|
||||
(setq auto-mode-alist (cons '("\\.md" . markdown-mode) auto-mode-alist))
|
||||
(setq auto-mode-alist (cons '("\\.mkd" . markdown-mode) auto-mode-alist))
|
||||
(setq auto-mode-alist (cons '("\\.mkdn" . markdown-mode) auto-mode-alist))
|
||||
(setq auto-mode-alist (cons '("\\.mdown" . markdown-mode) auto-mode-alist))
|
||||
(setq auto-mode-alist (cons '("\\.markdown" . markdown-mode) auto-mode-alist))
|
||||
|
||||
(defun siren-markdown-mode-defaults ()
|
||||
(setq whitespace-action nil)
|
||||
(setq fill-column 80)
|
||||
(fci-mode)
|
||||
(linum-mode t)
|
||||
(flyspell-mode)
|
||||
(auto-fill-mode)
|
||||
(subword-mode)
|
||||
(define-key markdown-mode-map (kbd "C-c p") 'markdown-preview))
|
||||
|
||||
(setq siren-markdown-mode-hook 'siren-markdown-mode-defaults)
|
||||
|
||||
(add-hook 'markdown-mode-hook (lambda () (run-hooks 'siren-markdown-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-markdown)
|
||||
34
modules/siren-move-beginning-of-line.el
Normal file
34
modules/siren-move-beginning-of-line.el
Normal file
@@ -0,0 +1,34 @@
|
||||
;;
|
||||
;; move-beginning-of-line
|
||||
;;
|
||||
|
||||
;; Borrowed from:
|
||||
;; - http://emacsredux.com/blog/2013/05/22/smarter-navigation-to-the-beginning-of-a-line/
|
||||
(defun siren-move-beginning-of-line (arg)
|
||||
"Move point back to indentation of beginning of line.
|
||||
|
||||
Move point to the first non-whitespace character on this line.
|
||||
If point is already there, move to the beginning of the line.
|
||||
Effectively toggle between the first non-whitespace character and
|
||||
the beginning of the line.
|
||||
|
||||
If ARG is not nil or 1, move forward ARG - 1 lines first. If
|
||||
point reaches the beginning or end of the buffer, stop there."
|
||||
(interactive "^p")
|
||||
(setq arg (or arg 1))
|
||||
|
||||
;; Move lines first
|
||||
(when (/= arg 1)
|
||||
(let ((line-move-visual nil))
|
||||
(forward-line (1- arg))))
|
||||
|
||||
(let ((orig-point (point)))
|
||||
(back-to-indentation)
|
||||
(when (= orig-point (point))
|
||||
(move-beginning-of-line 1))))
|
||||
|
||||
(global-set-key [remap move-beginning-of-line]
|
||||
'siren-move-beginning-of-line)
|
||||
|
||||
|
||||
(provide 'siren-move-beginning-of-line)
|
||||
23
modules/siren-multiple-cursors.el
Normal file
23
modules/siren-multiple-cursors.el
Normal file
@@ -0,0 +1,23 @@
|
||||
;;
|
||||
;; multiple-cursors
|
||||
;;
|
||||
|
||||
(siren-require-packages '(multiple-cursors))
|
||||
|
||||
(require 'multiple-cursors)
|
||||
(setq mc/edit-lines-empty-lines 'ignore)
|
||||
|
||||
(global-set-key (kbd "C-x C-@") 'mc/edit-lines) ;; Terminal
|
||||
(global-set-key (kbd "C-x C-SPC") 'mc/edit-lines) ;; GUI
|
||||
|
||||
(global-set-key (kbd "M-/") 'mc/mark-next-like-this)
|
||||
(global-set-key (kbd "M-m") 'mc/mark-previous-like-this)
|
||||
(global-set-key (kbd "C-c M-/") 'mc/mark-all-like-this)
|
||||
(global-set-key (kbd "M-RET") 'set-rectangular-region-anchor)
|
||||
|
||||
;; Make alt-<click> add additional cursors
|
||||
(global-unset-key (kbd "M-<down-mouse-1>")) ;; must unset key first
|
||||
(global-set-key (kbd "M-<mouse-1>") 'mc/add-cursor-on-click)
|
||||
|
||||
|
||||
(provide 'siren-multiple-cursors)
|
||||
10
modules/siren-neotree.el
Normal file
10
modules/siren-neotree.el
Normal file
@@ -0,0 +1,10 @@
|
||||
;;
|
||||
;; neotree
|
||||
;;
|
||||
|
||||
(siren-require-packages '(neotree))
|
||||
|
||||
(require 'neotree)
|
||||
;; (global-set-key (kbd "C-x p") 'neotree-open)
|
||||
|
||||
(provide 'siren-neotree)
|
||||
37
modules/siren-perspective.el
Normal file
37
modules/siren-perspective.el
Normal file
@@ -0,0 +1,37 @@
|
||||
;;
|
||||
;; perspective
|
||||
;;
|
||||
|
||||
(siren-require-packages '(perspective))
|
||||
|
||||
(require 'perspective)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z") perspective-map)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z s") 'persp-switch)
|
||||
(define-key persp-mode-map (kbd "C-z C-s") 'persp-switch)
|
||||
(define-key persp-mode-map (kbd "C-z b") 'persp-switch)
|
||||
(define-key persp-mode-map (kbd "C-z C-b") 'persp-switch)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z c") 'persp-remove-buffer)
|
||||
(define-key persp-mode-map (kbd "C-z C-c") 'persp-remove-buffer)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z k") 'persp-kill)
|
||||
(define-key persp-mode-map (kbd "C-z C-k") 'persp-kill)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z r") 'persp-rename)
|
||||
(define-key persp-mode-map (kbd "C-z C-r") 'persp-rename)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z a") 'persp-add-buffer)
|
||||
(define-key persp-mode-map (kbd "C-z C-a") 'persp-add-buffer)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z i") 'persp-import)
|
||||
(define-key persp-mode-map (kbd "C-z C-i") 'persp-import)
|
||||
|
||||
(define-key persp-mode-map (kbd "C-z n") 'persp-next)
|
||||
(define-key persp-mode-map (kbd "C-z C-n") 'persp-next)
|
||||
(define-key persp-mode-map (kbd "C-z p") 'persp-prev)
|
||||
(define-key persp-mode-map (kbd "C-z C-p") 'persp-prev)
|
||||
|
||||
|
||||
(provide 'siren-perspective)
|
||||
12
modules/siren-phi-search.el
Normal file
12
modules/siren-phi-search.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;;
|
||||
;; phi-search
|
||||
;;
|
||||
|
||||
(siren-require-packages '(phi-search))
|
||||
|
||||
(require 'phi-search)
|
||||
(global-set-key (kbd "C-s") 'phi-search)
|
||||
(global-set-key (kbd "C-r") 'phi-search-backward)
|
||||
|
||||
|
||||
(provide 'siren-phi-search)
|
||||
32
modules/siren-programming.el
Normal file
32
modules/siren-programming.el
Normal file
@@ -0,0 +1,32 @@
|
||||
;;
|
||||
;; programming
|
||||
;;
|
||||
|
||||
(require 'siren-fci)
|
||||
(require 'siren-flycheck)
|
||||
(require 'siren-smartparens)
|
||||
(require 'siren-highlight-indentation)
|
||||
|
||||
(defun siren-prog-mode-defaults ()
|
||||
"Default coding hook, useful with any programming language."
|
||||
(setq fill-column 80)
|
||||
(linum-mode t)
|
||||
(flyspell-prog-mode)
|
||||
(fci-mode)
|
||||
(smartparens-mode +1)
|
||||
(setq whitespace-action (quote (auto-cleanup)))
|
||||
(visual-line-mode +1)
|
||||
(whitespace-mode +1))
|
||||
|
||||
(setq siren-prog-mode-hook 'siren-prog-mode-defaults)
|
||||
|
||||
(add-hook 'prog-mode-hook (lambda ()
|
||||
(run-hooks 'siren-prog-mode-hook)))
|
||||
|
||||
;; enable on-the-fly syntax checking
|
||||
(if (fboundp 'global-flycheck-mode)
|
||||
(global-flycheck-mode +1)
|
||||
(add-hook 'prog-mode-hook 'flycheck-mode))
|
||||
|
||||
|
||||
(provide 'siren-programming)
|
||||
30
modules/siren-project-explorer.el
Normal file
30
modules/siren-project-explorer.el
Normal file
@@ -0,0 +1,30 @@
|
||||
;;
|
||||
;; project-explorer
|
||||
;;
|
||||
|
||||
(siren-require-packages '(project-explorer))
|
||||
|
||||
(require 'project-explorer)
|
||||
(setq pe/follow-current t)
|
||||
(setq pe/width 54)
|
||||
(setq pe/cache-directory (expand-file-name
|
||||
"project-explorer-cache" siren-savefile-dir))
|
||||
|
||||
(global-set-key (kbd "C-x p") 'project-explorer-open)
|
||||
|
||||
;; Make Project Explorer open selected file in last used buffer
|
||||
(setq pe/display-content-buffer-function
|
||||
(lambda (buffer)
|
||||
(let* (( last-buffer
|
||||
(car (cl-remove 'project-explorer-mode
|
||||
(buffer-list)
|
||||
:key (apply-partially 'buffer-local-value
|
||||
'major-mode))))
|
||||
( window (get-buffer-window last-buffer)))
|
||||
(if window
|
||||
(set-window-buffer window buffer)
|
||||
(pe/show-buffer buffer)))
|
||||
))
|
||||
|
||||
|
||||
(provide 'siren-project-explorer)
|
||||
51
modules/siren-projectile.el
Normal file
51
modules/siren-projectile.el
Normal file
@@ -0,0 +1,51 @@
|
||||
;;
|
||||
;; projectile
|
||||
;;
|
||||
|
||||
(siren-require-packages '(projectile))
|
||||
|
||||
(require 'projectile)
|
||||
(setq projectile-completion-system 'ido)
|
||||
(setq projectile-enable-caching nil)
|
||||
(setq projectile-globally-ignored-directories
|
||||
(quote (".idea"
|
||||
".eunit"
|
||||
".git"
|
||||
".hg"
|
||||
".fslckout"
|
||||
".bzr"
|
||||
".svn"
|
||||
"_darcs"
|
||||
"vendor/bundle"
|
||||
"vendor/ruby"
|
||||
"coverage"
|
||||
"docs"
|
||||
"doc"
|
||||
"log"
|
||||
"logs"
|
||||
"tmp"
|
||||
"Godeps"
|
||||
"elpa"
|
||||
"savefile")))
|
||||
(setq projectile-globally-ignored-files (quote ("TAGS" "*.log")))
|
||||
(setq projectile-sort-order 'recently-active)
|
||||
|
||||
(setq projectile-cache-file (expand-file-name
|
||||
"projectile.cache" siren-savefile-dir))
|
||||
|
||||
;; Bug lets projectile write to the file, but not read from it
|
||||
;; (setq projectile-known-projects-file (expand-file-name
|
||||
;; "projectile-bookmarks.eld" siren-savefile-dir))
|
||||
|
||||
|
||||
(projectile-global-mode t)
|
||||
|
||||
;; Keybindings
|
||||
(global-set-key (kbd "C-c C-b") 'projectile-ibuffer)
|
||||
(global-set-key (kbd "C-x C-t") 'projectile-find-file)
|
||||
(global-set-key (kbd "C-x t") 'projectile-find-test-file)
|
||||
(global-set-key (kbd "C-x C-v") 'projectile-switch-to-buffer)
|
||||
(global-set-key (kbd "C-c C-s") 'projectile-switch-project)
|
||||
|
||||
|
||||
(provide 'siren-projectile)
|
||||
83
modules/siren-ruby.el
Normal file
83
modules/siren-ruby.el
Normal file
@@ -0,0 +1,83 @@
|
||||
;;
|
||||
;; ruby
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(siren-require-packages '(ruby-tools inf-ruby yari company-inf-ruby))
|
||||
|
||||
;; Force-load custom vendored ruby-mode fetched from:
|
||||
;; - https://raw.github.com/ruby/ruby/trunk/misc/ruby-mode.el
|
||||
(load (expand-file-name "ruby-mode.el" siren-vendor-dir))
|
||||
|
||||
;; Rake files are ruby, too, as are gemspecs, rackup files, and gemfiles.
|
||||
(add-to-list 'auto-mode-alist '("\\.rake\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Rakefile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.gemspec\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.ru\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Gemfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Guardfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Capfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.cap\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.thor\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.rabl\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Thorfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Vagrantfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.jbuilder\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Podfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.podspec\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Puppetfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Berksfile\\'" . ruby-mode))
|
||||
(add-to-list 'auto-mode-alist '("Appraisals\\'" . ruby-mode))
|
||||
|
||||
;; We never want to edit Rubinius bytecode
|
||||
(add-to-list 'completion-ignored-extensions ".rbc")
|
||||
|
||||
(define-key 'help-command (kbd "R") 'yari)
|
||||
|
||||
;; Set up hs-mode (HideShow) for Ruby
|
||||
(add-to-list 'hs-special-modes-alist
|
||||
`(ruby-mode
|
||||
,(rx (or "def" "class" "module" "do")) ;; Block start
|
||||
,(rx (or "end")) ;; Block end
|
||||
,(rx (or "#" "=begin")) ;; Comment start
|
||||
ruby-forward-sexp nil))
|
||||
|
||||
(eval-after-load 'company
|
||||
'(add-to-list 'company-backends 'company-inf-ruby))
|
||||
|
||||
(eval-after-load 'ruby-mode
|
||||
'(progn
|
||||
(defun siren-ruby-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
(inf-ruby-minor-mode +1)
|
||||
(ruby-tools-mode +1)
|
||||
(setq tab-width 2)
|
||||
(hs-minor-mode 1)
|
||||
(company-mode +1)
|
||||
(subword-mode +1)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode)
|
||||
(setq ruby-deep-arglist nil)
|
||||
(setq ruby-deep-indent-paren nil)
|
||||
(setq c-tab-always-indent nil)
|
||||
(setq ruby-use-encoding-map nil)
|
||||
(define-key ruby-mode-map (kbd "C-j") 'newline-and-indent)
|
||||
(define-key ruby-mode-map (kbd "RET") 'newline-and-indent)
|
||||
(define-key ruby-mode-map (kbd "C-c C-h") 'toggle-hiding)
|
||||
(define-key ruby-mode-map (kbd "C-c C-l") 'goto-line))
|
||||
|
||||
(setq siren-ruby-mode-hook 'siren-ruby-mode-defaults)
|
||||
|
||||
(add-hook 'ruby-mode-hook (lambda ()
|
||||
(run-hooks 'siren-ruby-mode-hook)))))
|
||||
|
||||
;; ;; Auto-complete when indenting
|
||||
;; (defadvice ruby-indent-command (around ac-before-ruby-indent activate)
|
||||
;; "Call `auto-complete' if text was recently entered"
|
||||
;; (if (ac-trigger-command-p last-command)
|
||||
;; (auto-complete)
|
||||
;; ad-do-it))
|
||||
|
||||
|
||||
(provide 'siren-ruby)
|
||||
19
modules/siren-sass.el
Normal file
19
modules/siren-sass.el
Normal file
@@ -0,0 +1,19 @@
|
||||
;;
|
||||
;; sass
|
||||
;;
|
||||
|
||||
(require 'siren-css)
|
||||
(siren-require-packages '(sass-mode))
|
||||
|
||||
;; turn off annoying auto-compile on save
|
||||
(setq sass-compile-at-save nil)
|
||||
|
||||
(defun siren-sass-mode-defaults ()
|
||||
(siren-css-mode-defaults))
|
||||
|
||||
(setq siren-sass-mode-hook 'siren-sass-mode-defaults)
|
||||
|
||||
(add-hook 'sass-mode-hook (lambda () (run-hooks 'siren-sass-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-sass)
|
||||
17
modules/siren-scroll-half-screen.el
Normal file
17
modules/siren-scroll-half-screen.el
Normal file
@@ -0,0 +1,17 @@
|
||||
;;
|
||||
;; scroll-half-screen
|
||||
;;
|
||||
|
||||
;; Scroll half a screen when using scroll-up and scroll-down functions.
|
||||
(defadvice scroll-up (around half-window activate)
|
||||
(setq next-screen-context-lines
|
||||
(max 1 (/ (1- (window-height (selected-window))) 2)))
|
||||
ad-do-it)
|
||||
|
||||
(defadvice scroll-down (around half-window activate)
|
||||
(setq next-screen-context-lines
|
||||
(max 1 (/ (1- (window-height (selected-window))) 2)))
|
||||
ad-do-it)
|
||||
|
||||
|
||||
(provide 'siren-scroll-half-screen)
|
||||
19
modules/siren-scss.el
Normal file
19
modules/siren-scss.el
Normal file
@@ -0,0 +1,19 @@
|
||||
;;
|
||||
;; scss
|
||||
;;
|
||||
|
||||
(require 'siren-css)
|
||||
(siren-require-packages '(scss-mode))
|
||||
|
||||
;; turn off annoying auto-compile on save
|
||||
(setq scss-compile-at-save nil)
|
||||
|
||||
(defun siren-scss-mode-defaults ()
|
||||
(siren-css-mode-defaults))
|
||||
|
||||
(setq siren-scss-mode-hook 'siren-scss-mode-defaults)
|
||||
|
||||
(add-hook 'scss-mode-hook (lambda () (run-hooks 'siren-scss-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-scss)
|
||||
26
modules/siren-sh.el
Normal file
26
modules/siren-sh.el
Normal file
@@ -0,0 +1,26 @@
|
||||
;;
|
||||
;; shell
|
||||
;;
|
||||
|
||||
(require 'siren-programming)
|
||||
|
||||
(defun siren-sh-mode-defaults ()
|
||||
(siren-prog-mode-defaults)
|
||||
|
||||
(subword-mode +1)
|
||||
(setq tab-width 2)
|
||||
(setq sh-basic-offset 2)
|
||||
(setq sh-indentation 2)
|
||||
(setq highlight-indentation-offset 2)
|
||||
(highlight-indentation-mode)
|
||||
(highlight-indentation-current-column-mode)
|
||||
(setq whitespace-action (quote (auto-cleanup)))
|
||||
(define-key sh-mode-map (kbd "RET") 'newline-and-indent))
|
||||
|
||||
(setq siren-sh-mode-hook 'siren-sh-mode-defaults)
|
||||
|
||||
(add-hook 'sh-mode-hook (lambda ()
|
||||
(run-hooks 'siren-sh-mode-hook)))
|
||||
|
||||
|
||||
(provide 'siren-sh)
|
||||
26
modules/siren-smartparens.el
Normal file
26
modules/siren-smartparens.el
Normal file
@@ -0,0 +1,26 @@
|
||||
;;
|
||||
;; smartparens
|
||||
;;
|
||||
|
||||
(siren-require-packages '(smartparens))
|
||||
|
||||
;; smart pairing for all
|
||||
(require 'smartparens-config)
|
||||
(setq sp-base-key-bindings 'paredit)
|
||||
(setq sp-autoskip-closing-pair 'always)
|
||||
(setq sp-hybrid-kill-entire-symbol nil)
|
||||
(custom-set-faces
|
||||
'(sp-pair-overlay-face ((t (:inherit nil)))))
|
||||
|
||||
(sp-pair "{" nil :post-handlers
|
||||
'(((lambda (&rest _ignored)
|
||||
(siren-smart-open-line-above)) "RET")))
|
||||
|
||||
(show-smartparens-global-mode +1)
|
||||
(diminish 'smartparens-mode)
|
||||
|
||||
;; Aliases
|
||||
(defalias 'rw 'sp-rewrap-sexp)
|
||||
|
||||
|
||||
(provide 'siren-smartparens)
|
||||
20
modules/siren-smex.el
Normal file
20
modules/siren-smex.el
Normal file
@@ -0,0 +1,20 @@
|
||||
;;
|
||||
;; smex
|
||||
;;
|
||||
|
||||
(siren-require-packages '(smex))
|
||||
|
||||
;;; smex, remember recently and most frequently used commands
|
||||
(require 'smex)
|
||||
(setq smex-save-file (expand-file-name ".smex-items" siren-savefile-dir))
|
||||
(smex-initialize)
|
||||
|
||||
;; Keybindings
|
||||
(global-set-key (kbd "M-x") 'smex)
|
||||
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
|
||||
(global-set-key (kbd "C-x C-m") 'smex)
|
||||
(global-set-key (kbd "C-c C-m") 'smex)
|
||||
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
|
||||
|
||||
|
||||
(provide 'siren-smex)
|
||||
61
modules/siren-text-manipulation.el
Normal file
61
modules/siren-text-manipulation.el
Normal file
@@ -0,0 +1,61 @@
|
||||
;;
|
||||
;; text-manipulation
|
||||
;;
|
||||
|
||||
(siren-require-packages '(move-text expand-region))
|
||||
|
||||
(require 'move-text)
|
||||
(require 'expand-region)
|
||||
|
||||
;; Various things shamelessly ripped from textmate.el:
|
||||
;; - https://github.com/defunkt/textmate.el
|
||||
|
||||
(defmacro allow-line-as-region-for-function (orig-function)
|
||||
`(defun ,(intern (concat (symbol-name orig-function) "-or-line"))
|
||||
()
|
||||
,(format "Like `%s', but acts on the current line if mark is not active."
|
||||
orig-function)
|
||||
(interactive)
|
||||
(if mark-active
|
||||
(call-interactively (function ,orig-function))
|
||||
(save-excursion
|
||||
;; define a region (temporarily) -- so any C-u prefixes etc. are preserved.
|
||||
(beginning-of-line)
|
||||
(set-mark (point))
|
||||
(end-of-line)
|
||||
(call-interactively (function ,orig-function))))))
|
||||
|
||||
(unless (fboundp 'comment-or-uncomment-region-or-line)
|
||||
(allow-line-as-region-for-function comment-or-uncomment-region))
|
||||
|
||||
(defun siren-shift-right (&optional arg)
|
||||
"Shift the line or region to the ARG places to the right.
|
||||
A place is considered `tab-width' character columns."
|
||||
(interactive)
|
||||
(let ((deactivate-mark nil)
|
||||
(beg (or (and mark-active (region-beginning))
|
||||
(line-beginning-position)))
|
||||
(end (or (and mark-active (region-end)) (line-end-position))))
|
||||
(indent-rigidly beg end (* (or arg 1) tab-width))))
|
||||
|
||||
(defun siren-shift-left (&optional arg)
|
||||
"Shift the line or region to the ARG places to the left."
|
||||
(interactive)
|
||||
(siren-shift-right (* -1 (or arg 1))))
|
||||
|
||||
|
||||
;; Keybindings
|
||||
(define-key global-map (kbd "M-p") 'move-text-up)
|
||||
(define-key global-map (kbd "M-n") 'move-text-down)
|
||||
|
||||
(global-set-key (kbd "C-c [") 'siren-shift-left)
|
||||
(global-set-key (kbd "C-c ]") 'siren-shift-right)
|
||||
|
||||
(global-set-key (kbd "C-c /") 'comment-or-uncomment-region-or-line)
|
||||
(global-set-key (kbd "C-c C-/") 'comment-or-uncomment-region-or-line)
|
||||
|
||||
(global-set-key (kbd "M-.") 'er/expand-region)
|
||||
(global-set-key (kbd "M-,") 'er/contract-region)
|
||||
|
||||
|
||||
(provide 'siren-text-manipulation)
|
||||
12
modules/siren-volatile-highlights.el
Normal file
12
modules/siren-volatile-highlights.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;;
|
||||
;; volatile highlights
|
||||
;;
|
||||
|
||||
(siren-require-packages '(volatile-highlights))
|
||||
|
||||
(require 'volatile-highlights)
|
||||
(volatile-highlights-mode t)
|
||||
(diminish 'volatile-highlights-mode)
|
||||
|
||||
|
||||
(provide 'siren-volatile-highlights)
|
||||
33
modules/siren-window-management.el
Normal file
33
modules/siren-window-management.el
Normal file
@@ -0,0 +1,33 @@
|
||||
;;
|
||||
;; window-management
|
||||
;;
|
||||
|
||||
(defun ignore-error-wrapper (fn)
|
||||
"Funtion return new function that ignore errors.
|
||||
The function wraps a function with `ignore-errors' macro."
|
||||
(lexical-let ((fn fn))
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(ignore-errors
|
||||
(funcall fn)))))
|
||||
|
||||
|
||||
(siren-require-packages '(buffer-move))
|
||||
|
||||
(require 'windmove)
|
||||
(require 'buffer-move)
|
||||
|
||||
;; Navigate to windows
|
||||
(global-set-key (kbd "M-k") (ignore-error-wrapper 'windmove-down))
|
||||
(global-set-key (kbd "M-i") (ignore-error-wrapper 'windmove-up))
|
||||
(global-set-key (kbd "M-j") (ignore-error-wrapper 'windmove-left))
|
||||
(global-set-key (kbd "M-l") (ignore-error-wrapper 'windmove-right))
|
||||
|
||||
;; Swap buffers between windows
|
||||
(global-set-key (kbd "M-K") 'buf-move-down)
|
||||
(global-set-key (kbd "M-I") 'buf-move-up)
|
||||
(global-set-key (kbd "M-J") 'buf-move-left)
|
||||
(global-set-key (kbd "M-L") 'buf-move-right)
|
||||
|
||||
|
||||
(provide 'siren-window-management)
|
||||
11
modules/siren-workgroups2.el
Normal file
11
modules/siren-workgroups2.el
Normal file
@@ -0,0 +1,11 @@
|
||||
;;
|
||||
;; workgroups2
|
||||
;;
|
||||
|
||||
(siren-require-packages '(workgroups2))
|
||||
|
||||
(require 'workgroups2)
|
||||
(setq wg-prefix-key (kbd "C-z")
|
||||
|
||||
|
||||
(provide 'siren-workgroups2)
|
||||
13
modules/siren-yasnippet.el
Normal file
13
modules/siren-yasnippet.el
Normal file
@@ -0,0 +1,13 @@
|
||||
;;
|
||||
;; yasnippet
|
||||
;;
|
||||
|
||||
(siren-require-packages '(yasnippet))
|
||||
|
||||
(require 'yasnippet)
|
||||
(diminish 'yas-minor-mode)
|
||||
|
||||
(yas/global-mode t)
|
||||
|
||||
|
||||
(provide 'siren-yasnippet)
|
||||
56
siren-modules.el
Normal file
56
siren-modules.el
Normal file
@@ -0,0 +1,56 @@
|
||||
;;
|
||||
;; siren modules setup
|
||||
;;
|
||||
|
||||
;; Modules
|
||||
(require 'siren-aliases)
|
||||
(require 'siren-avy)
|
||||
(require 'siren-auto-complete)
|
||||
(require 'siren-company)
|
||||
(require 'siren-dired)
|
||||
(require 'siren-exec-path-from-shell)
|
||||
(require 'siren-frame-transparency)
|
||||
(require 'siren-full-ack)
|
||||
(require 'siren-global-keybindings)
|
||||
(require 'siren-github)
|
||||
(require 'siren-goto-symbol)
|
||||
(require 'siren-haml)
|
||||
(require 'siren-helm)
|
||||
(require 'siren-ido)
|
||||
(require 'siren-linum)
|
||||
(require 'siren-magit)
|
||||
(require 'siren-move-beginning-of-line)
|
||||
(require 'siren-multiple-cursors)
|
||||
(require 'siren-phi-search)
|
||||
(require 'siren-scroll-half-screen)
|
||||
(require 'siren-smartparens)
|
||||
(require 'siren-smex)
|
||||
(require 'siren-text-manipulation)
|
||||
(require 'siren-window-management)
|
||||
(require 'siren-yasnippet)
|
||||
|
||||
;; Project management
|
||||
(require 'siren-projectile)
|
||||
(require 'siren-project-explorer)
|
||||
(require 'siren-ecb) ;; evil and slows down all of emacs
|
||||
;; (require 'siren-neotree)
|
||||
|
||||
;; Workspace management
|
||||
(require 'siren-escreen)
|
||||
;; (require 'siren-eslcreen)
|
||||
;; (require 'siren-perspective)
|
||||
;; (require 'siren-worksgroups2)
|
||||
|
||||
|
||||
;; ;; Languages
|
||||
(require 'siren-coffee)
|
||||
(require 'siren-css)
|
||||
(require 'siren-cucumber)
|
||||
(require 'siren-emacs-lisp)
|
||||
(require 'siren-go)
|
||||
(require 'siren-makefile)
|
||||
(require 'siren-markdown)
|
||||
(require 'siren-ruby)
|
||||
(require 'siren-sass)
|
||||
(require 'siren-scss)
|
||||
(require 'siren-sh)
|
||||
7
siren-theme.el
Normal file
7
siren-theme.el
Normal file
@@ -0,0 +1,7 @@
|
||||
;;
|
||||
;; siren theme setup
|
||||
;;
|
||||
|
||||
(if window-system
|
||||
(require 'siren-theme-twilight-anti-bright)
|
||||
(require 'siren-theme-tomorrow-night-paradise))
|
||||
8
themes/siren-theme-tomorrow-night-paradise.el
Normal file
8
themes/siren-theme-tomorrow-night-paradise.el
Normal file
@@ -0,0 +1,8 @@
|
||||
;;
|
||||
;; tomorrow-night-paradise-theme
|
||||
;;
|
||||
|
||||
(require 'tomorrow-night-paradise-theme)
|
||||
|
||||
|
||||
(provide 'siren-theme-tomorrow-night-paradise)
|
||||
10
themes/siren-theme-twilight-anti-bright.el
Normal file
10
themes/siren-theme-twilight-anti-bright.el
Normal file
@@ -0,0 +1,10 @@
|
||||
;;
|
||||
;; twilight-anti-bright-theme
|
||||
;;
|
||||
|
||||
(siren-require-packages '(twilight-anti-bright-theme twilight-bright-theme))
|
||||
|
||||
(require 'twilight-anti-bright-theme)
|
||||
|
||||
|
||||
(provide 'siren-theme-twilight-anti-bright)
|
||||
158
vendor/linum+.el
vendored
Normal file
158
vendor/linum+.el
vendored
Normal file
@@ -0,0 +1,158 @@
|
||||
;;; linum+.el --- Extension of linum
|
||||
|
||||
;; Copyright (C) 2010 ahei
|
||||
|
||||
;; Author: ahei <ahei0802@gmail.com>
|
||||
;; Keywords: line number
|
||||
;; URL: http://code.google.com/p/dea/source/browse/trunk/my-lisps/linum%2B.el
|
||||
;; Time-stamp: <2010-04-08 10:55:43 Thursday by ahei>
|
||||
|
||||
;; This file 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 3,
|
||||
;; or (at your option) any later version.
|
||||
|
||||
;; This file 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 GNU Emacs; see the file COPYING. If not,
|
||||
;; write to the Free Software Foundation, Inc., 51 Franklin
|
||||
;; Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; This extension of linum can smart control width of line number
|
||||
;; displayed, If visible line number of current buffer is from 1
|
||||
;; to 50, then width of line number is 2, and visible line number
|
||||
;; of current buffer is from 100 to 150, then width of line
|
||||
;; number is 3. and use it, you can customize line number format
|
||||
;; with linum+-dynamic-format even if linum-format is 'dynamic.
|
||||
;; Its screenshots is
|
||||
;; http://emacser.com/screenshots/linum+/linum+1.png and
|
||||
;; http://emacser.com/screenshots/linum+/linum+2.png . For more
|
||||
;; details, see article Use linum+ smart display line number
|
||||
;; http://emacser.com/linum-plus.htm
|
||||
|
||||
;;; Installation:
|
||||
;;
|
||||
;; Copy linum+.el to your load-path and add to your .emacs:
|
||||
;;
|
||||
;; (require 'linum+)
|
||||
;;
|
||||
;; then use M-x linum-mode to turn on line number displaying
|
||||
|
||||
;;; History:
|
||||
;;
|
||||
;; 2010-04-04
|
||||
;; * Add more format control for linum-format
|
||||
;; 2010-4-1
|
||||
;; * initial version 1.0.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'linum)
|
||||
|
||||
(defgroup linum+ nil
|
||||
"Extension of `linum-mode'."
|
||||
:prefix "linum+-")
|
||||
|
||||
;;;###autoload
|
||||
(defcustom linum-format 'smart
|
||||
"Format used to display line numbers.
|
||||
|
||||
+ Either a format string like \"%7d\",
|
||||
+ or `smart' to smart adapt the width by current max visible line number.
|
||||
+ or `dynamic' to adapt the width as needed,
|
||||
+ or a vector with one string element which uesed to generate
|
||||
line number format by `format' with argument max visible line number
|
||||
of current buffer, see example `linum+-smart-format'
|
||||
+ or a list with one string element which uesed to generate
|
||||
line number format by `format' with argument max line number of current buffer,
|
||||
see example `linum+-dynamic-format'
|
||||
+ or a function that is called with a line number as its
|
||||
argument and should evaluate to a string to be shown on that line.
|
||||
|
||||
See also `linum-before-numbering-hook'."
|
||||
:group 'linum
|
||||
:type 'sexp)
|
||||
|
||||
(setq linum-format 'smart)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom linum+-dynamic-format "%%%dd|"
|
||||
"Format used to generate line number format when `linum-format' is `dynamic'."
|
||||
:group 'linum+
|
||||
:type 'sexp)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom linum+-smart-format "%%%dd|"
|
||||
"Format used to generate line number format when `linum-format' is `smart'."
|
||||
:group 'linum+
|
||||
:type 'sexp)
|
||||
|
||||
;;;###autoload
|
||||
(defun linum+-generate-linum-format (format-type limit)
|
||||
"Generate line number format by FORMAT-TYPE, LIMIT is `window-end' of win."
|
||||
(cond ((stringp format-type) format-type)
|
||||
((or (listp format-type) (vectorp format-type)
|
||||
(eq format-type 'dynamic) (eq format-type 'smart))
|
||||
(let* ((dynamic-width (or (vectorp format-type) (eq format-type 'smart)))
|
||||
(old-format
|
||||
(if (eq format-type 'dynamic)
|
||||
linum+-dynamic-format
|
||||
(if (eq format-type 'smart)
|
||||
linum+-smart-format
|
||||
format-type)))
|
||||
(w (length
|
||||
(number-to-string
|
||||
(line-number-at-pos (if dynamic-width limit (point-max))))))
|
||||
(new-format
|
||||
(if (listp old-format)
|
||||
(car old-format)
|
||||
(if (vectorp old-format)
|
||||
(aref old-format 0)
|
||||
old-format))))
|
||||
(format new-format w)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun linum-update-window (win)
|
||||
"Update line numbers for the portion visible in window WIN."
|
||||
(goto-char (window-start win))
|
||||
(let* ((line (line-number-at-pos))
|
||||
(limit (window-end win t))
|
||||
(fmt (linum+-generate-linum-format linum-format limit))
|
||||
(width 0))
|
||||
(run-hooks 'linum-before-numbering-hook)
|
||||
;; Create an overlay (or reuse an existing one) for each
|
||||
;; line visible in this window, if necessary.
|
||||
(while (and (not (eobp)) (<= (point) limit))
|
||||
(let* ((str (if fmt
|
||||
(propertize (format fmt line) 'face 'linum)
|
||||
(funcall linum-format line)))
|
||||
(visited (catch 'visited
|
||||
(dolist (o (overlays-in (point) (point)))
|
||||
(when (equal-including-properties
|
||||
(overlay-get o 'linum-str) str)
|
||||
(unless (memq o linum-overlays)
|
||||
(push o linum-overlays))
|
||||
(setq linum-available (delq o linum-available))
|
||||
(throw 'visited t))))))
|
||||
(setq width (max width (length str)))
|
||||
(unless visited
|
||||
(let ((ov (if (null linum-available)
|
||||
(make-overlay (point) (point))
|
||||
(move-overlay (pop linum-available) (point) (point)))))
|
||||
(push ov linum-overlays)
|
||||
(overlay-put ov 'before-string
|
||||
(propertize " " 'display `((margin left-margin) ,str)))
|
||||
(overlay-put ov 'linum-str str))))
|
||||
(forward-line)
|
||||
(setq line (1+ line)))
|
||||
(set-window-margins win width)))
|
||||
|
||||
(provide 'linum+)
|
||||
|
||||
;;; linum+.el ends here
|
||||
1584
vendor/ruby-mode.el
vendored
Normal file
1584
vendor/ruby-mode.el
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
vendor/tomorrow-night-paradise-theme
vendored
Submodule
1
vendor/tomorrow-night-paradise-theme
vendored
Submodule
Submodule vendor/tomorrow-night-paradise-theme added at 70225a5bf9
Reference in New Issue
Block a user