2011-12-16 5 views
1

Я изучаю emacs и lisp справа, поэтому я уверен, что чего-то не хватает, но я пытаюсь получить отступы для выделения, когда я начинаю emacs.highlight-indentation emacs startup

У меня есть выделения-indentation.el файл в моем EMACS пути и после запуска, я могу сделать

Mx изюминка-отступ

и все работает хорошо, но как я могу получить этот работа над запуском. Я думал положить

(выделения отступы)

в моем .emacs файл будет работать, но это не так. Это потому, что выделение-отступ является интерактивной функцией?

+0

Поскольку 'highlight-indentation' не является частью стандартного Emacs, было бы неплохо добавить ссылку на него. – Lindydancer

+0

Вы правы. Я добавил его к одному из комментариев ниже, но здесь снова [выделение-отступ] (https://github.com/antonj/Highlight-Indentation-for-Emacs) – flooose

ответ

5

Функция применяется только к текущему буферу. Я бы рекомендовал использовать крючок , как показано ниже. Функции, добавленные в основные режимы, выполняются, когда основной режим включен для конкретного буфера.

(defun my-emacs-lisp-mode-hook() 
    (highlight-indentation)) 
(add-hook 'emacs-lisp-mode-hook 'my-emacs-lisp-mode-hook) 
+0

У меня есть что-то похожее на эту работу: (add-hook 'after-change-major-mode -hook '), но он, кажется, добавляет много нагрузки на emacs каждый раз, когда я открываю файл, и поскольку я ничего не знал об этом крючке, я решил, что пойду на охоту, чтобы посмотреть, есть ли там это более простой способ сделать это. Что касается вашего точного кода, это не сработало, когда я поместил его в файл .emacs. – flooose

+0

Хм, похоже, мне просто нужно изучить правильные ходовые крючки в emacs. Я попробую и отправлю отчет. – flooose

+0

Ладно, было время, но, увидев ниже комментарий Мэтта Дарлинга, я понял, что мой первоначальный вопрос был чем-то обманчивым. Хотя я все еще изучаю emacs lisp, я на самом деле просил о том, чтобы получить выделение отпечатка для работы во всех режимах. Для этого мне понадобился «after-change-major-mode-hook», что позволило мне решить проблему с помощью: '(add-hook 'after-change-major-mode-hook' (lambda() ;; \t \t \t \t \t (highlight-indentation 4))) ' – flooose

0

Это действительно зависит от того, что делает highlight-indentation. Проверьте, не отображаются ли его эффекты в буфере *scratch*.

+0

Привет! Спасибо за ответ. Набрав: (выделение-отступ) , а затем C-x C-e просто возвращает ноль и не активирует поведение, которое предлагает выделение выделения. В случае, если это помогает, вот ссылка на исходный код. На самом деле это не так много: [источник] (https://github.com/antonj/Highlight-Indentation-for-Emacs) – flooose

3

изюминка-indentation.el фактически создает второстепенный режим, который будет автоматически выделить отступ во все времена, уместно назвать изюминку-отступы режим. Вы можете увидеть соответствующие функции по разделам, которые говорят

;;; ### автозагрузка

именно

определяет-минорный выделить режим-отступы режим

и

определяет-минорной режим изюминки-отступы тока колонки режим

Чтобы использовать их, добавьте крюк как Lindydancer предложил, но вместо создания нового крючка, который вызывает функцию изюминки-отступы, просто написать :

(добавить крюк 'Emacs-Lisp режим крючок' изюминка-отступы режим)

I рода предпочитает (а многословные) выделить-отступы ток колонка режим , который просто выделяет столбец, в котором находится курсор. Это немного чище, но все же показывает вам взаимосвязь между разными уровнями кода.

Edit: Я два года поздно обновление, но для будущих интернет-странников, которые хотят получить изюминка-отступы режим работает для всех программных langagues, вы можете сделать это:

(add-hook 'prog-mode-hook' highlight-indentation-mode)