aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/init-php.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/init-php.el')
-rw-r--r--lisp/init-php.el64
1 files changed, 64 insertions, 0 deletions
diff --git a/lisp/init-php.el b/lisp/init-php.el
new file mode 100644
index 0000000..d4fa09b
--- /dev/null
+++ b/lisp/init-php.el
@@ -0,0 +1,64 @@
+(require-package 'php-mode)
+
+(require-package 'smarty-mode)
+
+;; From EmacsWiki: https://www.emacswiki.org/emacs/PhpMode
+(defun my/php-symbol-lookup ()
+ (interactive)
+ (let ((symbol (symbol-at-point)))
+ (if (not symbol)
+ (message "No symbol at point.")
+
+ (browse-url (concat "https://php.net/manual-lookup.php?pattern="
+ (symbol-name symbol))))))
+
+
+(defun my/php-function-lookup ()
+ (interactive)
+ (let* ((function (symbol-name (or (symbol-at-point)
+ (error "No function at point."))))
+ (buf (url-retrieve-synchronously (concat "https://php.net/manual-lookup.php?pattern=" function))))
+ (with-current-buffer buf
+ (goto-char (point-min))
+ (let (desc)
+ (when (re-search-forward "<div class=\"methodsynopsis dc-description\">\\(\\(.\\|\n\\)*?\\)</div>" nil t)
+ (setq desc
+ (replace-regexp-in-string
+ " +" " "
+ (replace-regexp-in-string
+ "\n" ""
+ (replace-regexp-in-string "<.*?>" "" (match-string-no-properties 1)))))
+
+ (when (re-search-forward "<p class=\"para rdfs-comment\">\\(\\(.\\|\n\\)*?\\)</p>" nil t)
+ (setq desc
+ (concat desc "\n\n"
+ (replace-regexp-in-string
+ " +" " "
+ (replace-regexp-in-string
+ "\n" ""
+ (replace-regexp-in-string "<.*?>" "" (match-string-no-properties 1))))))))
+
+ (if desc
+ (message desc)
+ (message "Could not extract function info. Press C-F1 to go the description."))))
+ (kill-buffer buf)))
+
+(require-package 'ac-php)
+
+(defun my/php-mode-stuff ()
+ (local-set-key (kbd "<f1>") 'my/php-function-lookup)
+ (local-set-key (kbd "C-<f1>") 'my/php-symbol-lookup)
+ ;; New versions of PHP have this :)
+ (php-enable-psr2-coding-style)
+ (auto-complete-mode t)
+ (require 'ac-php)
+ (setq ac-sources '(ac-source-dictionary ac-source-abbrev ac-source-php ) )
+ (ac-php-core-eldoc-setup ) ;enable eldoc
+ (define-key php-mode-map (kbd "C-]") 'ac-php-find-symbol-at-point) ;goto define
+ (define-key php-mode-map (kbd "C-t") 'ac-php-location-stack-back) ;go back
+ )
+
+(add-hook 'php-mode-hook 'my/php-mode-stuff)
+
+(myemacs/elapsed-time)
+(provide 'init-php)