[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/php-mode 651d524bdb 1/9: Add script/extract_functions.php
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/php-mode 651d524bdb 1/9: Add script/extract_functions.php |
Date: |
Sat, 1 Oct 2022 23:59:02 -0400 (EDT) |
branch: elpa/php-mode
commit 651d524bdbf4083ea35e1b1db4cbf0d090cd595f
Author: USAMI Kenta <tadsan@zonu.me>
Commit: USAMI Kenta <tadsan@zonu.me>
Add script/extract_functions.php
---
.gitignore | 1 +
script/README.md | 40 ++
script/data/module_id_prefixes.php | 846 +++++++++++++++++++++++++++++++++++++
script/extract_functions.php | 111 +++++
script/module_id_prefixes.php | 806 +++++++++++++++++++++++++++++++++++
5 files changed, 1804 insertions(+)
diff --git a/.gitignore b/.gitignore
index 783efce946..f1e2797e02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/.keg/*
/.php-cs-fixer.cache
php-mode-autoloads.el
+php_manual_en.json
diff --git a/script/README.md b/script/README.md
new file mode 100644
index 0000000000..e9406e742b
--- /dev/null
+++ b/script/README.md
@@ -0,0 +1,40 @@
+
+# Maintenance script for PHP Mode
+
+These scripts are provided for maintenance of PHP Mode.
+
+## Extract PHP Functions
+
+This script extract PHP function names from
<http://doc.php.net/downloads/json/php_manual_en.json>.
+
+### Usage
+
+```
+Usage:
+ ./script/extract_functions.php count < php_manual_en.json
+ ./script/extract_functions.php modules < php_manual_en.json
+ ./script/extract_functions.php functions < php_manual_en.json >
result.json
+ ./script/extract_functions.php functions-sexp < php_manual_en.json >
result.el
+```
+
+### Data
+
+A pattern for grouping function modules by function-id is written in
`data/module_id_prefixes.php`.
+
+ * All entries are combined as prefix matching patterns
+ * The meanings of `.` and `\.` (matches) in the regular expression are swapped
+ * `\.` matches any one character
+ * `.` matches only `"."`
+ * An alphanumeric-terminated entry requires an exact match
+ * Other entries require a [`\b`(word
boundary)](https://www.php.net/manual/regexp.reference.escape.php) at the end
+
+```php
+return [
+ 'apache' => [
+ 'function.apache-', // matches all "apache-" prefixed IDs
+ 'function.virtual', // matches only "function.virtual"
+ ],
+ 'bcmath' => [
+ 'function.bc\.+', // matches "function.bcadd", "function.bccomp",
...etc
+ ],
+```
diff --git a/script/data/module_id_prefixes.php
b/script/data/module_id_prefixes.php
new file mode 100644
index 0000000000..cef2a14a41
--- /dev/null
+++ b/script/data/module_id_prefixes.php
@@ -0,0 +1,846 @@
+<?php
+
+/**
+ * Classify function modules by function-id
+ *
+ * @copyright 2022 Friends of Emacs-PHP development
+ * @author USAMI Kenta <tadsan@zonu.me>
+ * @license FSFAP https://spdx.org/licenses/FSFAP.html
+ */
+
+// Copying and distribution of this file, with or without modification,
+// are permitted in any medium without royalty provided the copyright
+// notice and this notice are preserved. This file is offered as-is,
+// without any warranty.
+
+return [
+ 'apache' => [
+ 'function.apache-',
+ 'function.virtual',
+ ],
+ 'apcu' => [
+ 'function.apcu-',
+ ],
+ 'bcmath' => [
+ 'function.bc\.+',
+ ],
+ 'bzip2' => [
+ 'function.bz\.+',
+ ],
+ 'calendar' => [
+ 'function.cal-',
+ 'function.easter-date',
+ 'function.easter-days',
+ 'function.frenchtojd',
+ 'function.gregoriantojd',
+ 'function.jddayofweek',
+ 'function.jdmonthname',
+ 'function.jdtofrench',
+ 'function.jdtogregorian',
+ 'function.jdtojewish',
+ 'function.jdtojulian',
+ 'function.jdtounix',
+ 'function.jewishtojd',
+ 'function.unixtojd',
+ ],
+ 'commonmark' => [
+ 'function.commonmark-',
+ ],
+ 'com_dotnet' => [
+ 'function.com-',
+ 'function.variant-',
+ ],
+ 'componere' => [
+ 'componere.',
+ ],
+ 'core' => [
+ 'function.abs',
+ 'function.acos',
+ 'function.acosh',
+ 'function.addcslashes',
+ 'function.addslashes',
+ 'function.array-',
+ 'function.arsort',
+ 'function.asin',
+ 'function.asinh',
+ 'function.asort',
+ 'function.assert-options',
+ 'function.atan',
+ 'function.atan2',
+ 'function.atanh',
+ 'function.base-convert',
+ 'function.base64-',
+ 'function.basename',
+ 'function.bin2hex',
+ 'function.bindec',
+ 'function.boolval',
+ 'function.call-user-func',
+ 'function.call-user-func-array',
+ 'function.ceil',
+ 'function.chdir',
+ 'function.checkdate',
+ 'function.checkdnsrr',
+ 'function.chgrp',
+ 'function.chmod',
+ 'function.chop',
+ 'function.chown',
+ 'function.chr',
+ 'function.chroot',
+ 'function.chunk-split',
+ 'function.class-alias',
+ 'function.class-exists',
+ 'function.class-implements',
+ 'function.class-parents',
+ 'function.class-uses',
+ 'function.clearstatcache',
+ 'function.cli-',
+ 'function.closedir',
+ 'function.closelog',
+ 'function.compact',
+ 'function.connection-',
+ 'function.constant',
+ 'function.convert-cyr-string',
+ 'function.convert-uudecode',
+ 'function.convert-uuencode',
+ 'function.copy',
+ 'function.cos',
+ 'function.cosh',
+ 'function.count',
+ 'function.count-chars',
+ 'function.crc32',
+ 'function.create-function',
+ 'function.crypt',
+ 'function.ctype-',
+ 'function.current',
+ 'function.date',
+ 'function.date-',
+ 'function.debug-',
+ 'function.decbin',
+ 'function.dechex',
+ 'function.decoct',
+ 'function.define',
+ 'function.defined',
+ 'function.deg2rad',
+ 'function.delete',
+ 'function.die',
+ 'function.dir',
+ 'function.dirname',
+ 'function.disk-',
+ 'function.diskfreespace',
+ 'function.dl',
+ 'function.dns-check-record',
+ 'function.dns-get-mx',
+ 'function.dns-get-record',
+ 'function.doubleval',
+ 'function.each',
+ 'function.enum-exists',
+ 'function.error-',
+ 'function.escapeshellarg',
+ 'function.escapeshellcmd',
+ 'function.eval',
+ 'function.exec',
+ 'function.exit',
+ 'function.exp',
+ 'function.explode',
+ 'function.expm1',
+ 'function.extension-loaded',
+ 'function.extract',
+ 'function.fastcgi-',
+ 'function.fclose',
+ 'function.fdatasync',
+ 'function.fdiv',
+ 'function.feof',
+ 'function.fflush',
+ 'function.fgetc',
+ 'function.fgetcsv',
+ 'function.fgets',
+ 'function.fgetss',
+ 'function.file',
+ 'function.file\.+',
+ 'function.filter-',
+ 'function.finfo-',
+ 'function.floatval',
+ 'function.flock',
+ 'function.floor',
+ 'function.flush',
+ 'function.fmod',
+ 'function.fnmatch',
+ 'function.fopen',
+ 'function.forward-static-call',
+ 'function.forward-static-call-array',
+ 'function.fpassthru',
+ 'function.fprintf',
+ 'function.fputcsv',
+ 'function.fputs',
+ 'function.fread',
+ 'function.fscanf',
+ 'function.fseek',
+ 'function.fsockopen',
+ 'function.fstat',
+ 'function.fsync',
+ 'function.ftell',
+ 'function.ftruncate',
+ 'function.func-get-arg',
+ 'function.func-get-args',
+ 'function.func-num-args',
+ 'function.function-exists',
+ 'function.fwrite',
+ 'function.gc-',
+ 'function.get-',
+ 'function.getallheaders',
+ 'function.getcwd',
+ 'function.getdate',
+ 'function.getenv',
+ 'function.gethostbyaddr',
+ 'function.gethostbyname',
+ 'function.gethostbynamel',
+ 'function.gethostname',
+ 'function.getlastmod',
+ 'function.getmxrr',
+ 'function.getmygid',
+ 'function.getmyinode',
+ 'function.getmypid',
+ 'function.getmyuid',
+ 'function.getopt',
+ 'function.getprotobyname',
+ 'function.getprotobynumber',
+ 'function.getrandmax',
+ 'function.getrusage',
+ 'function.getservbyname',
+ 'function.getservbyport',
+ 'function.gettimeofday',
+ 'function.gettype',
+ 'function.glob',
+ 'function.gmdate',
+ 'function.gmmktime',
+ 'function.gmstrftime',
+ 'function.hash',
+ 'function.hash-',
+ 'function.header',
+ 'function.header-register-callback',
+ 'function.header-remove',
+ 'function.headers-list',
+ 'function.headers-sent',
+ 'function.hebrev',
+ 'function.hebrevc',
+ 'function.hex2bin',
+ 'function.hexdec',
+ 'function.highlight-file',
+ 'function.highlight-string',
+ 'function.hrtime',
+ 'function.html-entity-decode',
+ 'function.htmlentities',
+ 'function.htmlspecialchars',
+ 'function.htmlspecialchars-decode',
+ 'function.http-build-query',
+ 'function.http-response-code',
+ 'function.hypot',
+ 'function.idate',
+ 'function.ignore-user-abort',
+ 'function.implode',
+ 'function.in-array',
+ 'function.inet-',
+ 'function.ini-',
+ 'function.intdiv',
+ 'function.interface-exists',
+ 'function.intval',
+ 'function.ip2long',
+ 'function.is-a',
+ 'function.is-array',
+ 'function.is-bool',
+ 'function.is-callable',
+ 'function.is-countable',
+ 'function.is-dir',
+ 'function.is-double',
+ 'function.is-executable',
+ 'function.is-file',
+ 'function.is-finite',
+ 'function.is-float',
+ 'function.is-infinite',
+ 'function.is-int',
+ 'function.is-integer',
+ 'function.is-iterable',
+ 'function.is-link',
+ 'function.is-long',
+ 'function.is-nan',
+ 'function.is-null',
+ 'function.is-numeric',
+ 'function.is-object',
+ 'function.is-readable',
+ 'function.is-resource',
+ 'function.is-scalar',
+ 'function.is-string',
+ 'function.is-subclass-of',
+ 'function.is-uploaded-file',
+ 'function.is-writable',
+ 'function.is-writeable',
+ 'function.iterator-',
+ 'function.join',
+ 'function.json-',
+ 'function.juliantojd',
+ 'function.key',
+ 'function.key-exists',
+ 'function.krsort',
+ 'function.ksort',
+ 'function.lcfirst',
+ 'function.lcg-value',
+ 'function.lchgrp',
+ 'function.lchown',
+ 'function.levenshtein',
+ 'function.link',
+ 'function.linkinfo',
+ 'function.list',
+ 'function.localeconv',
+ 'function.localtime',
+ 'function.log',
+ 'function.log10',
+ 'function.log1p',
+ 'function.long2ip',
+ 'function.lstat',
+ 'function.ltrim',
+ 'function.mail',
+ 'function.max',
+ 'function.md5',
+ 'function.md5-file',
+ 'function.memory-',
+ 'function.metaphone',
+ 'function.method-exists',
+ 'function.microtime',
+ 'function.mime-content-type',
+ 'function.min',
+ 'function.mkdir',
+ 'function.mktime',
+ 'function.money-format',
+ 'function.move-uploaded-file',
+ 'function.mt-',
+ 'function.natcasesort',
+ 'function.natsort',
+ 'function.net-get-interfaces',
+ 'function.next',
+ 'function.nl-langinfo',
+ 'function.nl2br',
+ 'function.number-format',
+ 'function.ob-',
+ 'function.octdec',
+ 'function.opcache-',
+ 'function.opendir',
+ 'function.openlog',
+ 'function.ord',
+ 'function.output-',
+ 'function.pack',
+ 'function.parse-ini-',
+ 'function.parse-str',
+ 'function.parse-url',
+ 'function.passthru',
+ 'function.password-',
+ 'function.pathinfo',
+ 'function.pclose',
+ 'function.pfsockopen',
+ 'function.php-ini-',
+ 'function.php-sapi-name',
+ 'function.php-strip-whitespace',
+ 'function.php-uname',
+ 'function.phpcredits',
+ 'function.phpdbg-',
+ 'function.phpinfo',
+ 'function.phpversion',
+ 'function.pi',
+ 'function.popen',
+ 'function.pos',
+ 'function.pow',
+ 'function.preg-',
+ 'function.prev',
+ 'function.print-r',
+ 'function.printf',
+ 'function.proc-',
+ 'function.property-exists',
+ 'function.putenv',
+ 'function.quoted-printable-',
+ 'function.quotemeta',
+ 'function.rad2deg',
+ 'function.rand',
+ 'function.random-',
+ 'function.range',
+ 'function.rawurldecode',
+ 'function.rawurlencode',
+ 'function.readdir',
+ 'function.readfile',
+ 'function.readlink',
+ 'function.realpath',
+ 'function.realpath-',
+ 'function.register-shutdown-function',
+ 'function.register-tick-function',
+ 'function.rename',
+ 'function.reset',
+ 'function.restore-',
+ 'function.rewind',
+ 'function.rewinddir',
+ 'function.rmdir',
+ 'function.round',
+ 'function.rsort',
+ 'function.rtrim',
+ 'function.sapi-',
+ 'function.scandir',
+ 'function.seaslog-get-author',
+ 'function.seaslog-get-version',
+ 'function.serialize',
+ 'function.session-',
+ 'function.set-',
+ 'function.setcookie',
+ 'function.setlocale',
+ 'function.setrawcookie',
+ 'function.settype',
+ 'function.sha1',
+ 'function.sha1-file',
+ 'function.shell-exec',
+ 'function.show-source',
+ 'function.shuffle',
+ 'function.similar-text',
+ 'function.sin',
+ 'function.sinh',
+ 'function.sizeof',
+ 'function.sleep',
+ 'function.sort',
+ 'function.soundex',
+ 'function.spl-',
+ 'function.sprintf',
+ 'function.sqrt',
+ 'function.srand',
+ 'function.sscanf',
+ 'function.stat',
+ 'function.str-',
+ 'function.strcasecmp',
+ 'function.strchr',
+ 'function.strcmp',
+ 'function.strcoll',
+ 'function.strcspn',
+ 'function.stream-',
+ 'function.strftime',
+ 'function.strip-tags',
+ 'function.stripcslashes',
+ 'function.stripos',
+ 'function.stripslashes',
+ 'function.stristr',
+ 'function.strlen',
+ 'function.strnatcasecmp',
+ 'function.strnatcmp',
+ 'function.strncasecmp',
+ 'function.strncmp',
+ 'function.strpbrk',
+ 'function.strpos',
+ 'function.strptime',
+ 'function.strrchr',
+ 'function.strrev',
+ 'function.strripos',
+ 'function.strrpos',
+ 'function.strspn',
+ 'function.strstr',
+ 'function.strtok',
+ 'function.strtolower',
+ 'function.strtotime',
+ 'function.strtoupper',
+ 'function.strtr',
+ 'function.strval',
+ 'function.substr',
+ 'function.substr-compare',
+ 'function.substr-count',
+ 'function.substr-replace',
+ 'function.symlink',
+ 'function.sys-get-temp-dir',
+ 'function.sys-getloadavg',
+ 'function.syslog',
+ 'function.system',
+ 'function.tan',
+ 'function.tanh',
+ 'function.tempnam',
+ 'function.time',
+ 'function.time-',
+ 'function.timezone-',
+ 'function.tmpfile',
+ 'function.token-get-all',
+ 'function.token-name',
+ 'function.touch',
+ 'function.trait-exists',
+ 'function.trigger-error',
+ 'function.trim',
+ 'function.uasort',
+ 'function.ucfirst',
+ 'function.ucwords',
+ 'function.uksort',
+ 'function.umask',
+ 'function.uniqid',
+ 'function.unlink',
+ 'function.unpack',
+ 'function.unregister-tick-function',
+ 'function.unserialize',
+ 'function.unset',
+ 'function.urldecode',
+ 'function.urlencode',
+ 'function.user-error',
+ 'function.usleep',
+ 'function.usort',
+ 'function.var-dump',
+ 'function.var-export',
+ 'function.version-compare',
+ 'function.vfprintf',
+ 'function.vprintf',
+ 'function.vsprintf',
+ 'function.wordwrap',
+ 'function.zend-thread-id',
+ 'function.zend-version',
+ 'pdo.getavailabledrivers',
+ ],
+ 'cubrid' => [
+ 'function.cubrid-',
+ ],
+ 'curl' => [
+ 'curlfile.',
+ 'function.curl-',
+ ],
+ 'dba' => [
+ 'function.dba-',
+ ],
+ 'dbase' => [
+ 'function.dbase-',
+ ],
+ 'dio' => [
+ 'function.dio-',
+ ],
+ 'eio' => [
+ 'function.eio-',
+ ],
+ 'enchant' => [
+ 'function.enchant-',
+ ],
+ 'exif' => [
+ 'function.exif-',
+ 'function.read-exif-',
+ ],
+ 'expect' => [
+ 'function.expect-',
+ ],
+ 'fann' => [
+ 'function.fann-',
+ ],
+ 'fdf' => [
+ 'function.fdf-',
+ ],
+ 'fpm' => [
+ 'function.fpm-'
+ ],
+ 'ftp' => [
+ 'function.ftp-',
+ ],
+ 'gearman' => [
+ 'gearmanclient.',
+ 'gearmantask.',
+ ],
+ 'gettext' => [
+ 'function.bind-textdomain-codeset',
+ 'function.bindtextdomain',
+ 'function.dcgettext',
+ 'function.dcngettext',
+ 'function.dgettext',
+ 'function.dngettext',
+ 'function.gettext',
+ 'function.ngettext',
+ 'function.textdomain',
+ ],
+ 'gd' => [
+ 'function.gd-',
+ 'function.getimagesize',
+ 'function.getimagesizefromstring',
+ 'function.image\.+',
+ 'function.iptcembed',
+ 'function.iptcparse',
+ ],
+ 'gmp' => [
+ 'function.gmp-',
+ ],
+ 'geoip' => [
+ 'function.geoip-',
+ ],
+ 'gnupg' => [
+ 'function.gnupg-',
+ ],
+ 'ibase' => [
+ 'function.fbird-',
+ 'function.ibase-',
+ ],
+ 'ibm_db2' => [
+ 'function.db2-',
+ ],
+ 'iconv' => [
+ 'function.iconv',
+ 'function.iconv-',
+ ],
+ 'igbinary' => [
+ 'function.igbinary-',
+ ],
+ 'imap' => [
+ 'function.imap-',
+ ],
+ 'inotify' => [
+ 'function.inotify-',
+ ],
+ 'intl' => [
+ 'collator.',
+ 'function.grapheme-',
+ 'function.idn-',
+ 'function.intl-',
+ 'intlcalendar.',
+ 'intldateformatter.',
+ 'intltimezone.',
+ 'locale.',
+ 'messageformatter.',
+ 'normalizer.',
+ 'numberformatter.',
+ 'resourcebundle.',
+ 'transliterator.',
+ ],
+ 'language' => [
+ 'function.array',
+ 'function.assert',
+ 'function.echo',
+ 'function.empty',
+ 'function.halt-compiler',
+ 'function.isset',
+ 'function.print',
+ ],
+ 'ldap' => [
+ 'function.ldap-',
+ ],
+ 'libxml' => [
+ 'function.libxml-',
+ ],
+ 'lzf' => [
+ 'function.lzf-',
+ ],
+ 'mailparse' => [
+ 'function.mailparse-',
+ ],
+ 'mbstring' => [
+ 'function.mb-',
+ ],
+ 'memcache' => [
+ 'function.memcache-',
+ ],
+ 'mongodb' => [
+ 'function.mongodb.',
+ ],
+ 'mqseries' => [
+ 'function.mqseries-',
+ ],
+ 'mysqli' => [
+ 'mysqli-',
+ 'mysqli.',
+ 'function.mysqli-',
+ ],
+ 'mysql-obsolete' => [
+ 'function.mysql-',
+ ],
+ 'oauth' => [
+ 'function.oauth-',
+ ],
+ 'obsolete_7' => [
+ 'function.autoload',
+ 'function.end',
+ 'function.ezmlm-hash',
+ 'function.is-real',
+ 'function.jpeg2wbmp',
+ 'function.mcrypt-',
+ 'function.mdecrypt-',
+ 'function.png2wbmp',
+ 'function.wddx-',
+ ],
+ 'obsolete_8' => [
+ 'function.mhash',
+ 'function.mhash-',
+ 'function.utf8-decode',
+ 'function.utf8-encode',
+ 'function.zip-',
+ ],
+ 'oci8' => [
+ 'function.oci\.+',
+ ],
+ 'odbc' => [
+ 'function.odbc-',
+ ],
+ 'openal' => [
+ 'function.openal-',
+ ],
+ 'openssl' => [
+ 'function.openssl-',
+ ],
+ 'parallel' => [
+ 'parallel.',
+ ],
+ 'pcntl' => [
+ 'function.pcntl-',
+ ],
+ 'pgsql' => [
+ 'function.pg-',
+ ],
+ 'posix' => [
+ 'function.posix-',
+ ],
+ 'ps' => [
+ 'function.ps-',
+ ],
+ 'pspell' => [
+ 'function.pspell-',
+ ],
+ 'radius' => [
+ 'function.radius-',
+ ],
+ 'rar' => [
+ 'function.rar-',
+ 'rararchive.',
+ ],
+ 'readline' => [
+ 'function.readline',
+ 'function.readline-',
+ ],
+ 'recode' => [
+ 'function.recode',
+ 'function.recode-',
+ ],
+ 'runkit7' => [
+ 'function.runkit7-',
+ ],
+ 'rpminfo' => [
+ 'function.rpm\.+',
+ ],
+ 'rrd' => [
+ 'function.rrd-',
+ 'function.rrdc-',
+ ],
+ 'scoutapm' => [
+ 'function.scoutapm-',
+ ],
+ 'shmop' => [
+ 'function.shmop-',
+ ],
+ 'simplexml' => [
+ 'function.dom-import-simplexml',
+ 'function.simplexml-',
+ ],
+ 'sqlsrv' => [
+ 'function.sqlsrv-',
+ ],
+ 'smnp' => [
+ 'function.snmp-',
+ 'function.snmp2-',
+ 'function.snmp3-',
+ 'function.snmp\.+',
+ ],
+ 'sodium' => [
+ 'function.sodium-',
+ ],
+ 'soap' => [
+ 'function.is-soap-fault',
+ 'function.use-soap-error-handler',
+ ],
+ 'socket' => [
+ 'function.socket-',
+ ],
+ 'solr' => [
+ 'function.solr-',
+ ],
+ 'ssdeep' => [
+ 'function.ssdeep-',
+ ],
+ 'ssh2' => [
+ 'function.ssh2-',
+ ],
+ 'stats' => [
+ 'function.stats-',
+ ],
+ 'stomp' => [
+ 'function.stomp-',
+ 'stomp.',
+ ],
+ 'svn' => [
+ 'function.svn-',
+ ],
+ 'swoole' => [
+ 'function.swoole-',
+ 'swoole-server.',
+ ],
+ 'sysvshm' => [
+ 'function.ftok',
+ 'function.sem-',
+ 'function.shm-',
+ 'function.msg-get-queue',
+ 'function.msg-queue-exists',
+ 'function.msg-receive',
+ 'function.msg-remove-queue',
+ 'function.msg-send',
+ 'function.msg-set-queue',
+ 'function.msg-stat-queue',
+ ],
+ 'taint' => [
+ 'function.is-tainted',
+ 'function.taint',
+ 'function.untaint',
+ ],
+ 'tcpwrap' => [
+ 'function.tcpwrap-',
+ ],
+ 'tidy' => [
+ 'function.tidy-',
+ 'tidy.',
+ ],
+ 'trader' => [
+ 'function.trader-',
+ ],
+ 'ui' => [
+ 'function.ui-',
+ ],
+ 'uopz' => [
+ 'function.uopz-',
+ ],
+ 'var_representation' => [
+ 'function.var-representation',
+ ],
+ 'win32service' => [
+ 'function.win32-',
+ ],
+ 'wincache' => [
+ 'function.wincache-',
+ ],
+ 'xattr' => [
+ 'function.xattr-',
+ ],
+ 'xdiff' => [
+ 'function.xdiff-',
+ ],
+ 'xhprof' => [
+ 'function.xhprof-',
+ ],
+ 'xml' => [
+ 'function.xml-',
+ ],
+ 'xmlrpc' => [
+ 'function.xmlrpc-',
+ ],
+ 'xmlwriter' => [
+ 'xmlwriter.',
+ ],
+ 'yaml' => [
+ 'function.yaml-',
+ ],
+ 'yaz' => [
+ 'function.yaz-',
+ ],
+ 'zlib' => [
+ 'function.deflate-',
+ 'function.gz\.+',
+ 'function.inflate-',
+ 'function.readgzfile',
+ 'function.zlib-',
+ ],
+ 'zookeeper' => [
+ 'function.zookeeper-',
+ ]
+];
diff --git a/script/extract_functions.php b/script/extract_functions.php
new file mode 100755
index 0000000000..ae3471710e
--- /dev/null
+++ b/script/extract_functions.php
@@ -0,0 +1,111 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Extract PHP Functions
+ *
+ * @copyright 2022 Friends of Emacs-PHP development
+ * @author USAMI Kenta <tadsan@zonu.me>
+ * @license FSFAP https://spdx.org/licenses/FSFAP.html
+ */
+
+// Copying and distribution of this file, with or without modification,
+// are permitted in any medium without royalty provided the copyright
+// notice and this notice are preserved. This file is offered as-is,
+// without any warranty.
+
+declare(strict_types=1);
+
+error_reporting(E_ALL);
+
+$functions = json_decode(stream_get_contents(STDIN), true);
+
+$command = $argv[0];
+$subcommand = $argv[1] ?? null;
+
+$subcommands = [
+ 'count' => function (array $extracted) {
+ echo json_encode(array_map(count(...), $extracted),
JSON_PRETTY_PRINT), PHP_EOL;
+ },
+ 'modules' => function (array $extracted) {
+ echo implode(PHP_EOL, array_keys($extracted)), PHP_EOL;
+ },
+ 'functions' => function (array $extracted) {
+ echo json_encode(array_map(array_keys(...), $extracted),
JSON_PRETTY_PRINT), PHP_EOL;
+ },
+ 'functions-sexp' => function (array $extracted) {
+ echo " '(";
+ foreach ($extracted as $module => $functions) {
+ echo "\n ({$module}";
+ // ksort($functions);
+ foreach ($functions as $name => $function) {
+ $escaped_name = strtr($name, ['\\' => '\\\\']);
+ echo "\n \"{$escaped_name}\"";
+ }
+ echo ")";
+ }
+ echo ")";
+ },
+];
+
+if (!isset($subcommands[$subcommand])) {
+ $json_url = 'http://doc.php.net/downloads/json/php_manual_en.json';
+ fwrite(STDERR, implode(PHP_EOL, [
+ "[Extract PHP Functions]\n",
+ "This script extract PHP function names from <{$json_url}>.\n",
+ "Usage:",
+ "\t{$command} count < php_manual_en.json",
+ "\t{$command} modules < php_manual_en.json",
+ "\t{$command} functions < php_manual_en.json > result.json",
+ "\t{$command} functions-sexp < php_manual_en.json > result.el",
+ '',
+ ]));
+ exit(1);
+}
+
+$module_id_patterns = array_map(
+ fn($allowlist) => '/\A(?:' . implode('|', array_map(
+ fn($preg) => strtr($preg, ['\.' => '.', '.' => '\.']) .
+ (preg_match('/[0-9a-z]\z/', $preg) ? '\z' : '\b'),
+ $allowlist)
+ ) . ')/',
+ include __DIR__ . '/data/module_id_prefixes.php'
+);
+
+$extracted = [];
+
+foreach ($functions as $name => $function) {
+ if (str_contains($name, '::')) {
+ continue;
+ }
+
+ $module = get_module($function, $module_id_patterns);
+
+ if ($module === null) {
+ fwrite(STDERR, "{$name}: {$function['id']}\n");
+ } else {
+ $extracted[$module][$name] = $function;
+ }
+}
+
+ksort($extracted);
+array_walk($extracted, function (&$functions) {
+ ksort($functions);
+});
+
+call_user_func($subcommands[$subcommand], $extracted);
+
+/**
+ * @param array{id: non-empty-string} $function
+ * @param array<non-empty-string, non-empty-string> $function
+ */
+function get_module(array $function, array $patterns): ?string
+{
+ foreach ($patterns as $module => $pattern) {
+ if (preg_match($pattern, $function['id'])) {
+ return $module;
+ }
+ }
+
+ return null;
+}
diff --git a/script/module_id_prefixes.php b/script/module_id_prefixes.php
new file mode 100644
index 0000000000..4809a9d1cc
--- /dev/null
+++ b/script/module_id_prefixes.php
@@ -0,0 +1,806 @@
+<?php
+
+return [
+ 'apache' => [
+ 'function.apache-',
+ 'function.virtual',
+ ],
+ 'apcu' => [
+ 'function.apcu-',
+ ],
+ 'bcmath' => [
+ 'function.bc\.+',
+ ],
+ 'bzip2' => [
+ 'function.bz\.+',
+ ],
+ 'commonmark' => [
+ 'function.commonmark-',
+ ],
+ 'com_dotnet' => [
+ 'function.com-',
+ 'function.variant-',
+ ],
+ 'componere' => [
+ 'componere.',
+ ],
+ 'core' => [
+ 'function.abs',
+ 'function.acos',
+ 'function.acosh',
+ 'function.addcslashes',
+ 'function.addslashes',
+ 'function.array-',
+ 'function.arsort',
+ 'function.asin',
+ 'function.asinh',
+ 'function.asort',
+ 'function.atan',
+ 'function.atan2',
+ 'function.atanh',
+ 'function.base-convert',
+ 'function.base64-',
+ 'function.basename',
+ 'function.bin2hex',
+ 'function.bindec',
+ 'function.boolval',
+ 'function.cal-',
+ 'function.call-user-func',
+ 'function.call-user-func-array',
+ 'function.ceil',
+ 'function.chdir',
+ 'function.checkdate',
+ 'function.checkdnsrr',
+ 'function.chgrp',
+ 'function.chmod',
+ 'function.chop',
+ 'function.chown',
+ 'function.chr',
+ 'function.chroot',
+ 'function.chunk-split',
+ 'function.class-alias',
+ 'function.class-exists',
+ 'function.class-implements',
+ 'function.class-parents',
+ 'function.class-uses',
+ 'function.clearstatcache',
+ 'function.cli-',
+ 'function.closedir',
+ 'function.closelog',
+ 'function.compact',
+ 'function.connection-',
+ 'function.constant',
+ 'function.convert-cyr-string',
+ 'function.convert-uudecode',
+ 'function.convert-uuencode',
+ 'function.copy',
+ 'function.cos',
+ 'function.cosh',
+ 'function.count',
+ 'function.count-chars',
+ 'function.crc32',
+ 'function.create-function',
+ 'function.crypt',
+ 'function.ctype-',
+ 'function.current',
+ 'function.date',
+ 'function.debug-',
+ 'function.decbin',
+ 'function.dechex',
+ 'function.decoct',
+ 'function.define',
+ 'function.defined',
+ 'function.deg2rad',
+ 'function.delete',
+ 'function.die',
+ 'function.dir',
+ 'function.dirname',
+ 'function.disk-',
+ 'function.diskfreespace',
+ 'function.dl',
+ 'function.dns-check-record',
+ 'function.dns-get-mx',
+ 'function.dns-get-record',
+ 'function.dom-import-simplexml',
+ 'function.doubleval',
+ 'function.each',
+ 'function.easter-date',
+ 'function.easter-days',
+ 'function.enum-exists',
+ 'function.error-',
+ 'function.escapeshellarg',
+ 'function.escapeshellcmd',
+ 'function.eval',
+ 'function.exec',
+ 'function.exit',
+ 'function.exp',
+ 'function.explode',
+ 'function.expm1',
+ 'function.extension-loaded',
+ 'function.extract',
+ 'function.fastcgi-',
+ 'function.fclose',
+ 'function.fdatasync',
+ 'function.fdiv',
+ 'function.feof',
+ 'function.fflush',
+ 'function.fgetc',
+ 'function.fgetcsv',
+ 'function.fgets',
+ 'function.fgetss',
+ 'function.file',
+ 'function.file\.+',
+ 'function.filter-',
+ 'function.finfo-',
+ 'function.floatval',
+ 'function.flock',
+ 'function.floor',
+ 'function.flush',
+ 'function.fmod',
+ 'function.fnmatch',
+ 'function.fopen',
+ 'function.forward-static-call',
+ 'function.forward-static-call-array',
+ 'function.fpassthru',
+ 'function.fprintf',
+ 'function.fputcsv',
+ 'function.fputs',
+ 'function.fread',
+ 'function.frenchtojd',
+ 'function.fscanf',
+ 'function.fseek',
+ 'function.fsockopen',
+ 'function.fstat',
+ 'function.fsync',
+ 'function.ftell',
+ 'function.ftruncate',
+ 'function.func-get-arg',
+ 'function.func-get-args',
+ 'function.func-num-args',
+ 'function.function-exists',
+ 'function.fwrite',
+ 'function.gc-',
+ 'function.get-',
+ 'function.getallheaders',
+ 'function.getcwd',
+ 'function.getdate',
+ 'function.getenv',
+ 'function.gethostbyaddr',
+ 'function.gethostbyname',
+ 'function.gethostbynamel',
+ 'function.gethostname',
+ 'function.getlastmod',
+ 'function.getmxrr',
+ 'function.getmygid',
+ 'function.getmyinode',
+ 'function.getmypid',
+ 'function.getmyuid',
+ 'function.getopt',
+ 'function.getprotobyname',
+ 'function.getprotobynumber',
+ 'function.getrandmax',
+ 'function.getrusage',
+ 'function.getservbyname',
+ 'function.getservbyport',
+ 'function.gettimeofday',
+ 'function.gettype',
+ 'function.glob',
+ 'function.gmdate',
+ 'function.gmmktime',
+ 'function.gmstrftime',
+ 'function.gregoriantojd',
+ 'function.hash',
+ 'function.header',
+ 'function.header-register-callback',
+ 'function.header-remove',
+ 'function.headers-list',
+ 'function.headers-sent',
+ 'function.hebrev',
+ 'function.hebrevc',
+ 'function.hex2bin',
+ 'function.hexdec',
+ 'function.highlight-file',
+ 'function.highlight-string',
+ 'function.hrtime',
+ 'function.html-entity-decode',
+ 'function.htmlentities',
+ 'function.htmlspecialchars',
+ 'function.htmlspecialchars-decode',
+ 'function.http-build-query',
+ 'function.http-response-code',
+ 'function.hypot',
+ 'function.idate',
+ 'function.ignore-user-abort',
+ 'function.implode',
+ 'function.in-array',
+ 'function.inet-',
+ 'function.ini-',
+ 'function.intdiv',
+ 'function.interface-exists',
+ 'function.intval',
+ 'function.ip2long',
+ 'function.is-a',
+ 'function.is-array',
+ 'function.is-bool',
+ 'function.is-callable',
+ 'function.is-countable',
+ 'function.is-dir',
+ 'function.is-double',
+ 'function.is-executable',
+ 'function.is-file',
+ 'function.is-finite',
+ 'function.is-float',
+ 'function.is-infinite',
+ 'function.is-int',
+ 'function.is-integer',
+ 'function.is-iterable',
+ 'function.is-link',
+ 'function.is-long',
+ 'function.is-nan',
+ 'function.is-null',
+ 'function.is-numeric',
+ 'function.is-object',
+ 'function.is-readable',
+ 'function.is-resource',
+ 'function.is-scalar',
+ 'function.is-string',
+ 'function.is-subclass-of',
+ 'function.is-uploaded-file',
+ 'function.is-writable',
+ 'function.is-writeable',
+ 'function.iterator-',
+ 'function.jddayofweek',
+ 'function.jdmonthname',
+ 'function.jdtofrench',
+ 'function.jdtogregorian',
+ 'function.jdtojewish',
+ 'function.jdtojulian',
+ 'function.jdtounix',
+ 'function.jewishtojd',
+ 'function.join',
+ 'function.json-',
+ 'function.juliantojd',
+ 'function.key',
+ 'function.key-exists',
+ 'function.krsort',
+ 'function.ksort',
+ 'function.lcfirst',
+ 'function.lcg-value',
+ 'function.lchgrp',
+ 'function.lchown',
+ 'function.levenshtein',
+ 'function.libxml-',
+ 'function.link',
+ 'function.linkinfo',
+ 'function.list',
+ 'function.localeconv',
+ 'function.localtime',
+ 'function.log',
+ 'function.log10',
+ 'function.log1p',
+ 'function.long2ip',
+ 'function.lstat',
+ 'function.ltrim',
+ 'function.mail',
+ 'function.max',
+ 'function.md5',
+ 'function.md5-file',
+ 'function.memory-',
+ 'function.metaphone',
+ 'function.method-exists',
+ 'function.microtime',
+ 'function.mime-content-type',
+ 'function.min',
+ 'function.mkdir',
+ 'function.mktime',
+ 'function.money-format',
+ 'function.move-uploaded-file',
+ 'function.mt-',
+ 'function.natcasesort',
+ 'function.natsort',
+ 'function.net-get-interfaces',
+ 'function.next',
+ 'function.nl-langinfo',
+ 'function.nl2br',
+ 'function.number-format',
+ 'function.ob-',
+ 'function.octdec',
+ 'function.opcache-',
+ 'function.opendir',
+ 'function.openlog',
+ 'function.ord',
+ 'function.output-',
+ 'function.pack',
+ 'function.parse-ini-',
+ 'function.parse-str',
+ 'function.parse-url',
+ 'function.passthru',
+ 'function.password-',
+ 'function.pathinfo',
+ 'function.pclose',
+ 'function.pfsockopen',
+ 'function.php-ini-',
+ 'function.php-sapi-name',
+ 'function.php-strip-whitespace',
+ 'function.php-uname',
+ 'function.phpcredits',
+ 'function.phpdbg-',
+ 'function.phpinfo',
+ 'function.phpversion',
+ 'function.pi',
+ 'function.popen',
+ 'function.pos',
+ 'function.posix-',
+ 'function.pow',
+ 'function.preg-',
+ 'function.prev',
+ 'function.print-r',
+ 'function.printf',
+ 'function.proc-',
+ 'function.property-exists',
+ 'function.putenv',
+ 'function.quoted-printable-',
+ 'function.quotemeta',
+ 'function.rad2deg',
+ 'function.rand',
+ 'function.random-',
+ 'function.range',
+ 'function.rawurldecode',
+ 'function.rawurlencode',
+ 'function.readdir',
+ 'function.readfile',
+ 'function.readlink',
+ 'function.realpath',
+ 'function.register-shutdown-function',
+ 'function.register-tick-function',
+ 'function.rename',
+ 'function.reset',
+ 'function.restore-',
+ 'function.rewind',
+ 'function.rewinddir',
+ 'function.rmdir',
+ 'function.round',
+ 'function.rsort',
+ 'function.rtrim',
+ 'function.sapi-',
+ 'function.scandir',
+ 'function.seaslog-get-author',
+ 'function.seaslog-get-version',
+ 'function.serialize',
+ 'function.session-',
+ 'function.set-',
+ 'function.setcookie',
+ 'function.setlocale',
+ 'function.setrawcookie',
+ 'function.settype',
+ 'function.sha1',
+ 'function.sha1-file',
+ 'function.shell-exec',
+ 'function.show-source',
+ 'function.shuffle',
+ 'function.similar-text',
+ 'function.simplexml-',
+ 'function.sin',
+ 'function.sinh',
+ 'function.sizeof',
+ 'function.sleep',
+ 'function.socket-',
+ 'function.sodium-',
+ 'function.sort',
+ 'function.soundex',
+ 'function.spl-',
+ 'function.sprintf',
+ 'function.sqrt',
+ 'function.srand',
+ 'function.sscanf',
+ 'function.stat',
+ 'function.str-',
+ 'function.strcasecmp',
+ 'function.strchr',
+ 'function.strcmp',
+ 'function.strcoll',
+ 'function.strcspn',
+ 'function.stream-',
+ 'function.strftime',
+ 'function.strip-tags',
+ 'function.stripcslashes',
+ 'function.stripos',
+ 'function.stripslashes',
+ 'function.stristr',
+ 'function.strlen',
+ 'function.strnatcasecmp',
+ 'function.strnatcmp',
+ 'function.strncasecmp',
+ 'function.strncmp',
+ 'function.strpbrk',
+ 'function.strpos',
+ 'function.strptime',
+ 'function.strrchr',
+ 'function.strrev',
+ 'function.strripos',
+ 'function.strrpos',
+ 'function.strspn',
+ 'function.strstr',
+ 'function.strtok',
+ 'function.strtolower',
+ 'function.strtotime',
+ 'function.strtoupper',
+ 'function.strtr',
+ 'function.strval',
+ 'function.substr',
+ 'function.substr-compare',
+ 'function.substr-count',
+ 'function.substr-replace',
+ 'function.symlink',
+ 'function.sys-get-temp-dir',
+ 'function.sys-getloadavg',
+ 'function.syslog',
+ 'function.system',
+ 'function.tan',
+ 'function.tanh',
+ 'function.tempnam',
+ 'function.time',
+ 'function.timezone-',
+ 'function.tmpfile',
+ 'function.token-get-all',
+ 'function.token-name',
+ 'function.touch',
+ 'function.trait-exists',
+ 'function.trigger-error',
+ 'function.trim',
+ 'function.uasort',
+ 'function.ucfirst',
+ 'function.ucwords',
+ 'function.uksort',
+ 'function.umask',
+ 'function.uniqid',
+ 'function.unixtojd',
+ 'function.unlink',
+ 'function.unpack',
+ 'function.unregister-tick-function',
+ 'function.unserialize',
+ 'function.unset',
+ 'function.urldecode',
+ 'function.urlencode',
+ 'function.user-error',
+ 'function.usleep',
+ 'function.usort',
+ 'function.var-dump',
+ 'function.var-export',
+ 'function.version-compare',
+ 'function.vfprintf',
+ 'function.vprintf',
+ 'function.vsprintf',
+ 'function.wordwrap',
+ 'function.xml-',
+ 'function.zend-thread-id',
+ 'function.zend-version',
+ 'pdo.getavailabledrivers',
+ 'xmlwriter.',
+ ],
+ 'cubrid' => [
+ 'function.cubrid-',
+ ],
+ 'curl' => [
+ 'curlfile.',
+ 'function.curl-',
+ ],
+ 'dba' => [
+ 'function.dba-',
+ ],
+ 'dbase' => [
+ 'function.dbase-',
+ ],
+ 'dio' => [
+ 'function.dio-',
+ ],
+ 'eio' => [
+ 'function.eio-',
+ ],
+ 'enchant' => [
+ 'function.enchant-',
+ ],
+ 'exif' => [
+ 'function.exif-',
+ 'function.read-exif-',
+ ],
+ 'expect' => [
+ 'function.expect-',
+ ],
+ 'fann' => [
+ 'function.fann-',
+ ],
+ 'fdf' => [
+ 'function.fdf-',
+ ],
+ 'fpm' => [
+ 'function.fpm-'
+ ],
+ 'ftp' => [
+ 'function.ftp-',
+ ],
+ 'gearman' => [
+ 'gearmanclient.',
+ 'gearmantask.',
+ ],
+ 'gettext' => [
+ 'function.bind-textdomain-codeset',
+ 'function.bindtextdomain',
+ 'function.dcgettext',
+ 'function.dcngettext',
+ 'function.dgettext',
+ 'function.dngettext',
+ 'function.gettext',
+ 'function.ngettext',
+ 'function.textdomain',
+ ],
+ 'gd' => [
+ 'function.gd-',
+ 'function.getimagesize',
+ 'function.getimagesizefromstring',
+ 'function.image\.+',
+ 'function.iptcembed',
+ 'function.iptcparse',
+ ],
+ 'gmp' => [
+ 'function.gmp-',
+ ],
+ 'geoip' => [
+ 'function.geoip-',
+ ],
+ 'gnupg' => [
+ 'function.gnupg-',
+ ],
+ 'ibase' => [
+ 'function.fbird-',
+ 'function.ibase-',
+ ],
+ 'ibm_db2' => [
+ 'function.db2-',
+ ],
+ 'iconv' => [
+ 'function.iconv',
+ ],
+ 'igbinary' => [
+ 'function.igbinary-',
+ ],
+ 'imap' => [
+ 'function.imap-',
+ ],
+ 'inotify' => [
+ 'function.inotify-',
+ ],
+ 'intl' => [
+ 'collator.',
+ 'function.grapheme-',
+ 'function.idn-',
+ 'function.intl-',
+ 'intlcalendar.',
+ 'intldateformatter.',
+ 'intltimezone.',
+ 'locale.',
+ 'messageformatter.',
+ 'normalizer.',
+ 'numberformatter.',
+ 'resourcebundle.',
+ 'transliterator.',
+ ],
+ 'language' => [
+ 'function.array\z',
+ 'function.assert',
+ 'function.echo',
+ 'function.empty',
+ 'function.halt-compiler',
+ 'function.isset',
+ 'function.print\z',
+ ],
+ 'ldap' => [
+ 'function.ldap-',
+ ],
+ 'lzf' => [
+ 'function.lzf-',
+ ],
+ 'mailparse' => [
+ 'function.mailparse-',
+ ],
+ 'mbstring' => [
+ 'function.mb-',
+ ],
+ 'memcache' => [
+ 'function.memcache-',
+ ],
+ 'mongodb' => [
+ 'function.mongodb.',
+ ],
+ 'mqseries' => [
+ 'function.mqseries-',
+ ],
+ 'mysqli' => [
+ 'mysqli-',
+ 'mysqli.',
+ 'function.mysqli-',
+ ],
+ 'mysql-obsolete' => [
+ 'function.mysql-',
+ ],
+ 'oauth' => [
+ 'function.oauth-',
+ ],
+ 'obsolete_7' => [
+ 'function.autoload',
+ 'function.end',
+ 'function.ezmlm-hash',
+ 'function.is-real',
+ 'function.jpeg2wbmp',
+ 'function.mcrypt-',
+ 'function.mdecrypt-',
+ 'function.png2wbmp',
+ 'function.wddx-',
+ ],
+ 'obsolete_8' => [
+ 'function.mhash',
+ 'function.utf8-decode',
+ 'function.utf8-encode',
+ 'function.zip-',
+ ],
+ 'oci8' => [
+ 'function.oci\.+',
+ ],
+ 'odbc' => [
+ 'function.odbc-',
+ ],
+ 'openal' => [
+ 'function.openal-',
+ ],
+ 'openssl' => [
+ 'function.openssl-',
+ ],
+ 'parallel' => [
+ 'parallel.',
+ ],
+ 'pcntl' => [
+ 'function.pcntl-',
+ ],
+ 'pgsql' => [
+ 'function.pg-',
+ ],
+ 'ps' => [
+ 'function.ps-',
+ ],
+ 'pspell' => [
+ 'function.pspell-',
+ ],
+ 'radius' => [
+ 'function.radius-',
+ ],
+ 'rar' => [
+ 'function.rar-',
+ 'rararchive.',
+ ],
+ 'readline' => [
+ 'function.readline',
+ ],
+ 'recode' => [
+ 'function.recode',
+ ],
+ 'runkit7' => [
+ 'function.runkit7-',
+ ],
+ 'rpminfo' => [
+ 'function.rpm\.+',
+ ],
+ 'rrd' => [
+ 'function.rrd-',
+ 'function.rrdc-',
+ ],
+ 'scoutapm' => [
+ 'function.scoutapm-',
+ ],
+ 'shmop' => [
+ 'function.shmop-',
+ ],
+ 'sqlsrv' => [
+ 'function.sqlsrv-',
+ ],
+ 'smnp' => [
+ 'function.snmp-',
+ 'function.snmp2-',
+ 'function.snmp3-',
+ 'function.snmp\.+',
+ ],
+ 'soap' => [
+ 'function.is-soap-fault',
+ 'function.use-soap-error-handler',
+ ],
+ 'solr' => [
+ 'function.solr-',
+ ],
+ 'ssdeep' => [
+ 'function.ssdeep-',
+ ],
+ 'ssh2' => [
+ 'function.ssh2-',
+ ],
+ 'stats' => [
+ 'function.stats-',
+ ],
+ 'stomp' => [
+ 'function.stomp-',
+ 'stomp.',
+ ],
+ 'svn' => [
+ 'function.svn-',
+ ],
+ 'swoole' => [
+ 'function.swoole-',
+ 'swoole-server.',
+ ],
+ 'sysvshm' => [
+ 'function.ftok',
+ 'function.sem-',
+ 'function.shm-',
+ 'function.msg-get-queue',
+ 'function.msg-queue-exists',
+ 'function.msg-receive',
+ 'function.msg-remove-queue',
+ 'function.msg-send',
+ 'function.msg-set-queue',
+ 'function.msg-stat-queue',
+ ],
+ 'taint' => [
+ 'function.is-tainted',
+ 'function.taint',
+ 'function.untaint',
+ ],
+ 'tcpwrap' => [
+ 'function.tcpwrap-',
+ ],
+ 'tidy' => [
+ 'function.tidy-',
+ 'tidy.',
+ ],
+ 'trader' => [
+ 'function.trader-',
+ ],
+ 'ui' => [
+ 'function.ui-',
+ ],
+ 'uopz' => [
+ 'function.uopz-',
+ ],
+ 'var_representation' => [
+ 'function.var-representation',
+ ],
+ 'win32service' => [
+ 'function.win32-',
+ ],
+ 'wincache' => [
+ 'function.wincache-',
+ ],
+ 'xattr' => [
+ 'function.xattr-',
+ ],
+ 'xdiff' => [
+ 'function.xdiff-',
+ ],
+ 'xhprof' => [
+ 'function.xhprof-',
+ ],
+ 'xmlrpc' => ['function.xmlrpc-'],
+ 'yaml' => [
+ 'function.yaml-',
+ ],
+ 'yaz' => [
+ 'function.yaz-',
+ ],
+ 'zlib' => [
+ 'function.deflate-',
+ 'function.gz\.+',
+ 'function.inflate-',
+ 'function.readgzfile',
+ 'function.zlib-',
+ ],
+ 'zookeeper' => [
+ 'function.zookeeper-',
+ ]
+];
- [nongnu] elpa/php-mode updated (6513efaf6f -> 7e4905a6e9), ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 6049ad7453 5/9: Add php-complete.el, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 651d524bdb 1/9: Add script/extract_functions.php,
ELPA Syncer <=
- [nongnu] elpa/php-mode 5179a1c28a 3/9: Copy c-end-of-token function from cc-engine.el, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 4609c9334c 4/9: Add php-leading-tokens, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 6531053ce6 2/9: Add php-defs.el, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode b3718d488d 6/9: Copy thing-at-point-bounds-of-string-at-point function from thingatpt.el, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 51670f3364 7/9: Add "=>" to php-mode token as pseudo-operator, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 836663957b 8/9: Add functions-txt subcommand to extract_functions.php, ELPA Syncer, 2022/10/01
- [nongnu] elpa/php-mode 7e4905a6e9 9/9: Merge pull request #708 from emacs-php/feature/php-completion, ELPA Syncer, 2022/10/01