Emacs. Light PHP IDE

Как известно, про возможности emacs в сети интернета информации достаточно, но вот найти какие-либо подробные инструкции по настройке данных возможностей сложновато.

В одной из своих статей в своем блоге Ben Simon поделился рецептом настройки Emacs под PHP - Emacs + PHP - A Modern and (Far More Complete) Recipe. Я решил проверить этот рецепт на деле. Как оказалось, рецепт действенный.

1. Установка MELPA
MELPA - это репозиторий различных по функциональности пакетов, которые Вы можете устанавливать в свой редактор. Для этого перейдите в настройку пакетов

M-x customize-group RET package

В окне настроек перейдите в раздел Package Archives и укажите репозиторий
с именем "melpa" и URL адресом "http://melpa.org/packages"

 

Нажатием State сохраняем для последующих сессий

2. Установка режима PHP Mode

Для этого перейдите в список доступных пакетов

M-x list-packages

Перед выдачей полного списка Emacs обратиться в прописанные репозитории, в частности - MELPA, и подгрузит список пакетов


Здесь стоит отметить, что если у Вас стоит прокси, то пакеты могут не подгрузиться, для этого
необходимо в config-файле (~/.emacs) прописать следующую команду

(setq url-proxy-services
       '(("no_proxy" . "^\\(localhost\\|10.*\\)")
         ("http" . "proxy_address:proxy_port")
         ("https" . "proxy_address:proxy_port")))

Далее среди списка найдите пакет php-mode (Для быстроты воспользуйтесь командой C-s)


Далее нажмите RET находясь на строке и выполните установку данного пакета.
Можно установить пакет и иначе, для это достаточно выполнить

M-x package-install RET php-mode

3. Установка Web-Mode.el

Во время веб разработки порой приходиться работать с html, css и javascript на уровне одного исходника, то не совсем правильно использовать режим php-mode. Для этого случая предлагается использовать режим web-mode

M-x package-install RET web-mode

4. Добавление автоматического переключения между режимами php-mode и web-mode

Так как каждый из этих режимов имеет свои нюансы, то удобнее назначить shirt-cat
для переключения этих режимов. Хотя можно оставить все как есть и в мини-буфере задавать
текущий режим нажатием M-x php-mode или M-x web-mode.
Для реализации shirt-cat можно воспользоваться следующим кодом

(defun toggle-php-flavor-mode ()
  (interactive)
  "Toggle mode between PHP & Web-Mode Helper modes"
  (cond ((string= mode-name "PHP")
         (web-mode))
        ((string= mode-name "Web")
         (php-mode))))

(global-set-key [f5] 'toggle-php-flavor-mode)

Теперь при нажатии F5 мы будем автоматически переключать данные режимы

5. Настройка авто-дополнения

Для этого воспользуемся пакетом ac-php, который поддерживает дополнение функций и классов. Данный пакет устанавливается из репозитория MELPA, но перед этим необходимо проверить доступность php через командную строку, например так

php --version

Помимо этого необходимо установить cscope. Для unix-систем все очень просто (см. README ac-php), для windows его необходимо отдельно скачать по ссылке, установить и проверить доступность утилиты в командной строке. Иначе пропишите в переменных средах (Компьютер -> Свойства -> Изменить параметры -> Дополнительно -> Переменные среды)


После этого установите пакет ac-php по аналогии с предыдущими пакетами.
Далее, как сказано в инструкции, добавьте код (в Ваш config-файл)

(add-hook 'php-mode-hook
          '(lambda ()
             (require 'company-php)
             (company-mode t)
             (ac-php-core-eldoc-setup) ;; enable eldoc
             (make-local-variable 'company-backends)
             (add-to-list 'company-backends 'company-ac-php-backend)))

Далее создайте файл .ac-php-conf.json в корне Вашего проекта и наберите команду

M-x ac-php-remake-tags-all

Все готово.