Move siren-helpers into siren-core

This commit is contained in:
2016-01-31 10:42:02 +00:00
parent 958bcbadaf
commit 3eda4e2723
6 changed files with 97 additions and 128 deletions

View File

@@ -22,6 +22,84 @@ Position the cursor at it's beginning, according to the current mode."
(interactive "P")
(sp-wrap-with-pair ,s)))
(defun siren-align-region-to-equals (begin end)
"Align region (specified with BEGIN and END) to equal signs."
(interactive "r")
(align-regexp begin end "\\(\\s-*\\)=" 1 1 ))
(defun siren-align-region-to-opening-brace (begin end)
"Align region (specified with BEGIN and END) to equal opening brace."
(interactive "r")
(align-regexp begin end "\\(\\s-*\\){" 1 1 ))
(defun siren-yank-pop-forwards (arg)
"Yank pop in reverse."
(interactive "p")
(yank-pop (- arg)))
(defun siren-other-window-reverse ()
"Switch to the previous window."
(interactive)
(other-window -1))
(defun siren-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.
Borrowed from: http://tuxicity.se/emacs/elisp/2010/03/11/duplicate-current-line-or-region-in-emacs.html"
(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)))))
(defun siren-toggle-hiding (column)
"Toggle hiding/showing blocks via hs-mode.
Borrowed from: http://www.emacswiki.org/emacs/HideShow"
(interactive "P")
(if hs-minor-mode
(if (condition-case nil
(hs-toggle-hiding)
(error t))
(hs-show-all))
(siren-toggle-selective-display column)))
(defun siren-toggle-selective-display (column)
"Helper function for `siren-toggle-hiding'."
(interactive "P")
(set-selective-display
(or column
(unless selective-display
(1+ (current-column))))))
(defun siren-rename-file-and-buffer ()
"Rename the current buffer and file it is visiting.
Borrowed from: http://emacsredux.com/blog/2013/05/04/rename-file-and-buffer/"
(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-core)
;;; siren-core.el ends here

View File

@@ -6,8 +6,6 @@
;;; Code:
(require 'siren-helpers)
;; Enable dabbrev-expand via custom keybinding.
(global-set-key (kbd "C-x M-/") 'dabbrev-expand)
@@ -17,21 +15,21 @@
;; 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)
;; Duplicate line
(global-set-key (kbd "C-x C-d") 'siren-duplicate-current-line-or-region)
;; Window switching (via siren-helpers.el).
(global-set-key (kbd "C-x i") 'other-window-reverse)
;; Window switching
(global-set-key (kbd "C-x i") 'siren-other-window-reverse)
(global-set-key (kbd "C-x C-o") 'other-window)
(global-set-key (kbd "C-x C-i") 'other-window-reverse)
(global-set-key (kbd "C-x C-i") 'siren-other-window-reverse)
;; Kill-Ring related (via siren-helpers.el).
(global-set-key (kbd "M-Y") 'yank-pop-forwards)
;; Kill-Ring related
(global-set-key (kbd "M-Y") 'siren-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 to equal signs
(global-set-key (kbd "C-x a =") 'siren-align-region-to-equals)
(global-set-key (kbd "M-]") 'siren-align-region-to-equals)
(global-set-key (kbd "C-x a {") 'siren-align-region-to-opening-brace)
;; align-regexp
(global-set-key (kbd "C-c C-a") 'align-regexp)
@@ -39,9 +37,9 @@
;; 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)
;; Custom HideShow toggles
(global-set-key (kbd "C-=") 'siren-toggle-selective-display)
(global-set-key (kbd "C-\\") 'siren-toggle-hiding)
;; undo/redo via undo-tree
(global-set-key (kbd "M--") 'undo-tree-undo)
@@ -55,8 +53,8 @@
(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)
;; Rename current file and buffer
(global-set-key (kbd "C-c r") 'siren-rename-file-and-buffer)
;; Mac OS X specific keybindings
(when (eq system-type 'darwin)

View File

@@ -1,107 +0,0 @@
;;
;; 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)

View File

@@ -33,7 +33,7 @@
(let ((map js2-mode-map))
(define-key map (kbd "C-j") 'newline-and-indent)
(define-key map (kbd "C-c C-h") 'toggle-hiding)))
(define-key map (kbd "C-c C-h") 'siren-toggle-hiding)))
(setq siren-js2-mode-hook 'siren-js2-mode-defaults)

View File

@@ -28,7 +28,7 @@
(let ((map json-mode-map))
(define-key map (kbd "C-j") 'newline-and-indent)
(define-key map (kbd "C-c C-h") 'toggle-hiding)))
(define-key map (kbd "C-c C-h") 'siren-toggle-hiding)))
(setq siren-json-mode-hook 'siren-json-mode-defaults)

View File

@@ -68,7 +68,7 @@
(let ((map ruby-mode-map))
(define-key map (kbd "C-j") 'newline-and-indent)
(define-key map (kbd "RET") 'newline-and-indent)
(define-key map (kbd "C-c C-h") 'toggle-hiding)
(define-key map (kbd "C-c C-h") 'siren-toggle-hiding)
(define-key map (kbd "C-c C-l") 'goto-line)))
(setq siren-ruby-mode-hook 'siren-ruby-mode-defaults)