Last active
January 1, 2016 04:28
-
-
Save ShingoFukuyama/8091815 to your computer and use it in GitHub Desktop.
Utilizing emacs mykie.el[https://github.com/yuutayamada/mykie-el] to temporarily remember text/buffer to each number. Past text or switch buffer from registered number.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require 'mykie) | |
;;; Temporarily remember any text/buffer | |
;; Example. | |
;; Region an area -> Copy & Regist [M-5 w] -> Past [M-5 y] | |
;; Region an area -> Copy & Regist [M-3 w] -> Past [M-3 y] | |
;; Regist buffer [M-3 B] -> Switch buffer [M-3 b] | |
;; Regist buffer [M-8 3 B] -> Switch buffer [M-8 3 b] | |
;; Describe list | |
;; M-x my-keep-describe-text | |
;; M-x my-keep-describe-buffer | |
(add-to-list 'mykie:conditions '(when (numberp current-prefix-arg) :M-N)) | |
(setq my-keep-text-list (make-hash-table :test 'eq)) | |
(setq my-keep-buffer-list (make-hash-table :test 'eq)) | |
(defun my-keep-text-copy () | |
(interactive) | |
(when mark-active | |
(puthash current-prefix-arg | |
(buffer-substring-no-properties | |
(region-beginning) (region-end)) my-keep-text-list) | |
(deactivate-mark) | |
(message (format "Copied! |%d|" current-prefix-arg)))) | |
(defun my-keep-text-paste () | |
(interactive) | |
(let (($text (gethash current-prefix-arg my-keep-text-list))) | |
(if $text | |
(insert $text) | |
(message (format "%s" "Not found!"))))) | |
(defun my-keep-buffer-clip () | |
(interactive) | |
(let (($buffer (buffer-name (current-buffer)))) | |
(puthash current-prefix-arg $buffer my-keep-buffer-list) | |
(message (format "`%s' is clipped! |%d|" $buffer current-prefix-arg)))) | |
(defun my-keep-buffer-switch () | |
(interactive) | |
(let (($buffer (gethash current-prefix-arg my-keep-buffer-list))) | |
(if $buffer | |
(switch-to-buffer $buffer) | |
(message (format "%s" "Not found!"))))) | |
(defun my-keep-describe ($hash) | |
(let* (($list (loop for k being hash-key in $hash | |
using (hash-values v) | |
collect (cons k v))) | |
($describe (sort* $list '< :key 'car)) | |
$return) | |
(dolist ($x $describe) | |
(setq $return (concat $return (format "%02d: %s\n" | |
(car $x) | |
(replace-regexp-in-string | |
"\n" "\n " | |
(cdr $x)))))) | |
(message $return))) | |
(defun my-keep-describe-text () | |
(interactive) (my-keep-describe my-keep-text-list)) | |
(defun my-keep-describe-buffer () | |
(interactive) (my-keep-describe my-keep-buffer-list)) | |
(mykie:set-keys 'with-self-key | |
"w" :M-N '(my-keep-text-copy) | |
"y" :M-N '(my-keep-text-paste) | |
"B" :M-N '(my-keep-buffer-clip) | |
"b" :M-N '(my-keep-buffer-switch)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment