OVH Cloud OVH Cloud

Changer facilement de buffer suivant le mode mineur

2 réponses
Avatar
Nicolas Pernetty
Bonjour,

Je suis à la recherche d'un paquet permettant de facilement naviguer
entre les groupes de buffers (groupés suivant leur mode mineur).

Par exemple j'ai normalement automatiquement une sorte de groupe créé
pour tous les fichiers .c et .h, et un autre pour tous les .f, et un
autre pour les .el.

Je souhaite une sorte de commande 'group-next' et 'group-previous' me
permettant de sauter vers un des buffers appartenant au prochain groupe.

Le seul paquet que j'ai trouvé ressemblant à peu près à ce que je
cherche est MTorus, mais il impose de créer soi-même ses groupes (pas
possible de les créer automatiquement suivant les modes mineurs, c'est
peut-être possible avec la version CVS mais je n'ai rien compris au
code).

Merci d'avance,

P.S. : si cela pouvait être compatible avec Xemacs 21.4.17 ce serait
idéal...

2 réponses

Avatar
Matthieu Moy
Nicolas Pernetty writes:

Bonjour,



'soir,

Je suis à la recherche d'un paquet permettant de facilement naviguer
entre les groupes de buffers (groupés suivant leur mode mineur).

Par exemple j'ai normalement automatiquement une sorte de groupe créé
pour tous les fichiers .c et .h, et un autre pour tous les .f, et un
autre pour les .el.



Je suppose que tu voulais dire « mode majeur » ?

Je souhaite une sorte de commande 'group-next' et 'group-previous' me
permettant de sauter vers un des buffers appartenant au prochain groupe.



Je ne connais pas de tel package (ça existe probablement), mais ces
fonctions se codent en quelque lignes de lisp.

En reprennant le thread

http://groups.google.fr/group/fr.comp.applications.emacs/browse_thread/thread/b255012da56cb2ca/d424ba43cc45d52b

et en plaçant correctement un

(let ((current-mode major-mode))
(while (not (eq major-mode current-mode))
...))

Ça ne devrait pas poser de problème.

--
Matthieu
Avatar
Nicolas Pernetty
On Wed, 02 Nov 2005 23:19:08 +0100, Matthieu Moy
wrote :


> Je suis à la recherche d'un paquet permettant de facilement naviguer
> entre les groupes de buffers (groupés suivant leur mode mineur).
>
> Par exemple j'ai normalement automatiquement une sorte de groupe
> créé pour tous les fichiers .c et .h, et un autre pour tous les .f,
> et un autre pour les .el.

Je suppose que tu voulais dire « mode majeur » ?

> Je souhaite une sorte de commande 'group-next' et 'group-previous'
> me permettant de sauter vers un des buffers appartenant au prochain
> groupe.

Je ne connais pas de tel package (ça existe probablement), mais ces
fonctions se codent en quelque lignes de lisp.

En reprennant le thread

http://groups.google.fr/group/fr.comp.applications.emacs/
browse_thread/thread/b255012da56cb2ca/d424ba43cc45d52b

et en plaçant correctement un

(let ((current-mode major-mode))
(while (not (eq major-mode current-mode))
...))

Ça ne devrait pas poser de problème.




Merci beaucoup pour le coup de main, voici le résultat pour la
postérité :

(require 'bs)
(defun groupswitch-group-next()
"Switches to next major-mode buffer"
(interactive)
(let ((current-mode major-mode))
(while (eq major-mode current-mode)
(bs-cycle-next))
(message "%s" major-mode)
))

(defun groupswitch-group-previous()
"Switches to previous major-mode buffer"
(interactive)
(let ((current-mode major-mode))
(while (eq major-mode current-mode)
(bs-cycle-previous))
(message "%s" major-mode)
))

(defun groupswitch-buffer-next()
"Switches to next buffer in same major-mode"
(interactive)
(let ((current-mode major-mode))
(bs-cycle-next)
(while (not (eq major-mode current-mode))
(bs-cycle-next))
(message "%s" major-mode)
))

(defun groupswitch-buffer-previous()
"Switches to previous buffer in same major-mode"
(interactive)
(let ((current-mode major-mode))
(bs-cycle-previous)
(while (not (eq major-mode current-mode))
(bs-cycle-previous))
(message "%s" major-mode)
))

(global-set-key (kbd "S-up") 'groupswitch-group-next)
(global-set-key (kbd "S-down") 'groupswitch-group-previous)
(global-set-key (kbd "S-left") 'groupswitch-buffer-previous)
(global-set-key (kbd "S-right") 'groupswitch-buffer-next)