2011-12-12 32 views
8

tôi sử dụng ác, trong đó cóthiết lập chiều rộng thay đổi ác để thụt đầu dòng đệm cục bộ trong emacs

(defcustom evil-shift-width 4 
    "The offset used by \\<evil-normal-state-map>\\[evil-shift-right] \ 
and \\[evil-shift-left]." 
    :type 'integer 
    :group 'evil) 

Tôi muốn thiết ác-shift-chiều rộng với chiều rộng thụt đệm cục bộ (biến indent).

(add-hook 'after-change-major-mode-hook 
     (function (lambda() 
        (setq evil-shift-width indent)))) 

Tôi đã bỏ lỡ điều gì?

+1

Bạn đang thiếu một cặp dấu ngoặc đơn quanh biểu mẫu '(setq ...)' và làm rõ về những gì bạn muốn hoặc mong đợi 'indent'. – tripleee

+0

@tripleee hy vọng điều đó sẽ hữu ích. – Reactormonk

+1

Điều gì xảy ra và bạn mong đợi điều gì sẽ xảy ra? 'Indent' đến từ đâu và nó được đặt ở đâu? – nschum

Trả lời

17

Nếu không có thêm thông tin, tôi tin rằng tôi hiểu được vấn đề để được mong muốn đó là cho evil-shift-width được thiết lập đến 4 trong python-mode và 2 trong ruby-mode (đối với hai ví dụ), nhưng nó luôn luôn thiết lập để 2.

Vấn đề trong trường hợp này xuất phát từ thực tế là indent không được xác định trên toàn cầu trong Emacs, và chắc chắn không phải trong python-mode. Trong python-mode có một biến số python-indent, được đặt thành 4 và đó là biến để sử dụng.

Trong khi khó chịu khi phải sử dụng các biến tùy chỉnh cho mỗi người trong số các phương thức chủ yếu, đó là những gì mỗi người trong số các phương thức thực sự sử dụng, và có lẽ đó là giải pháp mà thực sự sẽ làm việc:

(add-hook 'python-mode-hook 
    (function (lambda() 
      (setq evil-shift-width python-indent)))) 
(add-hook 'ruby-mode-hook 
    (function (lambda() 
      (setq evil-shift-width ruby-indent-level)))) 

Thêm một cái mới cho mỗi chế độ chính bạn muốn được hỗ trợ.

Các vấn đề liên quan