From 3eda4e2723f64a42b1edb451c5fb2b34598e8fca Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sun, 31 Jan 2016 10:42:02 +0000 Subject: [PATCH] Move siren-helpers into siren-core --- core/siren-core.el | 78 ++++++++++++++++++++ modules/siren-global-keybindings.el | 34 +++++---- modules/siren-helpers.el | 107 ---------------------------- modules/siren-js.el | 2 +- modules/siren-json.el | 2 +- modules/siren-ruby.el | 2 +- 6 files changed, 97 insertions(+), 128 deletions(-) delete mode 100644 modules/siren-helpers.el diff --git a/core/siren-core.el b/core/siren-core.el index e22ac1b..8d9d960 100644 --- a/core/siren-core.el +++ b/core/siren-core.el @@ -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 diff --git a/modules/siren-global-keybindings.el b/modules/siren-global-keybindings.el index 0ea6764..fc02ae1 100644 --- a/modules/siren-global-keybindings.el +++ b/modules/siren-global-keybindings.el @@ -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) diff --git a/modules/siren-helpers.el b/modules/siren-helpers.el deleted file mode 100644 index 486f6a7..0000000 --- a/modules/siren-helpers.el +++ /dev/null @@ -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) \ No newline at end of file diff --git a/modules/siren-js.el b/modules/siren-js.el index 1dad128..dc80ad1 100644 --- a/modules/siren-js.el +++ b/modules/siren-js.el @@ -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) diff --git a/modules/siren-json.el b/modules/siren-json.el index 6c523e1..9f6babb 100644 --- a/modules/siren-json.el +++ b/modules/siren-json.el @@ -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) diff --git a/modules/siren-ruby.el b/modules/siren-ruby.el index 7e79b42..01c61f8 100644 --- a/modules/siren-ruby.el +++ b/modules/siren-ruby.el @@ -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)