В одной из своих статей в своем блоге 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"
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
Все готово.