Overview

VHDL-Tool can be run as a standalone command line application without editor integration. This is useful if you want to syntax-check or lint your files from the command line. VHDL-Tool is a multi mode binary, like git. This means that command line invocations of vhdl-tool must be followed by a subcommand. The available modes are summarised by the --help command:

$ vhdl-tool --help 
VHDL-Tool
Usage: vhdl-tool-free (--version | [-c|--config FILE] COMMAND)
Available options:    -h,--help Show this help text
Available commands:    ctags Generate ctags file    lint Lint    server Server    lsp Language Server Protocol server    client Client    rpc RPC

VHDL-Tool has a client server architecture. This means that some of the subcommands, specifically client and rpc require a running server before they will function. The server is started with the vhdl-tool server command.

Each of the commands is covered below.

ctags

Generates a ctags compatible tags file. This can be used for navigation, but is most useful in conjunction with plugins like TagBar for displaying an overview of the current file.

$ vhdl-tool ctags --help 
Usage: vhdl-tool-free ctags ((-R|--recurse) | INPUT) [-o|--output FILE] [-k|--kinds KINDS]    Generate ctags file
Available options:    -R,--recurse Recurse    -o,--output FILE Output file    -k,--kinds KINDS Kinds: default eapisPfrCctTb    -h,--help Show this help text

lint

Syntax checks the file given to it as the only argument.

$ vhdl-tool lint --help 
Usage: vhdl-tool-free lint [FILE] [-c|--compact]    Lint
Available options:    -c,--compact Render compact for easy parsing by tools like Syntastic    -h,--help Show this help text

server

This launches a VHDL-Tool IDE server. VHDL-Tool first reads your configuration file to determine which files make up your project. It then parses and indexes these for later queries. It provides a JSON RPC interface through a unix socket which can be queries using the rpc command.

$ vhdl-tool server --help 
Usage: vhdl-tool-free server [FILE] [--prof]    Server
Available options:    --prof Profile parsing times    -h,--help Show this help text

client

The client subcommand provides convenience wrappers around the RPC commands. For now, only the lint command is wrapped. In this case, the wrapping exists to provide an easier-to-parse alternative to JSON for lint warnings that can be consumed by, for example, Syntastic. In the free version, which only performs syntax checking, this produces the same output as the vhdl-tool lint command.
$ vhdl-tool client lint --help 
Usage: vhdl-tool-free client lint [-c|--compact] (FILE | --stdin (-f|--filename FILE))    Lint
Available options:    -c,--compact Render compact for easy parsing by tools like Syntastic    -h,--help Show this help text

rpc

Provides a command line interface to query the JSON-RPC server exposed by the server command. This interface is intended for internal use by editor plugins.

$ vhdl-tool rpc --help 
Usage: vhdl-tool-free rpc [-s|--socket FILE] COMMAND    RPC
Available options:    -s,--socket FILE The socket to connect via    -h,--help Show this help text
Available commands:    info Query server for info    kill Kill the server    lint Lint a file    references Get references    imprecise-defs Get imprecise definitions    definitions Get definitions    parse Parse a file and cache the results

For example, the definitions command takes a file name and position within the file. It also takes the file contents through stdin (since the file contents within the editor may differ from the contents on disk). It returns through stdout a JSON array of locations where the identifier at the specified position is defined.

$ vhdl-tool rpc definitions --help 
Usage: vhdl-tool-free rpc definitions (-f|--file FILE) (-l|--line LINE) (-c|--column COL)    Get definitions
Available options:    -f,--file FILE Filename    -l,--line LINE Line    -c,--column COL Column    -h,--help Show this help text

lsp

Provides a Language Server Protocol server over stdin/stdout.

$ vhdl-tool lsp --help 
Usage: vhdl-tool lsp    Language Server Protocol server Available options:    -h,--help Show this help text