From 615cffe42ef645959ebafb5f7dcf4eb51ec21980 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 4 Oct 2016 22:53:49 +0200 Subject: [PATCH] Smarter :narrow command --- core/defuns/defuns-buffers.el | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/defuns/defuns-buffers.el b/core/defuns/defuns-buffers.el index ec3f6a43c..ebd9bffab 100644 --- a/core/defuns/defuns-buffers.el +++ b/core/defuns/defuns-buffers.el @@ -1,5 +1,7 @@ ;;; defuns-buffers.el +(defvar-local doom--narrowed-origin nil) + ;;;###autoload (autoload 'doom:narrow "defuns-buffers" nil t) (evil-define-operator doom:narrow (&optional beg end bang) "Restrict editing in this buffer to the current region, indirectly. With BANG, @@ -11,11 +13,17 @@ Inspired from http://demonastery.org/2013/04/emacs-evil-narrow-region/" (if (region-active-p) (progn (deactivate-mark) - (let ((buf (clone-indirect-buffer nil nil))) - (with-current-buffer buf - (narrow-to-region beg end)) - (switch-to-buffer buf))) - (widen))) + (when bang + (let ((old-buf (current-buffer))) + (switch-to-buffer (clone-indirect-buffer nil nil)) + (setq doom--narrowed-origin old-buf))) + (narrow-to-region beg end)) + (if doom--narrowed-origin + (progn + (kill-this-buffer) + (switch-to-buffer doom--narrowed-origin) + (setq doom--narrowed-origin nil)) + (widen)))) ;;;###autoload (defun doom/set-read-only-region (begin end)