CK knows Wayne

(X)Emacs: buffer-cycle.el

Published at by Christian Kruse, updated at
Filed under: work, computer

Gerade hat mich mal wieder tierisch genervt, dass mein XEmacs beim Aufruf von bury-buffer durch alle buffer wechselt – auch durch die System-Buffer (z. B. *Scratch*, TAGS and so on), die mich gar nicht interessieren! Also habe ich mich hingesetzt und versucht, selber eine Funktion zu schreiben, die diese Funktion erfüllt. Das ist (war ja abzusehen… ;-) kläglich an meinen mangelnden LISP-Kenntnissen gescheitert. Also habe ich nochmal „gegoogelt“ und bin auf cycle-buffer.el gestossen. Lässt sich sehr einfach installieren: ins site-lisp-Verzeichnis kopieren und mit folgenden Befehlen laden und initialisieren:

(autoload 'cycle-buffer "cycle-buffer" "Cycle forward." t)
(autoload 'cycle-buffer-backward "cycle-buffer" "Cycle backward." t)
(autoload 'cycle-buffer-permissive "cycle-buffer" "Cycle forward allowing *buffers*." t)
(autoload 'cycle-buffer-backward-permissive "cycle-buffer" "Cycle backward allowing *buffers*." t)
(autoload 'cycle-buffer-toggle-interesting "cycle-buffer" "Toggle if this buffer will be considered." t)
(global-set-key [(shift left)]        'cycle-buffer-backward)
(global-set-key [(shift right)]       'cycle-buffer)
(global-set-key [(control shift left)]  'cycle-buffer-backward-permissive)
(global-set-key [(control shift right)] 'cycle-buffer-permissive)

Das sorgt dafür, dass man mit \S-left rückwärts durch die Buffer laufen kann und mit \S-right vorwärts. Nimmt man jetzt noch Control hinzu, kann man mit \C-\S-right rückwärts und mit \C-\S-left vorwärts durch alle Buffer (also auch die System-Buffer) laufen.

Eine Kleinigkeit störte mich allerdings noch: die „Tab-Anzeige“ im XEmacs wird erst aufgefrischt, wenn man eine andere Taste drückt. Das lässt sich durch eine kleine Änderung an cycle-buffer.el verbessern: in Zeile 255 ist (switch-to-buffer buf t) zu ändern in (switch-to-buffer buf).

Ich muss irgendwann wirklich Emacs-LISP lernen ;-) Ich bin sicher, wenn ich LISP können würde, hätte ich, anstatt eine Stunde suchen zu müssen, dass sehr schnell auch selber coden können.

Whatever, happy „emacsing“ ;-)

Four fucking comments!

Comment Feed: RSS / Atom
Gravatar

Christian Kruse wrote

at

Ich trinke noch rauche ich, wenn ich programmiere.

Aha! Da hammes! Du trinkst, wenn du programmierst! ;))

Naja, ich vergrabe mich nicht im C-Wust, ich programmiere noch sehr viele Script-Sprachen (Python, jetzt seit neustem, vorher viel Ruby, vorher PHP und die ganze Zeit durch immer wieder Perl). Tut mir leid, aber ich kann mit Lisp wirklich genau gar nichts anfangen.

Gravatar

einbecker wrote

at

Das liegt daran, weil Du Dich seit Jahren in dem C-Wust vergräbst ;-)

Ich trinke noch rauche ich, wenn ich programmiere. Sicher, am Anfang ist das alles eher merkwürdig, später dann aber kommt die Einsicht. Ehrlich!

Und welche bequemere Möglichkeit kann es geben als Lisp? ;-)

Gravatar

Christian Kruse wrote

at

Lisp ist großartig, grade in der Kombination mit Xemacs. Ich bin ja eigentlich nur noch am Lisp-Entwickeln, und wenn ich mir die Vorteile gegenüber anderen Sprachen angucke, ist das schon echt cool.

*hust* Also, ich kann mit Lisp genau gar nichts anfangen. IMHO muss man besoffen oder bekifft sein, wenn man Lisp schreiben will ;)) Aber ich lerne es gerade trotzdem, schlicht um Emacs erweitern zu können. Leider gibts ja keine andere bequeme Methode, Emacs zu Erweitern.

Gravatar

einbecker wrote

at

Lisp ist großartig, grade in der Kombination mit Xemacs. Ich bin ja eigentlich nur noch am Lisp-Entwickeln, und wenn ich mir die Vorteile gegenüber anderen Sprachen angucke, ist das schon echt cool.

Und abgesehen davon, dass die Sprache selbst schon nett ist, kommt dann die Sache mit Compiler / Emacs zum vorschein: File oeffnen, aendern, in die laufende Anwendung reinkompiliern usw. Und der Debugger ist auch im Emacs. ;-)

Your Comment

You can use MarkDown to format your comment: *Word* for italic, **Word** for bold, images will get removed.




Because of massive spam attacks you may only post if you can answer the following question: