6969
7070(require 'font-lock )
7171(require 'custom )
72- (require 'etags )
7372(require 'speedbar )
7473(require 'imenu )
7574(require 'package )
@@ -1267,10 +1266,7 @@ After setting the stylevars run hooks according to STYLENAME
12671266 #'semantic-create-imenu-index )
12681267 " Imenu index function for PHP." )
12691268
1270-
1271- ; ; Define function name completion function
1272- (defvar php-completion-table nil
1273- " Obarray of tag names defined in current tags table and functions known to PHP." )
1269+ (autoload 'php-local-manual-complete-function " php-local-manual" )
12741270
12751271(defun php-complete-function ()
12761272 " Perform function completion on the text around point.
@@ -1279,102 +1275,7 @@ and the standard php functions.
12791275The string to complete is chosen in the same way as the default
12801276for \\ [find-tag] (which see)."
12811277 (interactive )
1282- (let ((pattern (php-get-pattern))
1283- beg
1284- completion
1285- (php-functions (php-completion-table)))
1286- (if (not pattern) (message " Nothing to complete " )
1287- (if (not (search-backward pattern nil t ))
1288- (message " Can't complete here " )
1289- (setq beg (point ))
1290- (forward-char (length pattern))
1291- (setq completion (try-completion pattern php-functions nil ))
1292- (cond ((eq completion t ))
1293- ((null completion)
1294- (message " Can't find completion for \" %s \" " pattern)
1295- (ding ))
1296- ((not (string= pattern completion))
1297- (delete-region beg (point ))
1298- (insert completion))
1299- (t
1300- (let ((selected (completing-read
1301- " Select completion: "
1302- (all-completions pattern php-functions)
1303- nil t pattern)))
1304- (delete-region beg (point ))
1305- (insert selected))))))))
1306-
1307- (defun php-completion-table ()
1308- " Build variable `php-completion-table' on demand.
1309- The table includes the PHP functions and the tags from the
1310- current `tags-file-name' ."
1311- (or (and tags-file-name
1312- (save-excursion (tags-verify-table tags-file-name))
1313- php-completion-table)
1314- (let ((tags-table
1315- (when tags-file-name
1316- (with-current-buffer (get-file-buffer tags-file-name)
1317- (etags-tags-completion-table ))))
1318- (php-table
1319- (cond ((and (not (string= " " php-completion-file))
1320- (file-readable-p php-completion-file))
1321- (php-build-table-from-file php-completion-file))
1322- ((and (not (string= " " php-manual-path))
1323- (file-directory-p php-manual-path))
1324- (php-build-table-from-path php-manual-path))
1325- (t nil ))))
1326- (unless (or php-table tags-table)
1327- (error
1328- (concat " No TAGS file active nor are "
1329- " `php-completion-file' or `php-manual-path' set" )))
1330- (when tags-table
1331- ; ; Combine the tables.
1332- (if (obarrayp tags-table)
1333- (mapatoms (lambda (sym ) (intern (symbol-name sym) php-table))
1334- tags-table)
1335- (setq php-table (append tags-table php-table))))
1336- (setq php-completion-table php-table))))
1337-
1338- (defun php-build-table-from-file (filename )
1339- (let ((table (make-vector 1022 0 ))
1340- (buf (find-file-noselect filename)))
1341- (with-current-buffer buf
1342- (goto-char (point-min ))
1343- (while (re-search-forward
1344- " ^\\ ([-a-zA-Z0-9_.]+\\ )\n "
1345- nil t )
1346- (intern (buffer-substring (match-beginning 1 ) (match-end 1 ))
1347- table)))
1348- (kill-buffer buf)
1349- table))
1350-
1351- (defun php-build-table-from-path (path )
1352- " Return list of PHP function name from `PATH' directory."
1353- (cl-loop for file in (directory-files path nil " ^function\\ ..+\\ .html$" )
1354- if (string-match " \\ .\\ ([-a-zA-Z_0-9]+\\ )\\ .html$" file)
1355- collect (replace-regexp-in-string
1356- " -" " _" (substring file (match-beginning 1 ) (match-end 1 )) t )))
1357-
1358- ; ; Find the pattern we want to complete
1359- ; ; find-tag-default from GNU Emacs etags.el
1360- (defun php-get-pattern ()
1361- (save-excursion
1362- (while (looking-at " \\ sw\\ |\\ s_" )
1363- (forward-char 1 ))
1364- (if (or (re-search-backward " \\ sw\\ |\\ s_"
1365- (save-excursion (beginning-of-line ) (point ))
1366- t )
1367- (re-search-forward " \\ (\\ sw\\ |\\ s_\\ )+"
1368- (save-excursion (end-of-line ) (point ))
1369- t ))
1370- (progn (goto-char (match-end 0 ))
1371- (buffer-substring-no-properties
1372- (point )
1373- (progn (forward-sexp -1 )
1374- (while (looking-at " \\ s'" )
1375- (forward-char 1 ))
1376- (point ))))
1377- nil )))
1278+ (php-local-manual-complete-function))
13781279
13791280(defun php-show-arglist ()
13801281 " Show function arguments at cursor position."
0 commit comments