1 votes

Comment puis-je obtenir mon cocoa emacs sur Mac OS X pour charger mes personnalisations visuelles .emacs pour de nouvelles fenêtres (tout document ouvert après le premier) ?

Alors j'ai juste téléchargé emacs 23.1 pour mon nouveau macbook pro snow leopard depuis http://emacsformacosx.com/ et ça marche comme un charme, sauf...

J'ai des personnalisations visuelles dans mon .emacs, quelques lignes sont extraites ici:

(set-background-color "black")
(set-cursor-color "green") (set-default-font "--Lucida Console-normal-r-normal-normal-18--96-96-c-*-iso10646-1")

J'ai également quelques raccourcis clavier configurés, voici quelques lignes de ceux-ci

(global-set-key "\C-l" `goto-line)

(global-set-key [(control ?%)] `query-replace-regexp)

La première fois que je démarre emacs ou ouvre un document avec emacs, tout se charge parfaitement. Quand je tape une commande-N ou ouvre un autre fichier via finder, une nouvelle fenêtre s'ouvre avec les personnalisations des raccourcis clavier chargées mais sans les personnalisations visuelles (y compris la taille de la fenêtre, etc)

Je pense que cela a quelque chose à voir avec la façon dont emacsclient est invoqué et le serveur emacs, mais malgré mon utilisation assidue d'emacs pour le développement, je suis assez ignorant quand il s'agit de configurer l'éditeur lui-même en dehors de la personnalisation au niveau de .emacs

Voici les comportements potentiels que j'aimerais obtenir lorsque une nouvelle fenêtre est ouverte (via command-n ou en ouvrant un document dans finder), par ordre de préférence:

  1. Avoir la nouvelle fenêtre créer un nouveau processus emacs (pas seulement un nouveau tampon) afin que je puisse gérer et naviguer entre plusieurs projets de manière similaire à ce que fait textmate, en utilisant un processus emacs pour chaque projet.

  2. Que ces personnalisations visuelles soient persistantes afin que chaque nouvelle fenêtre se charge avec les tailles, polices et couleurs correctes.

  3. Que chaque nouveau document s'ouvre en tant que tampon dans la fenêtre emacs active actuelle.

Dites-moi si vous pouvez m'aider, merci!

2voto

Neil Sarkar Points 1584

D'accord, j'ai compris comment faire cela (démarrer un nouveau serveur emacs pour chaque nouveau projet) à partir du terminal, je suis sûr que ce serait trivial de le faire fonctionner à partir du Finder aussi, mais comme je suis généralement dans le terminal de toute façon, cela fonctionne pour moi. J'ai juste ajouté ceci à mon ~/.profile

function emacs-open() {
    /Applications/Emacs.app/Contents/MacOS/Emacs $1 &
}

ensuite, lorsque vous voulez ouvrir un fichier dans un nouveau projet (serveur emacs) avec toutes vos personnalisations de cadre et votre .emacs chargés correctement, c'est juste

$ emacs-open index.php

Je sais que cela peut sembler très évident pour certains, mais autant que je puisse dire, cela n'est pas fait pour vous n'importe où lorsque vous téléchargez le package depuis http://emacsformacosx.com/ alors j'espère que cela aidera quelqu'un

1voto

Trey Jackson Points 49816

Pour personnaliser les couleurs, vous devez apporter les modifications aux cadres comme suit :

(setq default-frame-alist
    `((background-color . ,background)
      (foreground-color . "lightcyan")
      (border-color . "lightskyblue1")
      (cursor-color . "palegoldenrod")
      (mouse-color . "azure")))

En ce qui concerne le lancement d'un nouveau processus Emacs lors de l'ouverture d'un document dans Finder, pour ce faire, vous devez simplement désactiver votre serveur Emacs et/ou ne pas utiliser emacsclient. Il suffit de le configurer pour que emacs soit appelé directement pour ouvrir les fichiers. Je ne sais pas comment personnaliser les actions du Finder...

0voto

quodlibetor Points 2538

Je suis sous linux, mais j'ai un peu réussi à faire fonctionner cela. Fondamentalement, ce que je fais dans mon .emacs (que vous pouvez consulter pour plus de détails), c'est d'utiliser le hook after-make-frame-functions :

(add-hook 'after-make-frame-functions
  (lambda (frame)
    (set-variable 'color-theme-is-global nil)
    (select-frame frame)
    ;;; définir le thème de couleur et d'autres éléments visuels, comme les polices
    ))

Une chose que je fais est que je set-variable 'color-theme-is-global car j'aime avoir des thèmes différents pour les terminaux et les fenêtres. Théoriquement, vous devriez simplement pouvoir faire un (set-variable 'color-theme-is-global t) quelque part avant de définir vos couleurs pour que cela fonctionne.

Un problème que je n'ai pas réussi à résoudre est que changer la taille de ma police ne restructure pas le style, donc j'obtiens des effets d'image dans l'image qui sont hideux et m'obligent à désactiver/réactiver mon frame, ce qui va un peu à l'encontre du but recherché.

Je suis presque sûr qu'en ajoutant les hooks/concevant les fonctions dans le bon ordre, cela devrait résoudre ce problème, mais je n'ai pas réussi à le faire fonctionner correctement depuis un moment.

0voto

pajato0 Points 1689

En ce qui concerne #1, démarrer un nouveau processus emacs, vous pourriez probablement accomplir cela en écrivant des scripts pour remplacer le comportement par défaut. Cela impliquerait de capturer le chemin du fichier et d'utiliser l'interface système d'Emacs pour invoquer une nouvelle instance. Mais vous voudrez peut-être essayer une solution Emacs unique pendant un certain temps et voir si cela ne vous cause pas trop de douleur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X