Désactiver la barre de défilement sur un nouveau cadre

10

Je voudrais m'assurer que les barres de défilement n'apparaissent jamais sur mes fenêtres, mais j'ai récemment remarqué que lorsque j'ai créé un nouveau cadre avec C-x 5 2le nouveau cadre obtient une barre de défilement, même si le cadre d'origine ne s'affiche pas. Les lignes qui pourraient être pertinentes de mon init.elsont ci-dessous:

(scroll-bar-mode -1)
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(if (fboundp 'menu-bar-mode) (menu-bar-mode -1))

Je peux toujours l'utiliser M-x toggle-scroll-barpour le désactiver dans le nouveau cadre, mais je pense que cela ne devrait pas être nécessaire.

Pour clarifier, j'utilise emacsclient -c &pour démarrer Emacs sur Ubuntu, et quand je fais cela, je reçois une barre de défilement. C-h v scroll-bar-modeDonne moi:

scroll-bar-mode is a variable defined in `scroll-bar.el'.
Its value is nil
Original value was right

Documentation:
Specify whether to have vertical scroll bars, and on which side.
Possible values are nil (no scroll bars), `left' (scroll bars on left)
and `right' (scroll bars on right).
To set this variable in a Lisp program, use `set-scroll-bar-mode'
to make it take real effect.
Setting the variable with a customization buffer also takes effect.

You can customize this variable.

Donc, la valeur de scroll-bar-modeest correctement définie sur nil, mais Emacs l'ignore d'une manière ou d'une autre pour me donner une barre de défilement de toute façon.

Ryan
la source

Réponses:

8

J'ai également rencontré ce problème, jusqu'à ce que j'ajoute le code suivant. (Je crois que je suis tombé sur l'extrait ici sur Stack Exchange, mais désolé, je ne me souviens pas de l'auteur.)

(defun my/disable-scroll-bars (frame)
  (modify-frame-parameters frame
                           '((vertical-scroll-bars . nil)
                             (horizontal-scroll-bars . nil))))
(add-hook 'after-make-frame-functions 'my/disable-scroll-bars)
InHarmsWay
la source
3

Vous pouvez ajuster les paramètres du cadre dans le default-frame-alistpour indiquer à Emacs que vous ne voulez jamais de barres de défilement. Ajoutez ce qui suit à votre fichier init:

(add-to-list 'default-frame-alist
             '(vertical-scroll-bars . nil))
Dan
la source
Je pense que ça devrait marcher, mais ça ne marche pas. Obtenez toujours la barre de défilement, mais uniquement sur la deuxième image.
Ryan
@Ryan: étrange! Ce qui précède fonctionne pour moi. La seule autre chose dans mon fichier init qui pourrait être pertinente est une ancienne (toggle-scroll-bar -1)que je n'avais pas supprimée. Vous pouvez essayer d'ajouter cela aussi, mais au-delà de cela, je n'ai plus de suppositions.
Dan
D'accord, cela fonctionne donc sur Ubuntu, mais pas sur Windows. La prochaine fois que je serai du côté de Windows, je vérifierai (toggle-scroll-bar).
Ryan
Maintenant, je ne sais même plus quoi penser. Redémarré, et maintenant cela ne fonctionne pas non plus dans Ubuntu. Chaque nouveau cadre est créé avec la barre de défilement, et je dois m'en M-x toggle-scroll-bardébarrasser.
Ryan
Oui, MS Windows est particulier à cet égard. Autre que cela, je recommanderais l' option de personnalisation default-frame-alist . Il y a une raison pour laquelle c'est une option utilisateur.
Drew
1

Tout le monde ne veut pas utiliser la personnalisation, mais l'utiliser pour désactiver les barres de défilement fait disparaître le problème. Les variables que vous souhaitez sont: scroll-bar-modeet horizontal-scroll-bar-mode.

Si vous n'utilisez pas de fichier de personnalisation, la personnalisation peut toujours être utilisée en les mettant dans votre init:

;; disable scrollbars
(customize-set-variable 'scroll-bar-mode nil)
(customize-set-variable 'horizontal-scroll-bar-mode nil)

Cela suffira pour désactiver toutes les barres de défilement dans n'importe quel type de trame.

bklaase
la source