2012-02-16 6 views
19

Khi sử dụng chế độ linum trong emacs và khi tăng phông chữ M-x text-scale-increase, có một điều làm phiền tôi. Phông chữ cho số dòng có cùng kích thước như đọc và không vừa với vào left-margin ở phía bên trái bộ đệm!EMACS :: linum-mode và kích thước phông chữ (số dòng chưa đọc)

1 Bình thường font-size, OK Everything works as should be

2 Tăng font-size, không còn có thể đọc được FUUUUU enter image description here


What I'd really like to have:

Khi tăng phông chữ/giảm Tôi muốn một trong số này hoạt động

  1. sau đó tăng/giảm chiều rộng của lề trái (resp. trái rìa) phù hợp
  2. sau đó không thay đổi font chữ cho trái lề nhưng tăng/giảm khoảng cách giữa số dòng

    Không ai có một số gợi ý? Cảm ơn, kẻ

Trả lời

10

Hãy nhìn vào hai liên kết sau đây:

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

Nó hoạt động khá tốt đủ cho nhu cầu của tôi.

Ví dụ:

enter image description hereenter image description here

+0

+1 Tôi khá hài lòng. Chắc chắn là cách tốt để đi, 'nhưng' có một số vấn đề với điều này. Ví dụ, số dòng không phải luôn luôn giảm kích thước của nó. Tôi không hiểu tất cả các mã, nó có thể giải quyết được nhưng không biết làm thế nào được nêu ra. Tôi không đánh dấu câu trả lời này là 'chấp nhận' vào lúc này, Peter. Có lẽ sau này. Cảm ơn. – DinGODzilla

+0

Phương pháp này dựa trên việc nhân rộng bởi hệ số * cố định * là 1,04 (được chọn là giá trị * hợp lý *). Việc giảm tuyến tính này không phải lúc nào cũng khớp với kích thước phông chữ * tiếp theo * có sẵn và do đó bạn cần phải nhấn phím một lần nữa cho đến khi nó chuyển sang kích thước có sẵn tiếp theo. Điều này xảy ra thường xuyên hơn khi kích thước phông chữ trở nên nhỏ hơn. Tôi làm việc xung quanh nó để phóng to lớn hơn, bằng cách thực nghiệm xây dựng một danh sách các bước tăng quy mô cần thiết để nhảy trực tiếp đến phông chữ tiếp theo tne. Danh sách này phù hợp với phông chữ của tôi, nhưng như tôi đã đề cập trong một trong các liên kết của tôi, tôi không biết cách xác định kích thước của phông chữ có sẵn tiếp theo. –

+0

PS: Bạn có thể thấy trong danh sách 'sub-zoom-ht', đây là danh sách các kích thước phông chữ cho một số lượng lớn nhất định (chỉ mục), có rất nhiều kích thước phông chữ lặp lại. Logic * * phóng to * sử dụng danh sách này, nhưng không có danh sách tương đương cho * zoom nhỏ hơn * .. Nó không đáng lo ngại, vì nó không phải là cách "đúng" để làm điều đó, và rất tốn thời gian , và nó hoạt động .. Một ngày tôi có thể vấp ngã về cách truy cập thông tin phông chữ trực tiếp ... –

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

tôi sẽ bình luận về các giải pháp dựa trên customize-face nếu tôi có thể. Nó hoạt động tốt cho tôi. Khuôn mặt thực tế là linum thay vì linum-mode, ít nhất trong số emacs-24.3.1 của tôi. Trong bộ đệm tùy biến, tôi nhấp vào "Hiển thị tất cả các thuộc tính" và sau đó đặt chiều cao khuôn mặt thành 100 phần mười của một điểm. Nếu một khuôn mặt có kích thước cố định cho số dòng được chấp nhận cho bạn (giống như tôi), giải pháp dựa trên customize-face là đơn giản.

6

Tôi nghĩ rằng tôi có thể khắc phục vấn đề đó với đoạn mã sau:

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

Có vẻ như để làm việc, ít nhất là với 24,5.

4

Giải pháp đơn giản nhất, dễ hiểu nhất mà tôi đã thấy là đặt số dòng ở độ cao cố định.Điều này có thể được thực hiện một cách dễ dàng, phù hợp với user78810 's câu trả lời: https://unix.stackexchange.com/questions/29786/font-size-issues-with-emacs-in-linum-mode/146781#146781

Để wit, thêm dòng sau trong emacs cấu hình của bạn (hoặc chức năng dotspacemacs/user-config của bạn, nếu bạn đang sử dụng spacemacs):

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