OVH Cloud OVH Cloud

path completion

22 réponses
Avatar
v.p.
Bonjour,
Dans vim, Ctrl-X-F permet de faire la completion de ce que l'on est en
train de taper en le consid=E9rant comme un chemin du syst=E8me de fichier.
Aucun doute que cela est possible avec emacs, mais je n'arrive pas =E0
mettre la main sur le raccourci utile ? Est ce que c'est possible par
d=E9faut ou il faut ajouter un module, ou en activer un ?
Merci d'avance,
Vincent

10 réponses

1 2 3
Avatar
drkm
Sébastien Kirche writes:

Alors peut-être que la fonction hippie-expand pourrait t'être utile.



Comme quoi, sa propre distribution standard d'Emacs réserve
toujours des surprises, tant au niveau des fonctionalités que de
la nomenclature.

Par contre, contrairement à ce que dit sa stringdoc :

Repeated application of `hippie-expand' inserts successively
possible expansions.

l'appel successif de la fonction ne cycle pas enter les
différentes propositions possible. Par exemple, dans :

word world w-!-

'M-x hippie-expand <RET>' va insérer « world ». Puis un second
appel affichera « No expansion found ». Bizarre ...

--drkm
Avatar
Sébastien Kirche
Le 28 Apr 2005, drkm a dit :

Il faudra que je teste.



Dans ma version cvs, c'est fourni avec, prêt à requérir.

--
Sébastien Kirche
Avatar
v.p.
On Thu, 28 Apr 2005 15:00:33 +0200
Sébastien Kirche wrote:

Le 28 Apr 2005, v. p. vraute :

Alors peut-être que la fonction hippie-expand pourrait t'être utile.

Je viens de trouver ça et ça permet apparemment de (tenter de)
compléter ce qui précède le point (le curseur) en cherchant dans
une liste de fonctions de complétion. Pas mal :)



Merci ca fonctionne très bien.
J'ai remplacé l'appel a dabbrev-expand de M-/ par un appel a
hippie-expand. Comme celle ci utilise dabbrev-expand en premier par
défaut ca ne pose pas de problème.
C'est vraiment bien pratique.
Encore merci donc, je savais bien qu'emacs n'allait pas plier face a vim
pour une si petite chose ;)
A+
Vincent
Avatar
drkm
drkm writes:

Il faudra que je teste.



Waw ! Ça décoiffe. Adopté. Mais pourquoi bon sang n'ai-je
pas essayé plus tôt ? Merci.

--drkm
Avatar
Sébastien Kirche
Le 28 Apr 2005, drkm s'est exprimé ainsi :

l'appel successif de la fonction ne cycle pas enter les
différentes propositions possible. Par exemple, dans :

word world w-!-

'M-x hippie-expand <RET>' va insérer « world ». Puis un second
appel affichera « No expansion found ». Bizarre ...



Chez moi ça marche ©

Avec le paramétrage que j'ai indiqué :
- un truc vraiment introuvable retourne «No expansion found»
- une complétion réussie indique quelle est la fonction qui a trouvé
quelque chose (e.g.: «Using try-expand-dabbrev» ou «Using
try-complete-file-name-partially»
- s'il ne peut plus trouver d'alternative «No further expansions found»
- Si j'insiste, il reboucle sur les différentes propositions

--
Sébastien Kirche
Avatar
Matthieu Moy
"v.p." writes:

Bonjour,
Dans vim, Ctrl-X-F permet de faire la completion de ce que l'on est en
train de taper en le considérant comme un chemin du système de fichier.
Aucun doute que cela est possible avec emacs, mais je n'arrive pas à
mettre la main sur le raccourci utile ?



;;---------------------------------------------------------------------
;; Filename completion anywhere with S-Tab
(autoload 'comint-dynamic-complete-filename "comint" "" t)
(global-set-key [S-tab] 'comint-dynamic-complete-filename)
(global-set-key [S-iso-lefttab] 'comint-dynamic-complete-filename)
(global-set-key [backtab] 'comint-dynamic-complete-filename)

--
Matthieu
Avatar
drkm
Sébastien Kirche writes:

Le 28 Apr 2005, drkm s'est exprimé ainsi :

l'appel successif de la fonction ne cycle pas enter les
différentes propositions possible. Par exemple, dans :

word world w-!-

'M-x hippie-expand <RET>' va insérer « world ». Puis un second
appel affichera « No expansion found ». Bizarre ...



Chez moi ça marche ©

Avec le paramétrage que j'ai indiqué :



Je viens d'essayer avec exactement ces valeurs. Rien n'y fait.
Version :

GNU Emacs 21.3.50.1 (i386-mingw-nt5.1.2600) of 2004-12-23 on
FARIBA

- un truc vraiment introuvable retourne «No expansion found»
- une complétion réussie indique quelle est la fonction qui a trouvé
quelque chose (e.g.: «Using try-expand-dabbrev» ou «Using
try-complete-file-name-partially»
- s'il ne peut plus trouver d'alternative «No further expansions found»
- Si j'insiste, il reboucle sur les différentes propositions



Ok. Je viens de trouver, en fait. Le fait de cycler entre les
différentes propositions fonctionne effectivement. Mais
seulement si l'on emploit un binding. Le fait d'utiliser 'M-x
hippie-expand' ne fonctionne pas.

Bon. Étrange. Mais je m'en contenterai, n'ayant pas le temps
d'investiguer plus loin. De toutes manières, c'est une fonction
qui n'est vraiment utile que liée à une séquence.

Merci pour le tuyau.

--drkm
Avatar
Ph. Idlavi
SL écrivit le 04/28/05 à 14h27:18 :

Erwan David a écrit :

Meta-/ ne fait pas ton bonheur ?



Dorénavant, il y contribuera.




On peut aussi utiliser avec bonheur le paquet 'dabbrev-hover.el' :
http://gnufans.net/~deego/emacspub/lisp-mine/dabbrev-hover/dabbrev-hover-0.2/dabbrev-hover.el

M-x dabbrev-hover-introduction :

,----
| With dh-mode, when you are typing a long word, like
| begin{equation}, you see a possible completion hovering next to what
| you type. Press TAB to complete the completion. This is similar to
| Openoffice's behavior. The key TAB continues to work normally
| otherwise.
|
| Add something like the following to .emacs, according to your tastes.
| (require 'cl)
| (require 'dabbrev-hover)
| (dabbrev-hover-install t t)
|
| The first argument of t installs this mode globally, for all buffers.
| The second argument of t installs the fancy TAB option described
| above. If you don't install the fancy version (or if you work on
| non-windowed systems where the fancy version doesn't work at this
| time), you can still dedicate a special key to do M-x dh-complete,
| which completes to the shown expansion.
|
| (global-set-key "C-cc" 'dh-complete) to your .emacs.
|
| To uninstall in a running emacs, M-x dabbrev-hover-uninstall
`----


--
Philippe.
Avatar
Paul Gaborit
À (at) Thu, 28 Apr 2005 14:07:51 +0200,
"v.p." écrivait (wrote):
Ha oui dans le minibuffer ca marche très bien, mais moi je voudrais une
fonction spéciale pour qu'il complète les chemins que je commence à
taper dans n'importe quel buffer, et quelque soit le mode majeur activé.
Par exemple pour pouvoir compléter un #include "/my/path/to/myfile.h",
ou d'autres chemins dans du code.



Placer des chemins absolus dans du code n'est pas bon (les choses bougent
d'une plateforme à l'autre, d'un système à l'autre, d'une mise à jour à
l'autre). Et si le chemin est relatif, (X)Emacs ne saura pas par rapport à
quoi il l'est (relatif).

Donc cette fonctionnalité sera inutile ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Avatar
drkm
Paul Gaborit writes:

À (at) Thu, 28 Apr 2005 14:07:51 +0200,
"v.p." écrivait (wrote):

Par exemple pour pouvoir compléter un #include "/my/path/to/myfile.h",
ou d'autres chemins dans du code.



Placer des chemins absolus dans du code n'est pas bon (les choses bougent
d'une plateforme à l'autre, d'un système à l'autre, d'une mise à jour à
l'autre). Et si le chemin est relatif, (X)Emacs ne saura pas par rapport à
quoi il l'est (relatif).



Pourquoi pas ? On peut très bien imaginer une liste de
répertoires de base. C'est assez évident pour ce qui touche aux
fichiers d'en-tête C et autres import Java, packages LaTeX, DTD
systèmes SGML ou XML, etc., au niveau du mode d'édition.

Mais également au niveau du fichier, par l'utilisation
d'extensions spécifiques (j'utilise une bibliothèque dans un
répertoire particulier) ou tout simplement en faisant référence à
des fichiers du projet courant.

--drkm
1 2 3