2012-02-16 7 views
19

Quando si utilizza la modalità linum in emacs e quando si aumenta il font di M-x text-scale-increase, c'è una cosa che mi dà fastidio. I caratteri per i numeri di riga hanno le stesse dimensioni della lettura e non si adattano a in left-margin sul lato sinistro del buffer!EMACS :: modalità linum e dimensione del carattere (numeri di riga illeggibili)

1 Normal font-size, OK Everything works as should be

2 Aumento font-size, non è più leggibile FUUUUU enter image description here


What I'd really like to have:

Quando aumento carattere/diminuzione voglio uno di questi per lavorare

  1. poi aumentare la larghezza/decremento del margine sinistro (risp. sinistra-frangia) di conseguenza
  2. poi non cambiare il font per il margine sinistro ma aumentare/diminuire la spaziatura tra i numeri di riga

    Qualcuno ha qualche suggerimento? Grazie, ragazzi

risposta

10

Date un'occhiata a questi due link:

  1. my question on the same issue
  2. my workaround for this issue

Funziona abbastanza bene abbastanza per le mie esigenze.

Esempi:

enter image description hereenter image description here

+0

+1 Sono abbastanza soddisfatto. Decisamente un buon modo per andare, 'ma ci sono alcuni problemi con questo. Ad esempio, i numeri di riga non sempre diminuiscono le sue dimensioni. Non capisco tutto il codice, è probabilmente risolvibile ma non so ancora come. Non segnerò questa risposta come "accettata" in questo momento, Peter. Probabilmente lo farò più tardi. Grazie. – DinGODzilla

+0

Il metodo si basa sul ridimensionamento di un fattore * fisso * di 1.04 (scelto come un valore * ragionevole *). Questa diminuzione lineare non sempre corrisponde alla * prossima * dimensione del carattere disponibile, quindi è necessario premere nuovamente il tasto finché non si ridimensiona alla successiva dimensione disponibile. Ciò si verifica più frequentemente quando la dimensione del carattere diventa più piccola. Ho lavorato intorno ad esso per ingrandire lo zoom, costruendo empiricamente un elenco degli incrementi del gradino di ridimensionamento necessari per passare direttamente al carattere successivo. Questa lista si adatta al mio font, ma come ho detto in uno dei miei link, non so come determinare la dimensione del prossimo font disponibile. –

+0

PS: puoi vedere nella lista 'sub-zoom-ht', che è un elenco di dimensioni dei caratteri per un dato numero di ridimensionamenti (l'indice), che ci sono molte dimensioni ripetitive dei caratteri. La logica * zoom più grande * utilizza questo elenco, ma non esiste un elenco equivalente per * zoom più piccolo *. Non valeva la pena di preoccuparsi, poiché non è il modo "giusto" per farlo, e richiedeva molto tempo , e funziona .. Un giorno potrei inciampare su come accedere direttamente alle informazioni sul font ... –

4
M-x customize-face [RETURN] linum-mode 
2

vorrei commentare la soluzione basata su customize-face se potessi. Funziona bene per me. La faccia effettiva è linum anziché linum-mode, almeno nel mio emacs-24.3.1. Nel buffer di personalizzazione, ho fatto clic su "Mostra tutti gli attributi" e poi ho impostato l'altezza della faccia a 100 decimi di punto. Se una faccia di dimensione fissa per i numeri di riga è accettabile per te (come lo è per me) la soluzione basata su customize-face è semplice.

6

credo di poter risolvere questo problema con il seguente codice:

(require 'linum) 
(defun linum-update-window-scale-fix (win) 
    "fix linum for scaled text" 
    (set-window-margins win 
      (ceiling (* (if (boundp 'text-scale-mode-step) 
        (expt text-scale-mode-step 
        text-scale-mode-amount) 1) 
       (if (car (window-margins)) 
        (car (window-margins)) 1) 
      )))) 
(advice-add #'linum-update-window :after #'linum-update-window-scale-fix) 

Sembra funzionare, almeno con 24.5.

4

La soluzione più semplice e immediata che ho visto è quella di impostare i numeri di linea su un'altezza fissa.Ciò può essere realizzata facilmente, in accordo con la risposta user78810 s': https://unix.stackexchange.com/questions/29786/font-size-issues-with-emacs-in-linum-mode/146781#146781

Vale a dire, aggiungere la seguente riga nel emacs di configurazione (o alla funzione dotspacemacs/user-config, se si sta utilizzando spacemacs):

(eval-after-load "linum" 
    '(set-face-attribute 'linum nil :height 100))