Disabilita la barra di scorrimento sul nuovo frame


10

Vorrei assicurarmi che le barre di scorrimento non vengano mai visualizzate sulle mie finestre, ma di recente ho notato che quando ho creato una nuova cornice con C-x 5 2la nuova cornice si ottiene una barra di scorrimento, anche se la cornice originale non lo fa. Le righe che potrebbero essere rilevanti dalla mia init.elsono di seguito:

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

Posso ancora usarlo M-x toggle-scroll-barper disattivarlo nel nuovo frame, ma penso che non dovrebbe essere necessario.

Per chiarire, sto usando emacsclient -c &per avviare Emacs su Ubuntu e quando lo faccio ottengo una barra di scorrimento. C-h v scroll-bar-modemi da:

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.

Quindi il valore di scroll-bar-modeè impostato correttamente su nil, ma Emacs in qualche modo lo ignora per darmi comunque una barra di scorrimento.

Risposte:


8

Ho anche riscontrato questo problema, fino a quando non ho aggiunto il seguente codice. (Credo di essermi imbattuto nello snippet qui su Stack Exchange, ma mi dispiace non ricordare l'autore.)

(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

Puoi regolare i parametri del frame in default-frame-alistper dire a Emacs che non vuoi mai usare le barre di scorrimento. Aggiungi quanto segue al tuo file init:

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

Sento che dovrebbe funzionare, ma non funziona. Ottieni ancora la barra di scorrimento, ma solo sul secondo fotogramma.
Ryan,

@Ryan: strano! Quanto sopra funziona per me. L'unica altra cosa nel mio file init che potrebbe essere rilevante è una vecchia (toggle-scroll-bar -1)che non avevo rimosso. Potresti provare ad aggiungere anche quello, ma oltre a ciò, sono fuori di ipotesi.
Dan

Va bene, quindi funziona su Ubuntu, ma non su Windows. La prossima volta che sarò sul lato Windows, controllerò (toggle-scroll-bar).
Ryan,

Ora non so nemmeno cosa pensare. Riavviato e ora non funziona neanche su Ubuntu. Ogni nuovo fotogramma viene creato con la barra di scorrimento e devo M-x toggle-scroll-barliberarmene.
Ryan,

Sì, MS Windows è particolare in questo. A parte questo, consiglierei di personalizzare l'opzione default-frame-alist . C'è una ragione per cui è un'opzione utente.
Estratto il

1

Non tutti vogliono usare personalizza, ma usarlo per disabilitare le barre di scorrimento fa sparire il problema. Le variabili desiderate sono: scroll-bar-modee horizontal-scroll-bar-mode.

Se non si utilizza un file di personalizzazione, personalizzare può comunque essere utilizzato inserendoli nel proprio init:

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

Ciò sarà sufficiente per disabilitare qualsiasi barra di scorrimento in qualsiasi tipo di frame.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.