Ceci est la troisième partie de la FAQ XEmacs. Cette section traite de la personnalisation et de la configuration de l'écran.
Comment `.emacs' fait-il pour savoir par quelle famille d'Emacs il est utilisé ?
Pour savoir si vous êtes en train d'exécuter GNU Emacs 18, GNU Emacs 19, XEmacs 19, XEmacs 20, ou Epoch et utiliser le code approprié, étudiez l'exemple donné dans `etc/sample.emacs'. Il s'y trouve aussi d'autres choses intéressantes !
Pour tout nouveau code, tout ce que vous avez à faire est :
(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
Je sais que je peux évaluer des expressions Elisp à partir du tampon
*scratch* avec C-j après l'expression. Comment le faire
dans un autre tampon ?
Pressez M-: (l'association de touches par défaut pour
eval-expression) et entrez l'expression dans le minitampon. Dans
les XEmacs antérieurs à 19.15, eval-expression était une commande
désactivée par défaut. Si c'est le cas, mettez votre XEmacs à jour.
NdT : Vous pouvez aussi évaluer directement l'expression dans le tampon où elle a été entrée en vous plaçant à la droite de sa parenthèse fermante et en tapant C-x C-e.
(setq tab-width 6) se comporte mal
Si vous placez (setq tab-width 6) dans votre fichier
`.emacs', cela ne fonctionne pas ! Y a t'il une raison à cela ?
Si vous le faites au prompt EVAL, cela fonctionne bien !! Étrange.
Utilisez setq-default à la place, car tab-width est local
à un tampon.
load-path ?Voici deux méthodes, l'une place vos répertoires devant le load-path, l'autre à la fin :
;;; Ajoute au debut du load-path, n'ajoute pas
;;; les repertoires dupliques :
(pushnew "bar" load-path :test 'equal)
(pushnew "foo" load-path :test 'equal)
;;; Ajoute à la fin, systématiquement
(setq load-path (nconc load-path '("foo" "bar")))
keith (k.p.) hanlan <keithh@nortel.ca> écrit :
Pour ajouter des noms de répertoires utilisant les métacaractères du shell Unix, utilisez `expand-file-name' comme ceci :
(push (expand-file-name "~keithh/.emacsdir") load-path)
Utilisez le code elisp suivant :
(fboundp 'foo)
C'est presque toujours une erreur de tester emacs-version ou tout
autre variable similaire.
Au lieu de cela, utilisez des « feature-tests », comme featurep,
boundp, fboundp, ou même de simples tests comme :
(defvar foo-old-losing-code-p (condition-case nil (progn (losing-code t) nil) (wrong-number-of-arguments t)))
Il existe un volume incroyable de code défectueux qui pourrait fonctionner bien mieux si ce qui est décrit plus haut était fait au lieu d'essayer de deviner la valeur de l'environnement à partir de la valeur d'une variable.
(face-list) vers un tampon ?
Ce serait bien de l'avoir dans un tampon car la sortie de
(face-list) est trop importante pour tenir dans un minitampon.
Évaluez l'expression dans le tampon `*scratch*' avec le point après la parenthèse la plus à droite et tapez C-j.
Si la petite taille du minitampon est le seul problème que vous rencontrez, vous pouvez simplement faire C-h l pour charger le contenu du minitampon dans un buffer.
Save Options.Pour XEmacs 19.14 et inférieurs :
John Mann <mannj@ll.mit.edu> écrit :
Vous devez allez dans Options->Menubar Appearance et déselectionner `Frame-Local Font Menu'. Si cette option est choisie, les changements de fontes ne s'appliquent qu'au cadre courant et ne seront pas sauvegardées avec les options.
Pour XEmacs 19.15 et supérieurs :
Faites ce qui est décrit plus haut et mettez ce qui suit dans votre `.emacs' :
(setq options-save-faces t)
Vin Shelton <acs@acm.org> écrit :
(setq initial-frame-plist '(minibuffer nil))
(setq default-frame-plist '(minibuffer nil))
(setq default-minibuffer-frame
(make-frame
'(minibuffer only
width 86
height 1
menubar-visible-p nil
default-toolbar-visible-p nil
name "minibuffer"
top -2
left -2
has-modeline-p nil)))
(frame-notice-user-settings)
REMARQUE : Un cadre de minitampon séparé peut ne pas convenir à tout le monde et beaucoup d'autres options de configuration de XEmacs peuvent rendre son utilisation difficile ou peu pratique.
Depuis XEmacs 20.2, il y a un nouveau système Customize pour la personnalisation des options de XEmacs.
Vous pouvez accéder à Customize via le menu Options ou en
invoquant l'une des commandes de personnalisation, telles que M-x
customize, M-x customize-face, M-x customize-variable ou
M-x customize-apropos.
Depuis XEmacs 20.3, il y a aussi un nouveau mode navigateur pour
Customize. Testez-le avec M-x customize-browse.
Recherchez `X Resources' dans le fichier `NEWS'. Une liste assez complète y est donnée.
De plus, un fichier `app-defaults' est fourni et énumère les valeurs par défaut : il s'appelle `etc/Emacs.ad'. Le fichier `etc/sample.Xdefaults' offre un ensemble de valeurs par défaut que vous pouvez étudier. Ce sont pratiquement les mêmes que celles de `etc/Emacs.ad' mais certaines entrées ont été légèrement modifiées. Faites attention lorsque vous intégrez le contenu de ce fichier dans votre `.Xdefaults' ou `.Xresources' si vous utilisez aussi GNU Emacs sous X11.
Vous pouvez tester la valeur renvoyée par la fonction
(device-class) de la façon suivante :
(when (eq (device-class) 'color) (set-face-foreground 'font-lock-comment-face "Grey") (set-face-foreground 'font-lock-string-face "Red") .... )
(set-screen-width) fonctionnait en 19.6, mais pas en 19.13 ?
Avec Lucid Emacs 19.6, j'avais (set-screen-width characters)
et (set-screen-height lines) dans mon `.emacs' au lieu
de préciser Emacs*EmacsScreen.geometry dans mon `.Xdefaults'
mais XEmacs 19.13 le refuse.
Ces deux fonctions prennent maintenant des cadres comme arguments :
(set-frame-width (selected-frame) characters) (set-frame-height (selected-frame) lines)
Emacs*EmacsScreen.geometry dans `.emacs' ne fonctionne plus en 19.15 ?
Avec XEmacs 19.11, je précisais Emacs*EmacsScreen.geometry dans
mon `.emacs' mais cela ne fonctionne plus avec XEmacs 19.15.
Nous sommes passés de l'utilisation du terme screen au terme frame.
L'entrée correcte pour votre `.Xdefaults' est désormais :
Emacs*EmacsFrame.geometry
J'aimais l'icone qui n'affichait que `XEmacs' sans le nom du fichier courant.
Ajoutez la ligne suivante à votre `.emacs' :
(setq frame-icon-title-format "XEmacs")
Je voudrai que la barre de titre affiche le nom/répertoire complet du fichier du tampon courant au lieu de son simple nom.
Ajoutez la ligne suivante à votre `.emacs' :
(setq frame-title-format "%S: %f")
Un titre plus sophistiqué pourrait être :
(setq frame-title-format
'("%S: " (buffer-file-name "%f" (dired-directory dired-directory "%b"))))
C'est-à-dire, utiliser le nom du fichier ou le répertoire dired, ou le nom du tampon.
Quand je lance `xterm -name junk', j'obtiens un xterm dont le nom de classe, selon xprop, est `junk' et je suppose que c'est normal. Lorsque je lance `xemacs -name junk' le nom de la classe n'est pas `junk', c'est encore `emacs'. Que fait vraiment `xemacs -name' ? Je pose la question car mon gestionnaire de fenêtres (fvwm) fera une fenêtre « sticky » et j'utilise XEmacs pour lire mon courrier. Je veux que la fenêtre XEmacs soit sticky, sans avoir à utiliser les fonctions du gestionnaire de fenêtres pour le faire. Que faire ?
`xemacs -name' configure le nom de l'application pour le programme
(c'est ce qui provient normalement de `argv[0]'). Utiliser
`-name' revient à faire une copie de l'exécutable pour
qu'il ait ce nouveau nom. La propriété WM_CLASS de chaque cadre
est configurée avec le nom du cadre et de la classe de
l'application. Donc, si vous faites `xemacs -name FOO' et que vous
créez un cadre nommé BAR, vous obtiendrez une fenêtre X avec WM_CLASS =
( "BAR", "Emacs"). Cependant, la hiérarchie des ressources pour
ce widget sera :
Name: FOO .shell .container .BAR Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
au lieu de celle par défaut :
Name: xemacs.shell .container .emacs Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
On pourrait faire remarquer que le premier élément de WM_CLASS devrait être le nom de l'application au lieu de celui du cadre. Je pense que ce serait moins souple car cela ne donnerait pas la possibilité d'avoir plusieurs cadres avec différentes propriétés WM_CLASS. Une autre possibilité serait d'avoir un nom de cadre par défaut venant du nom de l'application au lieu que ce soit simplement `emacs'. Cependant, cette modification serait source de problèmes : elle signifierait que de nombreux utilisateurs devraient alors modifier leurs fichiers ressources (car le nom de cadre par défaut changerait subitement d'`emacs' à `xemacs', ou tout autre nom de l'exécutable), nous préférons éviter cela.
Pour obtenir un cadre portant un nom particulier, faites :
(make-frame '((name . "le-nom")))
XEmacs lancé avec `-iconic' ne fonctionne pas bien. Utiliser
`-unmapped' en ligne de commande et configurer la ressource X
initiallyUnmapped ne semble pas beaucoup aider...
Ben Wing <ben@666.com> écrit :
Ahem, ce truc est tellement embrouillé que j'ai envie de renoncer à le faire fonctionner. Le problème principal vient des nombreux bugs du gestionnaire de fenêtres...
Comment puis-je configurer les couleurs les plus fréquemment utilisées à partir de mon `.emacs' au lieu de mon `.Xdefaults' ?
Comme ceci :
(set-face-background 'default "bisque") ; fond du cadre
(set-face-foreground 'default "black") ; texte normal
(set-face-background 'zmacs-region "red") ; Quand on selectionne
; avec la souris
(set-face-foreground 'zmacs-region "yellow")
(set-face-font 'default "*courier-bold-r*120-100-100*")
(set-face-background 'highlight "blue") ; Quand on selectionne
: des tampons
(set-face-foreground 'highlight "yellow")
(set-face-background 'modeline "blue") ; Ligne en bas du tampon
(set-face-foreground 'modeline "white")
(set-face-font 'modeline "*bold-r-normal*140-100-100*")
(set-face-background 'isearch "yellow") ; Mise en evidence pendant
; la recherche
(set-face-foreground 'isearch "red")
(setq x-pointer-foreground-color "black") ; S'ajoute a la couleur du fond
; reste donc noir
(setq x-pointer-background-color "blue") ; Ceci est la couleur que vous
; voulez vraiment pour ptr/crsr
Vous devriez utiliser `Emacs.' et non `Emacs*' lorsque vous configurez les valeurs d'aspect.
Dans `.Xdefaults':
Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-* Emacs*menubar*font: fixed Emacs.modeline.attributeFont: fixed
Ceci est source de confusion, car modeline est un aspect et peut être
listé avec tous les aspects du mode courant à l'aide de M-x set-face-font
(enter) ?. Il utilise la spécification d'aspect d'attributeFont,
tandis que menubar est une chose X normale qui utilise la spécification
font. Avec Motif il peut être nécessaire d'utiliser fontList
au lieu de font.
Comment puis-je configurer les couleurs d'arrière/premier plan lorsqu'on met en évidence une région ?
Vous pouvez modifier l'aspect zmacs-region, soit dans votre `.Xdefaults' :
Emacs.zmacs-region.attributeForeground: firebrick Emacs.zmacs-region.attributeBackground: lightseagreen
soit dans votre `.emacs' :
(set-face-background 'zmacs-region "red") (set-face-foreground 'zmacs-region "yellow")
J'utilise Netscape (ou un autre gouffre à couleurs comme XEmacs) : y a t-il moyen de limiter le nombre de couleurs disponibles dans la palette ?
XEmacs 19.13 ne dispose pas d'un tel mécanisme (à la différence de Netscape ou autres applications voraces en couleurs). Une solution consiste à lancer XEmacs avant Netscape, car cela empêchera Netscape de capturer toutes les couleurs (mais il s'en plaindra). Vous pouvez utiliser des options pour Netscape, comme -mono, -ncols <#> ou -install (pour monochrome, limitation à <#> couleurs, or pour l'utilisation d'une carte de couleur privée). Comme Netscape prendra la palette complète et ne la libèrera jamais, le seul moyen raisonnable de le lancer est d'utiliser `-install'.
Si vous avez de l'argent, une autre solution consiste à utiliser une classe d'affichage truecolor ou direct color.
À partir de XEmacs 19.14, XEmacs utilise la couleur disponible la plus proche si la palette est pleine, cela permet donc, maintenant, de lancer Netscape en premier.
XEmacs essaie de déterminer automatiquement si votre terminal sait gérer la couleur, mais n'y parvient pas toujours. Dans ce cas, vous pouvez le remettre dans le bon chemin et utilisant le code Lisp :
(if (eq 'tty (device-type))
(set-device-class nil 'color))
(set-specifier has-modeline-p nil)
À partir de XEmacs 19.14, la ligne de mode répond aux clics de la souris, donc si vous n'aimiez pas, ou si vous n'utilisiez pas, la ligne de mode offerte par les versions précédentes, essayez une version récente.
Ajoutez la ligne suivante dans votre fichier `.emacs' pour afficher le numéro de ligne :
(setq line-number-mode t)
Utilisez ce qui suit pour afficher le numéro de colonne :
(display-column-mode t)
Ou choisissez, à partir du menu Options,
Customize->Emacs->Editing->Basics->Line Number Mode et/ou
Customize->Emacs->Editing->Basics->Column Number Mode.
Ou encore, tapez M-x customize RET editing-basics RET.
Ajoutez la ligne suivante dans votre fichier `.emacs' pour afficher l'heure :
(display-time)
Voir Customize à partir du menu Options pour les
personnalisations.
Avec AUC TeX, la frappe rapide est difficile car le chapitre, la section, etc. courants sont affichés dans la ligne de commande. Comment désactiver cela ?
Ce n'est pas AUC TeX, mais func-menu dans `func-menu.el'.
Ajoutez ce code à votre `.emacs' pour le désactiver :
(setq fume-display-in-modeline-p nil)
Ou ajoutez simplement un hook à TeX-mode-hook pour ne le
désactiver que pour le mode TeX :
(add-hook 'TeX-mode-hook '(lambda () (setq fume-display-in-modeline-p nil)))
David Hughes <dhughes@origin-at.co.uk> écrit :
Si votre version est 19.14 ou supérieure, essayez plutôt ceci : vous aurez encore le nom de la fonction affichée dans la ligne de mode, mais cela n'essaiera plus de garder une trace lorsque vous modifiez le fichier. Pour rafraîchir lorsque cela n'est plus synchronisé, cliquez simplement sur l'option `Rescan Buffer' dans le menu function.
(setq-default fume-auto-rescan-buffer-p nil)
Vous pouvez faire la chose suivante :
(add-hook 'lisp-mode-hook
(lambda ()
(set-face-background 'modeline "red" (current-buffer))))
Désormais, lorsque vous éditerez un fichier Lisp (i.e. en mode Lisp), la ligne de mode changera par rapport à la configuration par défaut décrite dans votre `.emacs'. Le changement ne sera fait que dans le tampon dans lequel vous venez d'entrer (celui qui contient le fichier Lips que vous éditez) et n'affectera pas les couleurs des autres lignes de mode.
Remarques :
-hook. Par exemple,
c-mode-hook, c++-mode-hook, emacs-lisp-mode-hook (utilisé pour votre
`.emacs' ou un fichier `xx.el'), lisp-interaction-mode-hook
(le tampon `*scratch*'), text-mode-hook, etc.
add-hook et non (setq c-mode-hook xxxx),
sinon vous écraserez tout ce qui a déjà été mis dans le hook.
(set-face-font 'modeline font),
par exemple : (set-face-font 'modeline "*bold-r-normal*140-100-100*"
(current-buffer)) si vous souhaitez que la fonte de la ligne de mode
change en fonction du mode courant.
Cela fonctionne aussi avec la version 19.15, mais il y a des aspects de
la ligne de mode supplémentaires, modeline-buffer-id,
modeline-mousable et modeline-mousable-minor-mode, que
vous pouvez personnaliser.
Cette gestion a été réorganisée pour la version 19.14. Utilisez la
commande M-x make-frame-on-display. Elle se trouve aussi dans le
menu File.
XEmacs 19.14 et supérieurs disposent aussi de la commande
make-frame-on-tty qui permet d'établir une connexion vers
n'importe quel périphérique de type terminal. L'ouverture des
périphériques TTY doit, cependant, être laissée à gnuclient.
Si vous n'avez pas au moins XEmacs 19.14, vous ne le pouvez pas. Sinon,
étudiez le programme gnuattach fourni avec XEmacs. À partir de
XEmacs 20.3, les fonctionnalités de gnuattach et gnudoit
sont fournies par gnuclient.
Voir aussi See section Comment empêcher gnuserv d'ouvrir un nouveau cadre ?.
Comme exemple, supposons que vous vouliez que la touche paste d'un clavier Sun insère la sélection primaire X courante à l'endroit du point. Vous pouvez obtenir cela avec :
(define-key global-map [f18] 'x-insert-selection)
Cependant, cela ne fonctionne que s'il y a une sélection X courante (la
sélection sera mise en évidence). La fonctionnalité que j'apprécie pour
la touche paste est d'insérer la sélection X courante s'il y en a
une et d'insérer le contenu du clipboard sinon. Pour ce faire, on doit
passer des arguments à x-insert-selection en l'enveloppant dans
une lambda :
(global-set-key [f18]
(lambda () (interactive) (x-insert-selection t nil)))
Ceci lie la touche F18 à un objet fonctionnel générique. La spécification interactive est nécessaire car seules les fonctions de ce type peuvent être liées à des touches.
Pour l'exemple de la FAQ, vous pourriez utiliser :
(global-set-key [(control ?.)] (lambda () (interactive) (scroll-up 1))) (global-set-key [(control ?;)] (lambda () (interactive) (scroll-up -1)))
Ceci est pratique si vous n'avez besoin que de quelques fonctions dans le corps de la lambda (fonction anonyme). Si vous en faites plus, il est plus propre de définir une fonction séparée comme dans la question 3.5.3 (See section Comment lier C-. et C-; au défilement d'une ligne vers le haut et le bas ?).
Ajoutez la ligne suivante à votre fichier `.emacs' :
(setq next-line-add-newlines nil)
Ceci a été la configuration par défaut de XEmacs pendant un certain temps.
Ajoutez ce qui suit à `.emacs' (Merci à Richard Mlynarik <mly@adoc.xerox.com> et Wayne Newberry <wayne@zen.cac.stratus.com>) :
(defun scroll-up-one-line () (interactive) (scroll-up 1)) (defun scroll-down-one-line () (interactive) (scroll-down 1)) (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
Le point clé est que vous ne pouvez lier que des fonctions simples aux touches ; vous ne pouvez associer une touche à une fonction à laquelle vous passez aussi des arguments.
(Voir See section Comment lier des fonctions complexes (ou des macros) à des touches ? pour une meilleure réponse).
Je n'arrive pas à lier globalement ma touche Delete à quelque chose d'autre que la valeur par défaut. Comment fait-on ?
(defun foo () (interactive) (message "Vous avez pressé DELETE")) (global-set-key 'delete 'foo)
Cependant, certains modes lient explicitement Delete, vous devez
donc ajouter un hook utilisant local-set-key pour ceux-ci. Si
ce que vous voulez est que les touches Backspace et Delete fonctionnent
comme sur un PC/Motif-like, jettez un coup d'oeil au paquetage
`delbs.el'.
Avec XEmacs 19.14, la nouvelle variable key-translation-map
facilite l'affectation de Delete. `delbs.el' est un
bon exemple de la façon correcte de procéder.
Voir aussi See section Puis-je activer les touches modifieurs sticky ?.
Est-ce que les touches du curseur peuvent faire défiler l'écran ligne par ligne plutôt que faire un saut par défaut d'une demi-page ? C'est plutôt déroutant !
Essayez ceci :
(defun scroll-one-line-up (&optional arg) "Defilement de la fenetre choisie d'une ligne (ou N lignes) vers l'avant (interactive "p") (scroll-up (or arg 1))) (defun scroll-one-line-down (&optional arg) "Defilement de la fenetre choisie d'une ligne (ou N lignes) vers l'arriere (interactive "p") (scroll-down (or arg 1))) (global-set-key [up] 'scroll-one-line-up) (global-set-key [down] 'scroll-one-line-down)
Ce qui suit fonctionne aussi mais fera plus qu'affecter seulement les touches du curseur (i.e. C-n and C-p) :
(setq scroll-step 1)
À partir de XEmacs-20.3, vous pouvez aussi utiliser Customize.
Choisissez Customize->Emacs->Environment->Windows->Scroll Step...
à partir du menu Options, ou tapez M-x customize RET
windows RET.
Ce qui suit fonctionne avec GNU Emacs 19 :
(global-set-key [help] 'help-command) ;; Help
Ce qui suit fonctionne avec XEmacs 19.15 en combinaison avec shift :
(global-set-key [(shift help)] 'help-command) ;; Help
Mais cela ne suffit pas. Lire le fichier `PROBLEMS' que vous avez dû avoir avec votre installation XEmacs : Emacs ignore la touche help lorsque vous utilisez OLWM.
OLWM utilise la touche help et la retransmet au client approprié
en utilisant XSendEvent. Permettre à Emacs de réagir à des
événements synthétiques est une faille dans la sécurité et cela est donc
désactivé par défaut. Vous pouvez l'activer en configurant la variable
x-allow-sendevents à t. Vous pouvez aussi régler ce problème en
indiquant à OLWM de ne pas utiliser la touche help à l'aide de la
liaison nulle OpenWindows.KeyboardCommand.Help:.
Une méthode est d'utiliser le paquetage `x-compose'. Vous pouvez alors utiliser des séquences comme Compose " a pour obtenir ä, etc.
Une autre consiste à utiliser le paquetage `iso-insert', fourni avec XEmacs 19.15 et supérieurs. Vous pouvez alors utiliser des séquences comme C-x 8 " a pour obtenir ä, etc.
(global-set-key [delete-forward] 'delete-char) ne fonctionne pas ?
pourquoi (define-key global-map [ delete-forward ] 'delete-char)
se plaint de ne pouvoir lier une touche inconnue ?
Essayez plutôt ceci :
(define-key global-map [delete_forward] 'delete-char)
et cela fonctionnera.
Ce que vous voyez ci-dessus est un bug dû au code qui vérifie la syntaxe GNU Emacs comme :
(define-key global-map [C-M-a] 'delete-char)
ce qui, sinon, ne causerait pas d'erreur mais n'aboutirait pas au résultat attendu.
Ce bug a été corrigé dans la version 19.14.
Avex XEmacs-20.2, utilisez le paquetage `delbs' :
(require 'delbs)
Cela vous donnera les fonctions delbs-enable-delete-forward pour
mettre les choses en place et delbs-disable-delete-forward pour
revenir au comportement « normal ». Notez que le paquetage
`delbackspace' est obsolète.
À partir de XEmacs-20.3, une meilleure solution est de configurer la
variable delete-key-deletes-forward à t. Vous pouvez aussi
modifier cela avec Customize. Choisissez
Customize->Emacs->Editing->Basics->Delete Key Deletes Forward à
partir du menu Options. ou tapez M-x customize RET
editing-basics RET.
Voir See section Lier globalement Delete ?.
Oui, avec (setq modifier-keys-are-sticky t). Ceci aura pour
effet que l'on pourra presser et relâcher la touche Shift et avoir le
prochain caractère tapé en majuscule. Cela affectera aussi toutes les
autres touches modifieurs comme Control et Meta.
Ben Wing <ben@666.com> écrit :
Une chose à propos des modifieurs sticky : si vous déplacez la souris en dehors du cadre et que vous revenez dedans, cela annule tous les modifieurs couramment « collés ».
Je voudrais avoir un trait de curseur un peu plus épais car j'ai tendance à le perdre souvent.
Pour un curseur d'un pixel, utilisez :
(setq bar-cursor t)
Pour une curseur de 2 pixels, utilisez :
(setq bar-cursor 'anything-else)
Depuis XEmacs-20.3, vous pouvez aussi changer cela avec Customize.
Choisissez Customize->Emacs->Environment->Display->Bar Cursor...
à partir du menu Options, ou tapez M-x customize RET display
RET.
Vous pouvez utiliser une couleut, grâce à une ressource X :
Emacs*cursorColor: Red
(setq bar-cursor nil)
Depuis XEmacs-20.3, vous pouvez aussi changer cela avec Customize.
Choisissez Customize->Emacs->Environment->Display->Bar Cursor...
à partir du menu Options, ou tapez M-x customize RET display
RET.
Si vous avez une version de XEmacs antérieure à 19.14, non. Sinon, vous pouvez faire ce qui suit :
(blink-cursor-mode)
Cette fonction commute entre un curseur fixe et clignotant. Vous pouvez aussi configurer ce mode à partir du menu en choisissant `Options => Frame Appearance => Blinking Cursor'. Pensez à sauvegarder les options.
J'ai gardé appuyé le bouton du milieu de la souris par accident et j'ai récupéré des choses qui se sont collées dans mon tampon. Comment puis désactiver cela ?
Voici une liaison où le bouton du milieu sélectionne (mais ne coupe pas)
l'expression sous la souris. Cliquer avec sur une parenthèse ouvrante ou
fermante sélectionnera celle qui lui correspond. Notez que vous pouvez utiliser
define-key ou global-set-key.
(defun mouse-set-point-and-select (event) "Place le point a l'emplacement de la souris, puis marque la forme suivante" (interactive "@e") (mouse-set-point event) (mark-sexp 1)) (define-key global-map [button2] 'mouse-set-point-and-select)
Utilisez, par exemple, [(meta button1)]. Voici une
configuration pour les programmeurs en Common Lisp qui utilise le
paquetage ilisp de la distribution et où meta-button1 sur un nom
de fonction trouvera le fichier où cette fonction est définie et vous
placera à cet endroit dans le fichier source.
(local-set-key [(meta button1)] 'edit-definitions-lisp)
Je fais C-x C-b pour avoir une liste des tampons et les entrées sont mises en évidence lorsque la souris passe dessus mais cliquer avec le bouton gauche ne fait rien.
Utilisez le bouton du milieu.
Le code suivant remplacera le popup par défaut du bouton 3 :
(global-set-key [button3] 'popup-buffer-menu)
Nous ne le savons pas. C'est un bug. Il semble quand même qu'on puisse le contourner. Essayez de lancez d'abord xclipboard, cela règle le problème même si vous en sortez (ceci sera réglé avec la version 19.13, mais nous n'avons pas encore vérifié ça).
Par défaut, XEmacs colle les sélections X à l'emplacement où se trouve le pointeur de la souris. Comment puis-je désactiver cela ?
Examinez la fonction mouse-yank, en tapant C-h f mouse-yank
RET.
Pour que XEmacs colle à l'endroit du curseur texte, ajoutez ceci à votre `.emacs':
(setq mouse-yank-at-point t)
À partir de XEmacs-20.3 vous pouvez aussi modifier cela avec Customize.
Choisissez Customize->Emacs->Editing->Mouse->Yank At Point... à
partir du menu Options, ou tapez M-x customize RET mouse
RET.
Sélectionnez la région normalement, puis utilisez les commandes
rectangle (kill-rectangle, par exemple) dessus. La région n'est
pas mise en évidence comme rectangle mais les commandes fonctionnent
correctement.
Pour vraiment balayer les régions rectangulaires avec la souris, vous
pouvez utiliser mouse-track-do-rectangle qui est assignée à
M-button1. Puis utilisez les commandes rectangle.
Vous pouvez aussi faire ce qui suit pour modifier le comportement par défaut pour balayer les régions rectangulaires :
(setq mouse-track-rectangle-p t)
À partir de XEmacs-20.3 vous pouvez aussi modifier cela avec Customize.
Choisissez Customize->Emacs->Editing->Mouse->Track Rectangle... à
partir du menu Options, ou tapez M-x customize RET mouse
RET.
mouse-track-do-rectangle: (event) -- an interactive compiled Lisp function. Like `mouse-track' but selects rectangles instead of regions.
Il ne le fait pas. Il laisse la région visible pendant une seconde pour que vous puissiez voir quelle zone est copiée. Si vous commencez à travailler, il terminera immédiatement sa tâche. En d'autres termes, il ne met une seconde que si vous le laissez faire.
Si vous disposez de XEmacs 19.13 et antérieurs, ajoutez cette commande à votre `.emacs'.
(set-menubar nil)
À partir de XEmacs 19.14, la méthode à privilégier est :
(set-specifier menubar-visible-p nil)
Pour une barre de menu étendue, ajoutez cette ligne à votre `.emacs' :
(load "big-menubar")
Si vous voulez créer votre propre barre de menu, ce fichier offre un ensemble d'exemples de base utilisables par tous. Le fichier se trouve dans `lisp/packages/big-menubar.el', dans le répertoire d'installation de XEmacs.
Buffers List ?Ajoutez ce qui suit à votre `.emacs' (adaptez à vos besoins) :
(setq buffers-menu-max-size 20)
Pour ne pas avoir de limite, utilisez un argument `nil'.
À partir de XEmacs-20.3 vous pouvez aussi modifier cela avec Customize.
Choisissez Customize->Emacs->Environment->Menu->Buffers Menu->Max Size... à
partir du menu Options, ou tapez M-x customize RET
buffers-menu RET.
Emacs*menubar*font ne fonctionnent pas ?
J'essaie d'utiliser une ressource comme Emacs*menubar*font pour
configurer la fonte de la barre de menu, mais cela ne marche pas.
Si vous utilisez la vrai barre de menu Motif, cette ressource n'est pas reconnue ; vous devez dire :
Emacs*menubar*fontList: FONT
Si vous utilisez la barre de menu Lucid, la première ressource ne sera reconnue que si la dernière ressource n'est pas configurée. Ceci signifie que la ressource
*fontList: FONT
surchargera
Emacs*menubar*font: FONT
bien que la dernière soit plus spécifique.
Essayez quelque chose comme :
(defun my-toggle-toolbar ()
(interactive)
(set-specifier default-toolbar-visible-p
(not (specifier-instance default-toolbar-visible-p))))
(global-set-key "\C-xT" 'my-toggle-toolbar)
Il y a des bugs de réaffichage dans la version 19.14 qui peut faire que ce qui précède donne un affichage embrouillé, notamment pour les cadres ayant plusieurs fenêtres. Vous pouvez devoir redimensionner le cadre avant que XEmacs ne réalise que la barre de menu soit vraiment partie.
Merci à Martin Buchholz <Martin.Buchholz@sun.com> pour le code correct.
Pour les désactiver dans tous les cadres, ajoutez la ligne suivante à votre `.Xdefaults' :
Emacs.scrollBarWidth: 0
Ou choisissez Frame Appearance->Scrollbars à partir du menu Options. Pensez à sauver les options.
Pour désactiver la barre de défilement cadre par cadre, utilisez la fonction suivante :
(set-specifier scrollbar-width 0 (selected-frame))
Vous pouvez, en fait, activer les barres de défilement à n'importe quel niveau en le substituant au (selected-frame) de la commande ci-dessus. Par exemple, pour les désactiver seulement dans un tampon unique :
(set-specifier scrollbar-width 0 (current-buffer))
Dans les versions de XEmacs antérieures à 19.14, vous deviez utiliser la construction un peu plus tirée par les cheveux :
(set-specifier scrollbar-width (cons (selected-frame) 0))
Voici un récapitulatif de la façon d'utiliser les ressources pour changer les couleurs de votre barre de défilement :
! Motif scrollbars Emacs*XmScrollBar.Background: skyblue Emacs*XmScrollBar.troughColor: lightgray ! Athena scrollbars Emacs*Scrollbar.Foreground: skyblue Emacs*Scrollbar.Background: lightgray
Remarquez la majuscule de Scrollbar pour le widget Athena.
Lorsque je me sert de la barre de défilement dans une fenêtre XEmacs, cela déplace aussi le point, ce qui ne devrait pas être le comportement par défaut. Est-ce un bug ? Puis-je désactiver ça ?
Ce comportement est normal, ce n'est pas un bug. Le point reste à la même position dans le tampon tant que la position ne sort pas de l'écran. Dans ce cas, le point ira soit dans le coin supérieur gauche, soit dans le coin inférieur gauche.
Cela ne peut être modifié.
Par la même occasion, comment puis-je le désactiver dans des modes spécifiques ?
Ajouter à vote fichier `.emacs' :
(require 'auto-show)
Puis, faites (setq truncate-lines t) dans les hooks des modes
pour lesquels vous voulez des lignes tronquées.
Plus précisément : Si truncate-lines est à nil, les barres de
défilement horizontales n'apparaitront jamais. Sinon, elles
n'apparaîtront que si la valeur de scrollbar-height pour ce
tampon/fenêtre/etc n'est pas nulle. Si vous faites :
(set-specifier scrollbar-height 0)
les barres de défilement horizontales n'apparaitront pas dans les tampons tronqués sauf si le paquetage les demande explicitement.
À partir de la version 19.14, le défilement horizontal automatique est en standard.
Le mode zmacs permet ce que l'on pourrait appeler une mise en
évidence gratuite des régions sélectionnées (en configurant la marque,
ou en utilisant la souris). C'est le comportement par défaut. Pour le
désactiver, ajoutez la ligne suivante à votre fichier `.emacs' :
(setq zmacs-regions nil)
À partir de XEmacs-20.2 vous pouvez aussi utiliser Customize. Choisissez
Customize->Emacs->Editing->Basics->Zmacs Regions à partir du menu
Options, ou faites M-x customize RET editing-basics RET.
Pour modifier l'aspect de la sélection, faites Options->Customize
à partir de la barre de menu.
Je veux faire en sorte que si je sélectionne du texte et que je commence à taper, le texte tapé remplace le texte sélectionné, comme avec Motif.
Vous voulez utiliser quelque chose appelé pending delete. Le pending delete est ce qui arrive lorsque vous sélectionnez une région (avec la souris ou le clavier) et que vous pressez une touche pour remplacer la région sélectionnée par la touche tapée. Habituellement, Backspace détruit la région sélectionnée.
Pour obtenir ce comportement, ajoutez la ligne suivante à votre `.emacs' :
(turn-on-pending-delete)
Notez que ceci fonctionne avec Backspace et Delete.
Je n'aime pas que mon texte soit mis en évidence lorsque je fais une recherche incrémentale car je ne peux pas voir ce qu'il y a en dessous. Comme désactiver ça ?
Placez ce qui suit dans votre `.emacs':
(setq isearch-highlight nil)
À partir de XEmacs-20.2, vous pouvez aussi utiliser Customize. Tapez M-x customize-variable RET isearch-highlight RET.
Notez aussi qu'isearch-highlight affecte query-replace et
ispell. Au lieu de désactiver isearch-highlight, une meilleure
solution est peut-être de personnaliser l'aspect d'isearch.
Mettez ceci dans votre .emacs :
(setq zmacs-regions nil)
Attention : cette commande désactive toutes les mises en évidences de région
Voir aussi See section Comment désactiver ou modifier les sélections mises en évidence ?.
Comment désactiver cette caractéristique (car, bien sûr, c'en est une et non un bug) ?
Comme ceci :
(defadvice scroll-up (around scroll-up freeze)
(interactive "_P")
(let ((zmacs-region-stays t))
(if (interactive-p)
(condition-case nil
ad-do-it
(end-of-buffer (goto-char (point-max))))
ad-do-it)))
(defadvice scroll-down (around scroll-down freeze)
(interactive "_P")
(let ((zmacs-region-stays t))
(if (interactive-p)
(condition-case nil
ad-do-it
(beginning-of-buffer (goto-char (point-min))))
ad-do-it)))
Merci à T. V. Raman <raman@adobe.com> pour son aide dans l'élaboration de cette réponse.
Go to the first, previous, next, last section, table of contents.