diff options
| author | Ravi R Kiran <aine.marina@gmail.com> | 2014-02-03 16:41:44 (GMT) |
|---|---|---|
| committer | Ravikiran Rajagopal <aine.marina@gmail.com> | 2014-02-03 16:41:44 (GMT) |
| commit | 08677a44a56f898a721316e8b2c64ee78c5f9755 (patch) | |
| tree | 0c8295098d639ae08fa725092f87fff870ab07f1 /site-lisp | |
| parent | d96bd575a831c113fa0b8728d5167281ffbe0de1 (diff) | |
| download | dotemacs-08677a44a56f898a721316e8b2c64ee78c5f9755.zip dotemacs-08677a44a56f898a721316e8b2c64ee78c5f9755.tar.gz dotemacs-08677a44a56f898a721316e8b2c64ee78c5f9755.tar.bz2 | |
Indirect regions
Diffstat (limited to 'site-lisp')
| -rw-r--r-- | site-lisp/indirect.el | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/site-lisp/indirect.el b/site-lisp/indirect.el new file mode 100644 index 0000000..f49bdb5 --- /dev/null +++ b/site-lisp/indirect.el @@ -0,0 +1,38 @@ +;; From http://www.emacswiki.org/cgi-bin/wiki.pl?IndirectBuffers + +(defun indirect-buffer () + "Edit stuff in this buffer in an indirect buffer. + The indirect buffer can have another major mode." + (interactive) + (let ((buffer-name (generate-new-buffer-name "*indirect*"))) + (pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name)))) + +(defvar indirect-mode-name nil + "Mode to set for indirect buffers.") +(make-variable-buffer-local 'indirect-mode-name) + +(defun indirect-region (start end) + "Edit the current region in another buffer. + If the buffer-local variable `indirect-mode-name' is not set, prompt + for mode name to choose for the indirect buffer interactively. + Otherwise, use the value of said variable as argument to a funcall." + (interactive "r") + (let ((buffer-name (generate-new-buffer-name "*indirect*")) + (mode + (if (not indirect-mode-name) + (setq indirect-mode-name + (intern + (completing-read + "Mode (default `org-mode'): " + (mapcar (lambda (e) + (list (symbol-name e))) + (apropos-internal "-mode$" 'commandp)) + nil t nil nil "org-mode"))) + indirect-mode-name))) + (pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name)) + (funcall mode) + (narrow-to-region start end) + (goto-char (point-min)) + (shrink-window-if-larger-than-buffer))) + +(provide 'indirect) |
