Empêche l'ouverture des tampons indésirables

18

J'utilise emacs pour mon édition quotidienne de javascript, pour basculer entre les tampons, j'utilise Cx LEFT et Cx RIGHT et ça me va (même si j'ai du mal à connaître le chemin du fichier que je modifie).

Mes problèmes:

  1. au démarrage que j'ai toujours *scratch*et *Messages*ouvert, je pensais que mettre (kill-buffer "*scratch*")mon .emacs résoudrait le problème, mais ce n'est pas le cas, avez-vous une suggestion?

  2. lorsque j'ouvre des fichiers, je fais toujours la saisie semi-automatique TAB, donc chaque fois que je crée un nouveau *Messages*tampon contenant les options pour l'achèvement, comment puis-je empêcher cela de créer, ou mieux, comment puis-je faire en sorte qu'emacs le tue, après avoir fait mon choix?

Dites votre opinion si vous pensez que je fais quelque chose qui n'est pas "comme ça devrait être" avec moi en naviguant comme je l'ai dit en haut.

Alberto Zaccagni
la source
1
Vous voudrez peut-être explorer d'autres façons de changer de tampon comme l'a suggéré Trey. Si vous optez pour une autre méthode qui n'est pas séquentielle, vous pouvez passer immédiatement au tampon voulu, donc peu importe si des tampons indésirables sont dans la liste des tampons. J'utilise iswitchb moi-même.
Tom

Réponses:

23

Cela m'a rendu fou .. jusqu'à ce que je le répare.

Désormais, il n'y a plus de tampons à gratter , de messages ou de compléments à visser avec votre flux. Prendre plaisir!

Placez ceci dans votre .emacs:

;; Makes *scratch* empty.
(setq initial-scratch-message "")

;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)

;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
                (kill-buffer buffer)))))

;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)

;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)

Prime:

;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)
Ole
la source
1
Merci beaucoup pour cela, j'aimerais pouvoir vous donner plus de représentants.
Alberto Zaccagni du
Vous êtes les bienvenus! : D
Ole
2
Ne serait-il pas logique de le faire (if (get-buffer "*Messages*") (kill-buffer "*Messages*"))au cas où l'on rechargerait la config? Purement inspiré par votre autre macro.
Simon 'Reinstate Monica' Shine
2
Je n'avais pas réalisé à quel point ces tampons m'ennuyaient jusqu'à ce que je m'en débarrasse.
automate
Il a écrasé les emacs
2018
6

Eh bien ... c'est en partie la façon dont Emacs fonctionne, mais il y a des choses que vous pouvez faire pour faciliter la commutation en général.

Tout d'abord, Emacs doit avoir au moins un tampon. Donc, même si vous vouliez vous débarrasser de *scratch*et *Messages*, vous vous retrouveriez avec un autre tampon que vous ne vouliez pas (ou vous obtiendriez le point où Emacs a simplement ignoré votre dernière kill-bufferdemande car il recréait ce tampon ( b / c il a besoin d'un tampon).

Ainsi, la meilleure façon d'arriver au point où le changement de tampons est plus logique est d'avoir réellement des tampons vers lesquels vous souhaitez basculer.

Et, lorsque vous avez fait cela, vous pouvez regarder toutes les options / packages disponibles pour changer de tampons - dont beaucoup sont répertoriés sur le wiki Emacs sous SwitchingBuffers . idoest assez populaire, tout comme icicleset anything.

Trey Jackson
la source
1
J'enregistre mes sessions avec (desktop-save-mode 1), donc presque toujours, j'ai quelque chose d'ouvert au démarrage, je vais regarder ces packages, merci.
Alberto Zaccagni
1

Si quelqu'un souhaite supprimer uniquement le tampon * scratch * et se retrouver avec le tampon * Messages *, ce code a fonctionné pour moi:

(defun acg-initial-buffer-choice ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*"))
  (get-buffer "*Messages*"))

(setq initial-buffer-choice 'acg-initial-buffer-choice)

Une chose que vous devez garder à l'esprit est que si à tout moment Emacs reste sans tampon à afficher (par exemple, vous avez tué tous les tampons), cela créera soit un tampon * scratch * ou * Messages *, alors assurez-vous d'avoir gagné '' t supprimez tous les tampons au cours de votre flux de travail, ou * scratch * peut reprendre vie.

Arthur Colombini Gusmão
la source