我很新emacs
,我认为如果你分享你在日常 php 工作中使用的配置会很好。
问问题
1003 次
3 回答
3
这对我来说已经足够了,只是一些基于 kohana 的项目的缩进规则:
(add-hook 'php-mode-hook
(lambda ()
(c-set-style "bsd")
(setq c-indent-level 2)
(setq c-continued-statement-offset 2)
(setq c-brace-offset -2)
(setq c-argdecl-indent 0)
(setq c-label-offset -2)
(setq c-basic-offset 2)
(setq tab-width 2)
(setq indent-tabs-mode nil)
(c-set-offset 'case-label '+)
(c-set-offset 'arglist-close 'c-lineup-arglist-operators)
(c-set-offset 'arglist-intro '+)
(c-set-offset 'arglist-cont-nonempty 'c-lineup-math)))
于 2010-09-22T06:38:06.840 回答
1
我从 drupal.org 上的 Emacs 配置讨论中提取了其中的一些内容。我注意到有人在那里发布了一个正确的派生drupal模式,但我还没有改变我的配置。
您会注意到其中一些内容因被破坏而被注释掉。我最近没有调查过这些,所以我只是逐字逐句发布。
my-programming.el(我的 init.el 文件需要它)
;; nXHTML
(load "nxhtml/autostart.el")
;; ...
;; PHP (see my-php.el)
(autoload 'php-mode "my-php" "PHP Mode." t)
(add-to-list 'auto-mode-alist '("\\.php[34]?\\'\\|\\.phtml\\'" . php-mode))
;; Drupal mode
(autoload 'drupal-mode "my-php" "Drupal Mode." t)
(add-to-list 'auto-mode-alist '("\\.\\(module\\|test\\|install\\|theme\\)\\'" . drupal-mode))
(add-to-list 'auto-mode-alist '("/drupal.*\\.\\(php\\|inc\\)\\'" . drupal-mode))
(add-to-list 'auto-mode-alist '("\\.info\\'" . conf-windows-mode))
我的-php.el:
;; n.b. php-mode is the modified version provided by nxhtml
;; at: lisp/nxhtml/related/php-mode.el. lisp/nxhtml/related
;; was added to the load path by nxhtml/autostart.el (which
;; is loaded in my-programming.el prior to defining the PHP
;; autoloads).
(load "php-mode") ;load the real php-mode
;; Custom php-mode configuration
(add-hook 'php-mode-hook 'my-php-mode)
(defconst my-php-style
'((c-offsets-alist . ((arglist-close . c-lineup-close-paren))))
"My PHP programming style")
(c-add-style "my-php-style" my-php-style)
;; Configure imenu usage with php-imenu (also provided by nxhtml)
(autoload 'php-imenu-create-index "php-imenu" nil t)
(defun my-php-mode ()
"My php-mode customisations."
(c-set-style "my-php-style")
;; The electric flag (toggled by `c-toggle-electric-state').
;; If t, electric actions (like automatic reindentation, and (if
;; c-auto-newline is also set) auto newlining) will happen when an
;; electric key like `{' is pressed (or an electric keyword like
;; `else').
(setq c-electric-flag nil)
;; electric behaviours appear to be bad/unwanted in php-mode
;; This is bugging out recently. Not sure why. Thought it
;; was a conflict with (my-coding-config), but not certain
;; any longer. Commenting out for now.
;; Configure imenu
;; (php-imenu-setup)
;; Find documentation online
(local-set-key (kbd "<f1>") 'my-php-symbol-lookup))
(defun php-imenu-setup ()
(setq imenu-create-index-function (function php-imenu-create-index))
;; uncomment if you prefer speedbar:
;;(setq php-imenu-alist-postprocessor (function reverse))
(imenu-add-menubar-index))
(defun my-php-symbol-lookup ()
"Find the symbol at point in the online PHP documentation."
(interactive)
(let ((symbol (symbol-at-point)))
(if (not symbol)
(message "No symbol at point.")
(browse-url (concat "http://php.net/manual-lookup.php?pattern="
(symbol-name symbol))))))
(defun drupal-mode ()
"PHP mode configured for Drupal development."
(interactive)
(php-mode)
(message "Drupal mode activated.")
(set 'tab-width 2)
(set 'c-basic-offset 2)
(set 'indent-tabs-mode nil)
(c-set-offset 'case-label '+)
(c-set-offset 'arglist-intro '+) ; for FAPI arrays and DBTNG
(c-set-offset 'arglist-cont-nonempty 'c-lineup-math) ; for DBTNG fields and values
;; Don't clobber (too badly) doxygen comments when using fill-paragraph
(setq paragraph-start (concat paragraph-start "\\| \\* @[a-z]+")
paragraph-separate "$"))
于 2010-09-22T08:02:43.563 回答
1
于 2010-10-11T05:20:00.653 回答