OVH Cloud OVH Cloud

affichage ligne corespondante a accolade fermante

19 réponses
Avatar
zlm
Bonjour à tous,

Je cherche à faire afficher la ligne correspondante à l'accolade
fermante sur laquelle se trouve le curseur. (java c/c++ ou autre)

exemple pour etre plus clair:
void titi() {
salut();
}

ici: faire afficher "void titi() {" dans la barre inferieure de emacs
quand le cusreur est sur la 2eme accolade.

J'ai activé le mode paren-highlighting, mais il ne fait que colorer
les accolades. Si l'accolade du haut est hors de vue, c'est inutile.

merci pour toute aide.

Cyril.

10 réponses

1 2
Avatar
drkm
(zlm) writes:

Si ce que tu cherches est d'afficher la fonction dans laquelle tu te
trouves, tu peux regarder du côté du « Semantic Stickyfunc Mode »,
venant avec CEDET. Pour le cas plus général que tu décris, je ne sais
pas.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
Olve
Voilà ce qu'il faut dans ton .emacs

(setq blink-matching-paren t)

(if (> emacs-major-version 20)
(show-paren-mode 1)
(require 'stig-paren)
(setq blink-matching-paren nil)
(setq paren-dingaling-mode t)
(setq paren-sexp-mode nil)
(global-set-key [?C-(] 'stig-paren-toggle-dingaling-mode)
(global-set-key [?C-)] 'stig-paren-toggle-sexp-mode))
;;
)

Bref, c'est le mode mineur show-paren-mode qui est interessant et
regarde la variable show-paren-style.

Amitiés,
Olivier
Avatar
drkm
Olve writes:

Voilà ce qu'il faut dans ton .emacs

(setq blink-matching-paren t)

(if (> emacs-major-version 20)
(show-paren-mode 1)
(require 'stig-paren)
(setq blink-matching-paren nil)
(setq paren-dingaling-mode t)
(setq paren-sexp-mode nil)
(global-set-key [?C-(] 'stig-paren-toggle-dingaling-mode)
(global-set-key [?C-)] 'stig-paren-toggle-sexp-mode))
;;
)



Une petite parenthèse de trop.

Bref, c'est le mode mineur show-paren-mode qui est interessant et
regarde la variable show-paren-style.



Tiens, cela ne fonctionne pas chez moi. Est-ce dû au fait que
j'utilise ElDoc Mode ?

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
Olve
Tiens, cela ne fonctionne pas chez moi. Est-ce dû au fait que
j'utilise ElDoc Mode ?



Non, non, je suis en eldoc aussi ... J'ai essaye

emacs -q --no-site-file

puis M-x show-paren-mode et ca marche.

J'ai ajoute M-x eldoc-mode et ça marche encore : GNU Emacs 21.2.1

Tu dois avoir quelque chose qui bloque. Si tu regardes la variable
features tu dois voir quels sont les packages qui s'occupent des
parentheses ? Et que se passe t il si tu procèdes comme ci-dessus ?

A+
Olivier
Avatar
zlm
Olve wrote
...
Bref, c'est le mode mineur show-paren-mode qui est interessant et
regarde la variable show-paren-style.



Salut, merci pour ta reponse.
C'est presque ce que je voulais :)
en fait ton code affiche la ligne correspondante uniquement quand
l'accolade est tappée, pas quand on revient dessus plus tard.

Mais c'est une bonne piste, je vais chercher par la :)

Cyril.
Avatar
drkm
Olve writes:

Tiens, cela ne fonctionne pas chez moi. Est-ce dû au fait que
j'utilise ElDoc Mode ?



Non, non, je suis en eldoc aussi ... J'ai essaye

emacs -q --no-site-file

puis M-x show-paren-mode et ca marche.

J'ai ajoute M-x eldoc-mode et ça marche encore : GNU Emacs 21.2.1

Tu dois avoir quelque chose qui bloque. Si tu regardes la variable
features tu dois voir quels sont les packages qui s'occupent des
parentheses ? Et que se passe t il si tu procèdes comme ci-dessus ?



Sans .emacs ni site-file, ça ne marche pas non plus. GNU Emacs 21.3
sous Windows. Je viens d'essayer avec GNU Emacs 21.2 sous Windows,
sans plus de succès. Je ne vois que la parenthèse avant le point et
celle « associée » se surligner. Lorsque la parenthèse associée est
en dehors de la window, rien de spécial.

Je peux également essayer toute une série de version, de la 20.1 (je
pense) à la 21.3.50, sous Linux. Mais a priori, il est étrange que
pour la même version, la 21.2, sans .emacs ni site-file, il y a des
comportements différents.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
drkm
(zlm) writes:

en fait ton code affiche la ligne correspondante uniquement quand
l'accolade est tappée



C'est pas le comportement par défaut ?

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
drkm
drkm writes:

Sans .emacs ni site-file, ça ne marche pas non plus.



En fait, d'après l'article de zlm, il semblerait que tout marche
bien. La question originale portait sur l'affichage de la ligne
contenant la parenthèse appariée lorsqu'elle se situait en dehors de
la window. Mais son article semble dire que le comportement obtenu
chez lui est identique au mien. Est-ce bien ce que tu renseignais ?

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Avatar
Olve
En fait, d'après l'article de zlm, il semblerait que tout marche
bien. La question originale portait sur l'affichage de la ligne
contenant la parenthèse appariée lorsqu'elle se situait en dehors de
la window. Mais son article semble dire que le comportement obtenu
chez lui est identique au mien. Est-ce bien ce que tu renseignais ?



Oui, tout a fait. Le comportement est exactement celui qu'il souhaite.
A+
Olivier
Avatar
drkm
Olve writes:

En fait, d'après l'article de zlm, il semblerait que tout marche
bien. La question originale portait sur l'affichage de la ligne
contenant la parenthèse appariée lorsqu'elle se situait en dehors de
la window. Mais son article semble dire que le comportement obtenu
chez lui est identique au mien. Est-ce bien ce que tu renseignais ?



Oui, tout a fait. Le comportement est exactement celui qu'il souhaite.



Décidément, nous avons un problème de compréhension ;-) Tu
acquiesces à ce que je dis, et tu dis que c'est le comportement est
exactement celui que le PO souhaite. Mais le PO demandait :

exemple pour etre plus clair:
void titi() {
salut();
}

ici: faire afficher "void titi() {" dans la barre inferieure de emacs
quand le cusreur est sur la 2eme accolade.

Le comportement est-il celui-ci ou celui que j'ai décrit ?

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
1 2