From e27daf5dafc45daa5c290b296aa1b3f52471658d Mon Sep 17 00:00:00 2001 From: "Jose A. Ortega Ruiz" Date: Mon, 19 Jan 2009 05:10:47 +0100 Subject: [PATCH] FUEL: New fuel-switch-to-buffer command family. --- misc/fuel/README | 3 +++ misc/fuel/fuel-edit.el | 26 ++++++++++++++++++++++++++ misc/fuel/fuel-mode.el | 3 +++ 3 files changed, 32 insertions(+) diff --git a/misc/fuel/README b/misc/fuel/README index 706191aaa3..562128dc29 100644 --- a/misc/fuel/README +++ b/misc/fuel/README @@ -74,6 +74,9 @@ beast. - C-cz : switch to listener - C-co : cycle between code, tests and docs factor files + - C-cs : switch to other factor buffer (M-x fuel-switch-to-buffer) + - C-x4s : switch to other factor buffer in other window + - C-x5s : switch to other factor buffer in other frame - M-. : edit word at point in Emacs (see fuel-edit-word-method custom var) - M-, : go back to where M-. was last invoked diff --git a/misc/fuel/fuel-edit.el b/misc/fuel/fuel-edit.el index b0756826f1..0334ab6104 100644 --- a/misc/fuel/fuel-edit.el +++ b/misc/fuel/fuel-edit.el @@ -132,6 +132,32 @@ was last invoked." (pop-tag-mark) (error "No previous location for find word or vocab invokation"))) +(defvar fuel-edit--buffer-history nil) + +(defun fuel-switch-to-buffer (&optional method) + "Switch to any of the existing Factor buffers, with completion." + (interactive) + (let ((buffer (completing-read "Factor buffer: " + (remove (buffer-name) + (mapcar 'buffer-name (buffer-list))) + '(lambda (s) (string-match "\\.factor$" s)) + t + nil + fuel-edit--buffer-history))) + (cond ((eq method 'window) (switch-to-buffer-other-window buffer)) + ((eq method 'frame) (switch-to-buffer-other-frame buffer)) + (t (switch-to-buffer buffer))))) + +(defun fuel-switch-to-buffer-other-window () + "Switch to any of the existing Factor buffers, in other window." + (interactive) + (fuel-switch-to-buffer 'window)) + +(defun fuel-switch-to-buffer-other-frame () + "Switch to any of the existing Factor buffers, in other frame." + (interactive) + (fuel-switch-to-buffer 'frame)) + (provide 'fuel-edit) ;;; fuel-edit.el ends here diff --git a/misc/fuel/fuel-mode.el b/misc/fuel/fuel-mode.el index 9936d052fc..1165b17e60 100644 --- a/misc/fuel/fuel-mode.el +++ b/misc/fuel/fuel-mode.el @@ -177,6 +177,9 @@ interacting with a factor listener is at your disposal. (fuel-mode--key-1 ?l 'fuel-run-file) (fuel-mode--key-1 ?r 'fuel-eval-region) (fuel-mode--key-1 ?z 'run-factor) +(fuel-mode--key-1 ?s 'fuel-switch-to-buffer) +(define-key fuel-mode-map "\C-x4s" 'fuel-switch-to-buffer-other-window) +(define-key fuel-mode-map "\C-x5s" 'fuel-switch-to-buffer-other-frame) (define-key fuel-mode-map "\C-\M-x" 'fuel-eval-definition) (define-key fuel-mode-map "\C-\M-r" 'fuel-eval-extended-region)