Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/02/2017, à 17:12

hbx360

code dans le .emacs ne marche pas

Bonjour à tous, j'utilise emacs depuis quelques temps déjà et en glanant ici et là des bouts de codes pour configurer emacs, j'ai deux code qui ne marche pas concernant les parenthèses et les accolades. En faite les deux codes permette quand on tape la parenthèse ouvrant la parenthèse fermante s'affiche aussi idem pour les accolades.

Mais malheureusement cela ne fonctionne pas. Bizarrement ça marche que dans le makefile.
Pour les crochets, guillemets et double guillemets, chevrons, cela fonctionne.

Voici les deux codes :

(defun insert-parentheses () "insert parentheses and go between them" (interactive)
  (insert "()")
  (backward-char 1))

(global-set-key "(" 'insert-parentheses) 

(defun insert-braces () "insert curly braces and go between them" (interactive)
  (insert "{}")
  (backward-char 1))

(global-set-key "{" 'insert-braces)

Dernière modification par hbx360 (Le 25/02/2017, à 18:16)

Hors ligne

#2 Le 25/02/2017, à 17:22

gl38

Re : code dans le .emacs ne marche pas

Il faut mettre \ devant les parenthèses et les accolades sinon il n'y a plus rien àcomprendre dans le code

(defun insert-parentheses () "insert parentheses and go between them" (interactive)
  (insert "\(\)")
  (backward-char 1))

(global-set-key "(" 'insert-parentheses) 

(defun insert-braces () "insert curly braces and go between them" (interactive)
  (insert "\{\}")
  (backward-char 1))

(global-set-key "{" 'insert-braces)

Cordialement,
Guy

Hors ligne

#3 Le 25/02/2017, à 17:31

hbx360

Re : code dans le .emacs ne marche pas

Merci pour ton aide mais ça ne marche pas sad!
Est-ce que sa pourrai pas venir d'un conflit avec la configuration interne de emacs ou quelque chose comme ça ?

Hors ligne

#4 Le 25/02/2017, à 18:21

gl38

Re : code dans le .emacs ne marche pas

Chez moi, ça marche.
Tu as peut-être d'autres erreurs dans ton .emacs
Il faut aussi ouvrir un autre emacs pour que la modification soit visible.
Cordialement,
Guy

Hors ligne

#5 Le 25/02/2017, à 19:05

hbx360

Re : code dans le .emacs ne marche pas

Chez moi, ça marche.

: ok mais c'est bien étrange mon .emacs est dans C:\Users\-\AppData\Roaming il a été placé ici quand j'ai installé emacs peut être faut-il que je le change de répertoire ?

Tu as peut-être d'autres erreurs dans ton .emacs

  : je sais pas en faite je suis pas assez calé.

Il faut aussi ouvrir un autre emacs pour que la modification soit visible.

: oui c'est ce que j'ai fait.

Ou peut-on trouvé les lignes de commandes dans emacs qui servent pour les raccourcis de base ?

Est-ce que dans emacs on peut trouvé le nom complet des commandes tel que par exemple :

C-w     M-x kill-region     (Couper la sélection) ou bien  :
M-w     M-x copy-region-as-kill (Copier la sélection)

Désolé de posés toutes ces questions mais j'ai un peu de mal avec emacs mais j'aime vraiment bien cet ide

@gl38 Merci encore pour ton aide

Dernière modification par hbx360 (Le 25/02/2017, à 19:06)

Hors ligne

#6 Le 25/02/2017, à 19:46

gl38

Re : code dans le .emacs ne marche pas

Vu que ton fichier vient de windows, il y a peut-être du souci avec les fins de ligne et l'encodage des caractères.
Cordialement,
Guy

Hors ligne

#7 Le 25/02/2017, à 20:09

gigiair

Re : code dans le .emacs ne marche pas

Pourquoi ne pas utiliser electric-pair-mode ?

electric-pair-mode is an interactive autoloaded Lisp function in
‘elec-pair.el’.

(electric-pair-mode &optional ARG)

Toggle automatic parens pairing (Electric Pair mode).
With a prefix argument ARG, enable Electric Pair mode if ARG is
positive, and disable it otherwise.  If called from Lisp, enable
the mode if ARG is omitted or nil.

Electric Pair mode is a global minor mode.  When enabled, typing
an open parenthesis automatically inserts the corresponding
closing parenthesis.  (Likewise for brackets, etc.). To toggle
the mode in a single buffer, use ‘electric-pair-local-mode’.

Si tu trouves que (electric-pair-mode 1) dans ton .emacs, est trop massif, il est possible de ne l'activer que pour les modes que tu souhaite. add-hook est fait pour ça.


--
JJR.

Hors ligne

#8 Le 26/02/2017, à 11:37

hbx360

Re : code dans le .emacs ne marche pas

@gl38 : Merci pour ton aide, j'ai supprimer mon .emacs et j'en ai recréé un dans le même répertoire mais ça n'a rien fait.

@gigiair : merci pour ton aide, en faisant avec electric-pair-mode sa marche sauf pour les chevrons, donc pour ceux-ci je l'ai fait avec l'autre code.

Merci encore pour votre aide.

@+

Hors ligne

#9 Le 26/02/2017, à 12:44

gl38

Re : code dans le .emacs ne marche pas

Le .emacs est doit être normalement dans le dossier de l'utilisateur.
Cordialement,
Guy

Hors ligne

#10 Le 26/02/2017, à 21:05

gigiair

Re : code dans le .emacs ne marche pas

hbx360 a écrit :

@gigiair : merci pour ton aide, en faisant avec electric-pair-mode sa marche sauf pour les chevrons, donc pour ceux-ci je l'ai fait avec l'autre code.
@+

Je ne m'étais pas intéressé à ce problème auparavant, il me semble que smartparens est ce qu'il y a de plus sophistiqué pour traiter ton problème. Ça s'installe très simplement avec le gestionnaire de packages

M-x package-install RET smartparens

Ensuite, ça s'active par

M-x smartparens-mode

les paires de délimiteurs reconnues sont décrites par  la valeur de la variable sp-pair-list
On peut ajouter des paires très facilement, par exemple évaluer :

(sp-pair "«" "»")
(sp-pair "<" ">")

Et ensuite ça marche comme les autres.
Bien entendu, on peut mettre tout ça dans  .emacs ou dans tout autre fichier d'initialisation.

Au passage, le fichier d'initialisation personnel est décrit pas la valeur de la variable

user-init-file

et pour afficher la valeur d'une variable, on peut faire C-h v puis taper la valeur de la variable en s'aidant de l'auto-complétion si besoin


--
JJR.

Hors ligne

#11 Le 26/02/2017, à 22:59

gigiair

Re : code dans le .emacs ne marche pas

hbx360 a écrit :

Ou peut-on trouvé les lignes de commandes dans emacs qui servent pour les raccourcis de base ?

Est-ce que dans emacs on peut trouvé le nom complet des commandes tel que par exemple :

C-w     M-x kill-region     (Couper la sélection) ou bien  :
M-w     M-x copy-region-as-kill (Copier la sélection)

Pour explorer un racourci, on peut taper C-h k  <le racourci>  (ou F1 k )
Par exemple C-h k C-w affiche

C-w runs the command kill-region (found in global-map), which is an
interactive compiled Lisp function in ‘simple.el’.

It is bound to C-w, <S-delete>, <menu-bar> <edit> <cut>.

(kill-region BEG END &optional REGION)

Kill ("cut") text between point and mark.
This deletes the text from the buffer and saves it in the kill ring.
The command <S-insertchar> can retrieve it from there.
(If you want to save the region without killing it, use M-w.)

If you want to append the killed region to the last killed text,
use C-M-w before C-w.

Any command that calls this function is a "kill command".
If the previous command was also a kill command,
the text killed this time appends to the text killed last time
to make one entry in the kill ring.

The killed text is filtered by ‘filter-buffer-substring’ before it is
saved in the kill ring, so the actual saved text might be different
from what was killed.

If the buffer is read-only, Emacs will beep and refrain from deleting
the text, but put the text in the kill ring anyway.  This means that
you can use the killing commands to copy text from a read-only buffer.

Lisp programs should use this function for killing text.
 (To delete text, use ‘delete-region’.)
Supply two arguments, character positions BEG and END indicating the
 stretch of text to be killed.  If the optional argument REGION is
 non-nil, the function ignores BEG and END, and kills the current
 region instead.

simple.el apparaît comme un lien, en suivant le lien, on affiche le code de la fonction

(defun kill-region (beg end &optional region)
  "Kill (\"cut\") text between point and mark.
This deletes the text from the buffer and saves it in the kill ring.
The command \\[yank] can retrieve it from there.
\(If you want to save the region without killing it, use \\[kill-ring-save].)

If you want to append the killed region to the last killed text,
use \\[append-next-kill] before \\[kill-region].
.....

De cette façon, on peut explorer le code.


Pour toutes les fonctions d'aide : C-h ?  (ou F1 ?)


--
JJR.

Hors ligne

#12 Le 04/03/2017, à 09:27

hbx360

Re : code dans le .emacs ne marche pas

@gigiair merci pour ton aide.

Hors ligne

#13 Le 04/03/2017, à 10:34

gigiair

Re : code dans le .emacs ne marche pas

hbx360 a écrit :

@gigiair merci pour ton aide.

Pas de problème. Il ne faut pas hésiter à demander. La meilleure aide sur Emacs est malheureusement en langue anglaise (comme la plupart de la doc emacs).
Emacs est fabuleusement documenté, mais il faut savoir trouver la documentation. Ce n'est pas évident.
Le mieux est de commencer par apprendre à parcourir un fichier info (info "(info)")
Ensuite, parcourir tous les moyens d'obtenir de la documentation.
La clé c'est C-h ou F1.
C-h ?  fournit la liste de tous les moyens d'obtenir de l'information, il faut les essayer tous.


--
JJR.

Hors ligne

#14 Le 06/03/2017, à 23:24

hbx360

Re : code dans le .emacs ne marche pas

Merci pour les renseignements.

Salut.

Dernière modification par hbx360 (Le 06/03/2017, à 23:24)

Hors ligne