Skip to content

Instantly share code, notes, and snippets.

@ShingoFukuyama
Last active January 1, 2016 04:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ShingoFukuyama/8091815 to your computer and use it in GitHub Desktop.
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.
(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