Режим PHP для Emacs

У меня возникли проблемы с моим кодом php, не отступающим правильно …

Я бы хотел, чтобы мой код выглядел так

if (foo) { print "i am indented"; } 

но это всегда выглядит так:

 if (foo) { print "i am not indented correctly"; } 

Я устал гуглинг для подобных вещей и пытался добавить следующее к моим .emacs, но это не сработало.

Есть предположения?

  (add-hook 'php-mode-hook (function (lambda () ;; GNU style (setq php-indent-level 4 php-continued-statement-offset 4 php-continued-brace-offset 0 php-brace-offset 0 php-brace-imaginary-offset 0 php-label-offset -4)))) 

    Настройте переменную стиля c-default. Добавьте это в файл .emacs:

     (setq c-default-style "bsd" c-basic-offset 4) 

    Описание стиля bsd .

    Настройте переменную c-default-style. Вы либо хотите, чтобы ваш «Другой» режим (или «php», если он был доступен) установлен на «bsd», или вы можете установить стиль hte во всех режимах на bsd.

    Из того, что я понимаю, PHP-режим построен поверх режима c, поэтому он наследует свои настройки.

    Попробуйте следующее:

     (defun my-build-tab-stop-list (width) (let ((num-tab-stops (/ 80 width)) (counter 1) (ls nil)) (while (<= counter num-tab-stops) (setq ls (cons (* width counter) ls)) (setq counter (1+ counter))) (nreverse ls))) (add-hook 'c-mode-common-hook #'(lambda () ;; You an remove this, if you don't want fixed tab-stop-widths (set (make-local-variable 'tab-stop-list) (my-build-tab-stop-list tab-width)) (setq c-basic-offset tab-width) (c-set-offset 'defun-block-intro tab-width) (c-set-offset 'arglist-intro tab-width) (c-set-offset 'arglist-close 0) (c-set-offset 'defun-close 0) (setq abbrev-mode nil)))