Как настроить emacs на использование 3 пробелов вместо вкладок в режиме verilog? - PullRequest
1 голос
/ 28 ноября 2011

Я довольно новичок в emacs (использую версию 23.3), и я хотел установить клавишу табуляции по умолчанию для вставки 3 пробелов вместо символа табуляции в режиме verilog. Я нашел несколько сообщений об этом в переполнении стека. Некоторые из них: -

Как использовать пробелы вместо вкладок независимо от основного режима

Почему мой Emacs может использовать пробелы вместо табуляции?

Глобальная конфигурация вкладок Emacs

Но, похоже, они не работают в режиме verilog. Вот так выглядит мой файл .emacs

(custom-set-variables      
 '(tab-stop-list ('(3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111 114 117 120)))
 '(verilog-case-indent 3)    
 '(verilog-indent-level-directive 0)
 '(verilog-indent-level 3)    
 '(verilog-tab-always-indent nil))
(custom-set-faces
  )
(add-hook 'after-change-major-mode-hook 
          '(lambda () 
             (setq-default indent-tabs-mode nil)
             (setq tab-width 3)))

(setq-default indent-tabs-mode nil)
(setq-default tab-width 3)
(setq-default standard-indent 3)

Если я пытаюсь редактировать текстовый файл, программа установки работает отлично и вставляет 3 пробела вместо табуляции. Однако он все еще вставляет символ табуляции, когда я пытаюсь редактировать файл verilog (.v). Я могу выделить весь текст и отключить M-x, чтобы получить требуемый результат, но есть ли другое прямое решение?

1 Ответ

4 голосов
/ 28 ноября 2011

В хуке вы должны использовать setq вместо setq-default, поэтому вам нужно переписать ваш хук в что-то вроде:

(defun my-verilog-hook ()
    (setq indent-tabs-mode nil)
    (setq tab-width 3))
 (add-hook 'verilog-mode-hook 'my-verilog-hook)

P.S. Лучше использовать выделенные функции в хуках, так как их проще менять, а также можно удалить их из хуков

...