aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gen_vimdoc.py22
-rw-r--r--scripts/lua2dox.lua32
-rwxr-xr-xscripts/lua2dox_filter90
3 files changed, 18 insertions, 126 deletions
diff --git a/scripts/gen_vimdoc.py b/scripts/gen_vimdoc.py
index 502c9161b6..8e1d6ef80a 100755
--- a/scripts/gen_vimdoc.py
+++ b/scripts/gen_vimdoc.py
@@ -55,11 +55,19 @@ if sys.version_info < MIN_PYTHON_VERSION:
doxygen_version = tuple((int(i) for i in subprocess.check_output(["doxygen", "-v"],
universal_newlines=True).split()[0].split('.')))
+# Until 0.9 is released, need this hacky way to check that "nvim -l foo.lua" works.
+nvim_version = list(line for line in subprocess.check_output(['nvim', '-h'], universal_newlines=True).split('\n')
+ if '-l ' in line)
+
if doxygen_version < MIN_DOXYGEN_VERSION:
print("\nRequires doxygen {}.{}.{}+".format(*MIN_DOXYGEN_VERSION))
print("Your doxygen version is {}.{}.{}\n".format(*doxygen_version))
sys.exit(1)
+if len(nvim_version) == 0:
+ print("\nRequires 'nvim -l' feature, see https://github.com/neovim/neovim/pull/18706")
+ sys.exit(1)
+
# DEBUG = ('DEBUG' in os.environ)
INCLUDE_C_DECL = ('INCLUDE_C_DECL' in os.environ)
INCLUDE_DEPRECATED = ('INCLUDE_DEPRECATED' in os.environ)
@@ -79,7 +87,7 @@ base_dir = os.path.dirname(os.path.dirname(script_path))
out_dir = os.path.join(base_dir, 'tmp-{target}-doc')
filter_cmd = '%s %s' % (sys.executable, script_path)
msgs = [] # Messages to show on exit.
-lua2dox_filter = os.path.join(base_dir, 'scripts', 'lua2dox_filter')
+lua2dox = os.path.join(base_dir, 'scripts', 'lua2dox.lua')
CONFIG = {
'api': {
@@ -993,7 +1001,7 @@ def delete_lines_below(filename, tokenstr):
fp.writelines(lines[0:i])
-def main(config, args):
+def main(doxygen_config, args):
"""Generates:
1. Vim :help docs
@@ -1021,7 +1029,7 @@ def main(config, args):
# runtime/lua/vim/lsp.lua:209: warning: argument 'foo' not found
stderr=(subprocess.STDOUT if debug else subprocess.DEVNULL))
p.communicate(
- config.format(
+ doxygen_config.format(
input=' '.join(
[f'"{file}"' for file in CONFIG[target]['files']]),
output=output_dir,
@@ -1108,11 +1116,7 @@ def main(config, args):
fn_map_full.update(fn_map)
if len(sections) == 0:
- if target == 'lua':
- fail(f'no sections for target: {target} (this usually means'
- + ' "luajit" was not found by scripts/lua2dox_filter)')
- else:
- fail(f'no sections for target: {target}')
+ fail(f'no sections for target: {target} (look for errors near "Preprocessing" log lines above)')
if len(sections) > len(CONFIG[target]['section_order']):
raise RuntimeError(
'found new modules "{}"; update the "section_order" map'.format(
@@ -1159,7 +1163,7 @@ def main(config, args):
def filter_source(filename):
name, extension = os.path.splitext(filename)
if extension == '.lua':
- p = subprocess.run([lua2dox_filter, filename], stdout=subprocess.PIPE)
+ p = subprocess.run(['nvim', '-l', lua2dox, filename], stdout=subprocess.PIPE)
op = ('?' if 0 != p.returncode else p.stdout.decode('utf-8'))
print(op)
else:
diff --git a/scripts/lua2dox.lua b/scripts/lua2dox.lua
index 83bf213f40..19f8f8141d 100644
--- a/scripts/lua2dox.lua
+++ b/scripts/lua2dox.lua
@@ -27,14 +27,13 @@ http://search.cpan.org/~alec/Doxygen-Lua-0.02/lib/Doxygen/Lua.pm
Running
-------
-This file "lua2dox.lua" gets called by "lua2dox_filter" (bash).
+This script "lua2dox.lua" gets called by "gen_vimdoc.py".
Doxygen must be on your system. You can experiment like so:
- Run "doxygen -g" to create a default Doxyfile.
-- Then alter it to let it recognise lua. Add the two following lines:
+- Then alter it to let it recognise lua. Add the following line:
FILE_PATTERNS = *.lua
- FILTER_PATTERNS = *.lua=lua2dox_filter
- Then run "doxygen".
The core function reads the input file (filename or stdin) and outputs some pseudo C-ish language.
@@ -117,26 +116,6 @@ local function string_split(Str, Pattern)
return splitStr
end
---! \class TCore_Commandline
---! \brief reads/parses commandline
-local TCore_Commandline = class()
-
---! \brief constructor
-function TCore_Commandline.init(this)
- this.argv = arg
- this.parsed = {}
- this.params = {}
-end
-
---! \brief get value
-function TCore_Commandline.getRaw(this, Key, Default)
- local val = this.argv[Key]
- if not val then
- val = Default
- end
- return val
-end
-
-------------------------------
--! \brief file buffer
--!
@@ -147,7 +126,7 @@ local TStream_Read = class()
--!
--! \param Filename name of file to read (or nil == stdin)
function TStream_Read.getContents(this, Filename)
- assert(Filename)
+ assert(Filename, ('invalid file: %s'):format(Filename))
-- get lines from file
-- syphon lines to our table
local filecontents = {}
@@ -548,15 +527,14 @@ end
local This_app = TApp()
--main
-local cl = TCore_Commandline()
-local argv1 = cl:getRaw(2)
+local argv1 = arg[1]
if argv1 == '--help' then
TCore_IO_writeln(This_app:getVersion())
TCore_IO_writeln(This_app:getCopyright())
TCore_IO_writeln([[
run as:
- lua2dox_filter <param>
+ nvim -l scripts/lua2dox.lua <param>
--------------
Param:
<filename> : interprets filename
diff --git a/scripts/lua2dox_filter b/scripts/lua2dox_filter
deleted file mode 100755
index e3fa95d0cf..0000000000
--- a/scripts/lua2dox_filter
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env bash
-
-###########################################################################
-# Copyright (C) 2012 by Simon Dales #
-# simon@purrsoft.co.uk #
-# #
-# This program is free software; you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation; either version 2 of the License, or #
-# (at your option) any later version. #
-# #
-# This program is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with this program; if not, write to the #
-# Free Software Foundation, Inc., #
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
-###########################################################################
-LANG=""
-
-##! \brief test executable to see if it exists
-test_executable() {
- P_EXE="$1"
- #########
- WHICH=$(which "$P_EXE")
- if test -z "${WHICH}"; then
- echo "not found \"${P_EXE}\""
- else
- EXE="${P_EXE}"
- fi
-}
-
-##! \brief sets the lua interpreter
-set_lua() {
- if test -z "${EXE}"; then
- test_executable '.deps/usr/bin/luajit'
- fi
-
- if test -z "${EXE}"; then
- test_executable 'luajit'
- fi
-
- if test -z "${EXE}"; then
- test_executable 'lua'
- fi
-}
-
-##! \brief makes canonical name of file
-##!
-##! Note that "readlink -f" doesn't work in MacOSX
-##!
-do_readlink() {
- pushd . > /dev/null
- TARGET_FILE=$1
-
- cd "$(dirname $TARGET_FILE)"
- TARGET_FILE=$(basename "$TARGET_FILE")
-
- # Iterate down a (possible) chain of symlinks
- while [ -L "$TARGET_FILE" ]; do
- TARGET_FILE=$(readlink "$TARGET_FILE")
- cd $(dirname "$TARGET_FILE")
- TARGET_FILE=$(basename "$TARGET_FILE")
- done
-
- PHYS_DIR=$(pwd -P)
- RESULT=$PHYS_DIR
- popd > /dev/null
-}
-
-##main
-set_lua
-if test -z "${EXE}"; then
- echo "no lua interpreter found"
- exit 1
-else
- BASENAME=$(basename "$0")
- do_readlink "$0"
- DIRNAME="${RESULT}"
-
- LUASCRIPT="${DIRNAME}/lua2dox.lua ${BASENAME}"
- #echo "lua[${LUASCRIPT}]"
-
- ${EXE} ${LUASCRIPT} $@
-fi
-
-##eof