summaryrefslogtreecommitdiffstats
path: root/tools/vhdl-pretty
diff options
context:
space:
mode:
Diffstat (limited to 'tools/vhdl-pretty')
-rwxr-xr-xtools/vhdl-pretty60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/vhdl-pretty b/tools/vhdl-pretty
new file mode 100755
index 0000000..c514b85
--- /dev/null
+++ b/tools/vhdl-pretty
@@ -0,0 +1,60 @@
+#! /bin/sh
+":"; exec emacs --no-site-file --script "$0" -- "$0" "$@" # -*-emacs-lisp-*-
+; vim: noai:ts=4:sw=4:syntax=lisp
+
+(setq arg0 (file-truename (car (cdr argv))))
+(setq args (cdr (cdr argv)))
+(setq argv nil)
+
+; Parse the command line arguments,
+; --xxx -> ("xxx" t)
+; --no-xxx -> ("xxx" nil)
+; --xxx=123 -> ("xxx" 123)
+; --xxx=abc -> ("xxx" "abc")
+; --xxx='abc 123' -> ("xxx" "abc 123")
+; --xxx=abc=123 -> ("xxx" "abc=123")
+(setq args
+ (mapcar
+ (lambda (arg)
+ (cond
+ ((string-match "^--no-\\([^=]*\\)$" arg)
+ (list (intern (match-string 1 arg)) nil))
+ ((string-match "^--\\([^=]*\\)$" arg)
+ (list (intern (match-string 1 arg)) t))
+ ((string-match "^--\\([^=]*\\)=\\([\"']?\\)\\([0-9]+\\)\\2$" arg)
+ (list (intern (match-string 1 arg)) (string-to-number (match-string 3 arg))))
+ ((string-match "^--\\([^=]*\\)=\\([\"']?\\)\\(.+?\\)\\2$" arg)
+ (list (intern (match-string 1 arg)) (match-string 3 arg)))
+ (t nil)
+ ))
+ args))
+
+; Read stdin into buffer
+(defun insert-standard-input ()
+ "insert contents from standard input"
+ (condition-case nil
+ (let (line)
+ (while (setq line (read-from-minibuffer ""))
+ (insert line "\n")))
+ (error nil)))
+
+(insert-standard-input)
+(goto-char (point-min))
+
+; Load library
+(setq basedir (concat (file-name-directory arg0) "vhdl-mode"))
+(setq load-path (cons basedir load-path))
+(load-library "vhdl-mode")
+
+; Default customisation
+(vhdl-set-style "IEEE")
+
+; Customisation from cmdline
+(mapc (lambda (arg) (customize-set-variable (car arg) (car (cdr arg)))) args)
+
+; Turn on mode and beautify
+(vhdl-mode)
+(vhdl-beautify-region (point-min) (point-max))
+
+; Output buffer to stdout
+(princ (buffer-string))