git.fiddlerwoaroof.com
Browse code

feat(emacs): implement ^R for helm

Ed L authored on 24/01/2020 18:58:28
Showing 1 changed files
... ...
@@ -348,21 +348,27 @@ With a prefix ARG invalidates the cache first."
348 348
   :config
349 349
   (define-key evil-normal-state-map " d" 'helm-imenu-in-all-buffers))
350 350
 
351
-(defun fwoar--paste-from-register-mru-buffer (register)
352
-  (interactive
353
-   (let ((overlay (make-overlay (point) (point)))
354
-         (string "\""))
355
-     (unwind-protect
356
-         (progn
357
-           ;; display " in the buffer while reading register
358
-           (put-text-property 0 1 'face 'minibuffer-prompt string)
359
-           (put-text-property 0 1 'cursor t string)
360
-           (overlay-put overlay 'after-string string)
361
-           (list (or evil-this-register (read-char))))
362
-       (delete-overlay overlay))))
363
-  (let ((filename (with-current-buffer helm-current-buffer 
364
-                    (evil-get-register register t))))
365
-    (insert filename)))
351
+(defun fwoar--read-register-name ()
352
+  (let ((overlay (make-overlay (point) (point)))
353
+        (string "\""))
354
+    (unwind-protect
355
+        (progn
356
+          ;; display " in the buffer while reading register
357
+          (put-text-property 0 1 'face 'minibuffer-prompt string)
358
+          (put-text-property 0 1 'cursor t string)
359
+          (overlay-put overlay 'after-string string)
360
+          (list (or evil-this-register (read-char))))
361
+      (delete-overlay overlay))))
362
+
363
+(defun fwoar--paste-register-from-helm-current-buffer (register)
364
+  (interactive (fwoar--read-register-name))
365
+  (let ((filename (with-current-buffer helm-current-buffer
366
+                    (if (equal register
367
+                               (elt (kbd "C-w") 0))
368
+                        (word-at-point)
369
+                      (evil-get-register register t)))))
370
+    (when filename
371
+      (insert filename))))
366 372
 
367 373
 (use-package ag :ensure t)
368 374
 
... ...
@@ -389,12 +395,8 @@ With a prefix ARG invalidates the cache first."
389 395
   (define-key evil-normal-state-map " j" 'helm-buffers-list)
390 396
   (define-key evil-normal-state-map " s" 'helm-occur)
391 397
   (define-key evil-normal-state-map " S" 'helm-projectile-rg)
392
-  (define-key helm-map
393
-    (kbd "C-r")
394
-    'fwoar--paste-from-register-mru-buffer)
395
-  (define-key helm-map
396
-    (kbd "<right>")
397
-    'helm-execute-persistent-action)
398
+  (define-key helm-map (kbd "C-r") 'fwoar--paste-register-from-helm-current-buffer)
399
+  (define-key helm-map (kbd "<right>") 'helm-execute-persistent-action)
398 400
   (define-key helm-map
399 401
     (kbd "<left>")
400 402
     'helm-find-files-up-one-level))