Deaktivieren Sie die Bildlaufleiste für einen neuen Frame


10

Ich möchte sicherstellen, dass in meinen Fenstern keine Bildlaufleisten angezeigt werden, aber ich habe kürzlich festgestellt, dass beim Erstellen eines neuen Rahmens mit C-x 5 2dem neuen Rahmen eine Bildlaufleiste angezeigt wird, obwohl der ursprüngliche Rahmen dies nicht tut. Die Zeilen, die von mir relevant sein könnten, init.elsind unten:

(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))

Ich kann es immer noch verwenden M-x toggle-scroll-bar, um es im neuen Frame auszuschalten, aber ich denke, das sollte nicht notwendig sein.

Zur Verdeutlichung starte ich emacsclient -c &Emacs unter Ubuntu und bekomme dabei eine Bildlaufleiste. C-h v scroll-bar-modegibt mir:

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.

Der Wert von scroll-bar-modeist also richtig eingestellt nil, aber irgendwie ignoriert Emacs dies, um mir trotzdem eine Bildlaufleiste zu geben.

Antworten:


8

Ich bin auch auf dieses Problem gestoßen, bis ich den folgenden Code hinzugefügt habe. (Ich glaube, ich bin hier auf Stack Exchange auf das Snippet gestoßen, aber es tut mir leid, dass ich mich nicht an den Autor erinnere.)

(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)

3

Sie können die Rahmenparameter in anpassen default-frame-alist, um Emacs mitzuteilen, dass Sie niemals Bildlaufleisten möchten. Fügen Sie Ihrer Init-Datei Folgendes hinzu:

(add-to-list 'default-frame-alist
             '(vertical-scroll-bars . nil))

Ich denke, das sollte funktionieren, aber es funktioniert nicht. Erhalten Sie immer noch die Bildlaufleiste, aber nur im zweiten Frame.
Ryan

@ Ryan: seltsam! Das obige funktioniert für mich. Das einzige andere, was in meiner Init-Datei relevant sein könnte, ist ein altes (toggle-scroll-bar -1), das ich nicht entfernt habe. Sie könnten auch versuchen, das hinzuzufügen, aber darüber hinaus habe ich keine Vermutungen.
Dan

Okay, es funktioniert also tatsächlich unter Ubuntu, aber nicht unter Windows. Wenn ich das nächste Mal auf der Windows-Seite bin, werde ich das überprüfen (toggle-scroll-bar).
Ryan

Jetzt weiß ich nicht einmal, was ich denken soll. Neustart, und jetzt funktioniert es auch nicht in Ubuntu. Jeder neue Frame wird mit der Bildlaufleiste erstellt, und ich muss ihn M-x toggle-scroll-barentfernen.
Ryan

Ja, MS Windows ist hier besonders. Ansonsten würde ich empfehlen, die Option anzupassen default-frame-alist . Es gibt einen Grund, warum es eine Benutzeroption ist.
Drew

1

Nicht jeder möchte anpassen, aber wenn Sie es zum Deaktivieren von Bildlaufleisten verwenden, verschwindet das Problem. Die gewünschten Variablen sind: scroll-bar-modeund horizontal-scroll-bar-mode.

Wenn Sie keine Anpassungsdatei verwenden, können Sie die Anpassung weiterhin verwenden, indem Sie diese in Ihre Init einfügen:

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

Dies reicht aus, um alle Bildlaufleisten in einem beliebigen Rahmentyp zu deaktivieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.