#! /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))