@Riki-tiki-tavi

Как отобразить пробелы в emacs?

В файл .emacs я добавил следующие строки как было показано здесь:
(setq whitespace-style '(face trailing tabs spaces lines newline empty
                         space-mark tab-mark newline-mark))
(set-face-attribute 'whitespace-space nil :background nil :foreground "#00FF00")
(set-face-attribute 'whitespace-newline nil :background nil :foreground "#0000FF")


Но почему-то emacs ругается на вторую и третью строки


Warning (initialization): An error occurred while loading `/home/milai/.emacs':

error: Invalid face, whitespace-space

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace.
  • Вопрос задан
  • 349 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Z-r
> Но почему-то emacs ругается на вторую и третью строки

Матерно, да? (Не могу иначе представить, почему вы постеснялись ругательства привести.)

А включив телепата могу предположить, что у вас просто whitespace.el не подгружен.
Ответ написан
dunmaksim
@dunmaksim
Технический писатель
Вам нужно использовать пакет whitespace-mode. Ниже показано, как его включить и настроить:

;; WHITESPACE MODE
;; https://www.emacswiki.org/emacs/WhiteSpace
(straight-use-package 'whitespace-mode)
(defun setup-whitespace-mode ()
  "Settings for 'whitespace-mode'."
  (interactive)
  (setq-default whitespace-display-mappings
                '(
                  (space-mark   ?\    [?\xB7]  [?.]) ; space
                  (space-mark   ?\xA0 [?\xA4]  [?_]) ; hard space
                  (newline-mark ?\n   [?¶ ?\n] [?$ ?\n]) ; end of line
                  )
                ;; Highlight lines with length bigger than 1000 chars
                whitespace-line-column 1000
                whitespace-fill-column 1000
                )

  ;; Markdown-mode hack
  (set-face-attribute 'whitespace-space nil
                      :family default-font-family
                      :foreground "#75715E")
  (set-face-attribute 'whitespace-indentation nil
                      :family default-font-family
                      :foreground "#E6DB74"))
(add-hook 'whitespace-mode-hook #'setup-whitespace-mode)


Теперь в хук активации нужного режима добавьте вызов:

(whitespace-mode 1)

Например, так выглядят мои настройки для Markdown:

;; MARKDOWN MODE
;; https://github.com/jrblevin/markdown-mode
(straight-use-package 'markdown-mode)
(defun setup-markdown-mode()
  "Settings for editing markdown documents."
  (interactive)
  ;; Настройки отступов и всякое такое

  (setq
   global-hl-line-mode nil
   header-line-format " "
   left-margin-width 4
   line-spacing 3
   right-margin-width 4
   word-wrap t)

  ;; Additional modes
  (abbrev-mode 1)
  (buffer-face-mode 1)
  (company-mode 1)
  (flycheck-mode 1) ;; Turn on linters
  (linum-mode 1)
  (rainbow-delimiters-mode 1)
  (rainbow-mode 1) ;; Highlight brackets
  (visual-line-mode 1) ;; Highlight current line
  (whitespace-mode 1) ;; Show spaces, tabs and other
  (ws-butler-mode 1) ;; Delete trailing spaces on changed lines
  (cond ;; Turn on spell-checking only in Linux
   ((string-equal system-type "gnu/linux")(flyspell-mode 1)))

  (set-face-attribute 'markdown-code-face        nil :family default-font-family)
  (set-face-attribute 'markdown-inline-code-face nil :family default-font-family))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(add-hook 'markdown-mode-hook #'setup-markdown-mode)


В качестве менеджера пакетов я использую straight.el, форк use-package, но вы можете использовать любой другой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы