(defun ins () (interactive) (let* ((target (current-buffer)) (buffer (generate-new-buffer (format "*Paste Buffer for <%s>*" (buffer-name target))))) (with-current-buffer buffer (make-local-variable 'ins-target-buffer) (setq ins-target-buffer target) (local-set-key "\C-c\C-c" '(lambda () (interactive) (let ((buffer (current-buffer))) (switch-to-buffer ins-target-buffer) (insert-buffer-substring buffer) (kill-buffer buffer)))) (local-set-key "\C-c\C-k" '(lambda () (interactive) (let ((buffer (current-buffer))) (switch-to-buffer ins-target-buffer) (kill-buffer buffer))))) (switch-to-buffer buffer) (message (format "Enter a text to paste. Type C-c C-c when done. (C-c C-k to dismiss)" (buffer-name target)))))