LINUX.ORG.RU

emacs + c-mode


0

0

есть у меня такие строчки в .emacs:
(defun linux-c-mode ()
"C mode with adjusted defaults for use with the Linux kernel."
(interactive)
(c-mode)
(c-set-style "K&R")
(setq tab-width 8)
(setq indent-tabs-mode t)
(setq c-basic-offset 8))

как сделать чтобы при открытие любого файла с исходниками на C,
или когда я скажу c-mode, делался именно такой режим?
А то надоело M+x linux-c-mode набирать.

anonymous

Ответ на: комментарий от DKorolkov

>(add-hook 'c-mode-hook 'linux-c-mode)

не помогло, говорит

File mode specification error: (error "Lisp nesting exceeds `max-lisp-eval-depth'")

>auto-mode-alist

это файл такой или переменная?

anonymous
()
Ответ на: комментарий от anonymous

;; Это можно положить вне хука, в корне .emacs

(setq-default c-default-style "stroustrup")

;; У меня хук неинтерактивный. Может именно интерактивность вызывает эту ошибку?

(defun my-c-mode-common-hook () (define-key c-mode-base-map (kbd "M-o") 'eassist-switch-h-cpp) (define-key c-mode-base-map (kbd "C-<tab>") 'indent-or-complete-semantics) (define-key c-mode-base-map (kbd "M-m") 'eassist-list-methods) )

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

anonymous
()
Ответ на: комментарий от anonymous

> File mode specification error: (error "Lisp nesting exceeds `max-lisp-eval-depth'")

Точно, сразу не посмотрел -- из linux-c-mode вызывается c-mode, соответственно -- бесконечная рекурсия. Сделайте из linux-c-mode свою функцию, убрав из неё c-mode и, наверное, interactive и используйте её в add-hook вместо linux-c-mode.

>> auto-mode-alist

> это файл такой или переменная?

Переменная.

DKorolkov
()

спасибо всем заработало,

но продолжить по аналогии не получилось,

(defun my-cpp-mode ()
(c-set-style "k&r")
(setq-default tab-width 2)
(setq-default indent-tabs-mode t)
(setq c-basic-offset 2))

(add-hook 'c++-mode-common-hook 'my-cpp-mode)

но отображаются c++ исходники, как будто применен linux-c-mode,

в чем проблема?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.