[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Emacs-fråga



On Wednesday 09 April 2003 23.12, Daniel Sundberg wrote:
> > Den bifogade filen borde lösa ditt problem. Observera dock att det är
> > mitt första emacs hack så det är lite av ett fulhack, men det funkar.
> > Ladda in filen så kan du med C-M-<0-9> markera en buffert som du sen
> > kommer åt med M-<0-9>.
>
> Coolt, detta var ju ungefär vad jag letade efter. Om nu C-M-<0-9> kunde
> fixas automatiskt när man öppnade en ny fil så har vi uppnåt
> perfektion...:-)

Version 0.1.1...

// Erik

-- 
Chaos, panic, and disorder - my work here is done.

Erik Johansson <ml@erre.user.lysator.liu.se>
http://www.lysator.liu.se/~erre/
;; Author:  Erik Johansson <erre@lysator.liu.se> 
;; Created: 2003-04-09
;; License: GPL
;; Version: 0.1.1
;;
;; Changelog:
;; 2003-04-09: Cleanup and autoset.
;; 2003-04-09: Created
;;
;; If you improve it, please let me know.
;;
;; Usage: Load it in your .emacs with (load "/path/to/switch-buffer.el").
;;        Press C-M-<0-9> to associate current buffer with M-<0-9>.

;; Comment this if you don't want autoset.
(add-hook 'find-file-hooks '(lambda () (switch-auto-set-buffer (current-buffer))))

(defun switch-set-buffer (buffer nr)
	"buffer x number ->"
	(if (and (boundp 'switch-buffer-list) (vectorp switch-buffer-list))
			(aset switch-buffer-list nr buffer)
		(progn 
			(setq switch-buffer-list (make-vector 10 'nil))
			(aset switch-buffer-list nr buffer)))
	(message "Buffer added as nr %i." (1+ nr)))

(defun switch-get-buffer (nr)
	"number ->"
	(if (and (boundp 'switch-buffer-list) (vectorp switch-buffer-list))
			(let ((buffer (aref switch-buffer-list nr)))
				(if (and (bufferp buffer) (buffer-name buffer))
						(switch-to-buffer buffer)
					(message "No such buffer.")))
		(message "No buffers set.")))

(defun switch-auto-set-buffer (buffer)
	"buffer ->"
	(if (and (boundp 'switch-buffer-list) (vectorp switch-buffer-list))
			(catch 'loop
				(let ((i 0))
					(while (< i 10)
						(let ((buf (aref switch-buffer-list i)))
							(if (and (bufferp buf) (buffer-name buf))
									(setq i (1+ i))
								(progn 
									(switch-set-buffer buffer i)
									(throw 'loop t)))))
					(message "No free slots.")))
		(progn
			(setq switch-buffer-list (make-vector 10 'nil))
			(switch-auto-set-buffer buffer))))

;; Setup keybindings for accessing buffers
(global-set-key (kbd "M-1") (lambda () (interactive) (switch-get-buffer 0)))
(global-set-key (kbd "M-2") (lambda () (interactive) (switch-get-buffer 1)))
(global-set-key (kbd "M-3") (lambda () (interactive) (switch-get-buffer 2)))
(global-set-key (kbd "M-4") (lambda () (interactive) (switch-get-buffer 3)))
(global-set-key (kbd "M-5") (lambda () (interactive) (switch-get-buffer 4)))
(global-set-key (kbd "M-6") (lambda () (interactive) (switch-get-buffer 5)))
(global-set-key (kbd "M-7") (lambda () (interactive) (switch-get-buffer 6)))
(global-set-key (kbd "M-8") (lambda () (interactive) (switch-get-buffer 7)))
(global-set-key (kbd "M-9") (lambda () (interactive) (switch-get-buffer 8)))
(global-set-key (kbd "M-0") (lambda () (interactive) (switch-get-buffer 9)))

;; Setup keybindings for associate buffer with key
(global-set-key (kbd "C-M-1") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 0)))
(global-set-key (kbd "C-M-2") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 1)))
(global-set-key (kbd "C-M-3") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 2)))
(global-set-key (kbd "C-M-4") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 3)))
(global-set-key (kbd "C-M-5") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 4)))
(global-set-key (kbd "C-M-6") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 5)))
(global-set-key (kbd "C-M-7") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 6)))
(global-set-key (kbd "C-M-8") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 7)))
(global-set-key (kbd "C-M-9") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 8)))
(global-set-key (kbd "C-M-0") (lambda () (interactive) 
																(switch-set-buffer (current-buffer) 9)))

Reply to: