aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
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))))