aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorEivind Fonn <evfonn@gmail.com>2019-12-13 09:10:44 +0100
committerEivind Fonn <evfonn@gmail.com>2019-12-19 14:52:36 +0100
commit177d72c4d1ba57e69721f5279f0b0a874624e767 (patch)
tree5d2bc8c027c8441c9719aa26a132150de862f85a /scripts
parent6cef26fce01369bcc179068720a5dcb60fd1fba6 (diff)
Script for extracting documentation data to json
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/evil-extract-docstrings30
1 files changed, 30 insertions, 0 deletions
diff --git a/scripts/evil-extract-docstrings b/scripts/evil-extract-docstrings
new file mode 100755
index 0000000..9e636b6
--- /dev/null
+++ b/scripts/evil-extract-docstrings
@@ -0,0 +1,30 @@
+#!/usr/bin/emacs --script
+
+(setq cur-path (file-name-directory load-file-name))
+
+(add-to-list 'load-path (format "%s.." cur-path))
+(require 'evil)
+(require 'json)
+(require 'help)
+
+(with-temp-file (format "%s../doc/docstringdb.json" cur-path)
+ (let (vars)
+ (mapatoms
+ (lambda (sym)
+ (when (string-prefix-p "evil-" (symbol-name sym))
+ (let ((default (car (get sym 'standard-value))))
+ (while (and (consp default) (memq (car default) '(function quote)))
+ (setq default (cadr default)))
+ (push `(,sym (default . ,(cond
+ ((consp default) (format "%S" default))
+ ((symbolp default) (symbol-name default))
+ (t default)))
+ (local . ,(local-variable-if-set-p sym))
+ (default-type . ,(type-of default))
+ (var-docstring . ,(documentation-property sym 'variable-documentation 'raw))
+ (fn-docstring . ,(ignore-errors (documentation sym 'raw)))
+ (arglist . ,(help-function-arglist sym))
+ (functionp . ,(functionp sym))
+ (macrop . ,(macrop sym)))
+ vars)))))
+ (insert (json-encode vars))))