aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/init-php.el
blob: d4fa09b0929c824f680ed7e12ecd8e3523863f74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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)