Settings
Syside configuration using TOML 1.0. See TOML page for more details.
Example:
std = "path/to/sysml.library"
include = []
exclude = ["lib", "out", "dist"]
[lsp]
completion-limit = 256
edit = "all"
[telemetry]
crash-reports = "ignore"
[format]
line-width = 100
tab-width = 4
tabs = false
[format.keywords.null]
fallback = "null"
preserve = false
Glob Patterns
Some configuration options support the following glob patterns.
*- Matches zero or more characters in a path segment. E.g.*.sysmlmatches all files that end with.sysml.?- Matches one character in a path segment. E.g.?atwill matchcatandbat, but notchat.**- Matches any number of path segments, including none. E.g./x/**/ycould match/x/y,/x/a/y,/x/a/b/y.{...}- Groups conditions. E.g.*.{ker,sys}mlto match both KerML and SysML files (the default behaviour).[...]- Declares a set or range of characters to match in a path segment. E.g.example[0-9]matches filesexample0,example1.[!...]- Declares a negation set or range of characters. E.g.example[!0-9]will not matchexample1, but will matchexampleA.[^...]- Same as[!...]to match Unixbashbehaviour.
Attention
Glob patterns use \ to escape characters thus it cannot be used as a
directory separator on Windows. Please use / to separate directories which
works on all platforms. Additionally, patterns starting with / are treated
as absolute on all platforms.
exclude
Files and/or directories to be omitted from automatic discovery, parsing, and analysis.
This can be used to exclude folders containing automatically
generated files, e.g. build folder, from the current workspace. It
can also be used in large workspaces to improve startup times by
disabling large directories. Note that exclusions are applied before
deciding whether a file should be parsed or a directory recursed
into but after resolving the root directories from include items,
so directory in both include and exclude will be searched
non-recursively. This setting supports glob patterns. Relative paths
and patterns are resolved relative to the directory that is being
searched, matching .gitignore behaviour.
Type: string[] | null
include
Additional files and/or directories to include in the workspace.
This is useful for including external libraries in a project. Note
that validation is not performed for files included this way,
and that by default Syside ignores hidden files and directories
(denoted by the leading . character), and thus this setting
would need to be used to include them. This setting supports glob
patterns. Relative paths and patterns are resolved relative to the
directory where they were declared:
Current working directory when provided as a CLI argument;
Directory of the configuration file if declared in one.
Type: string[] | null
std
Path to the standard SysML library, e.g. sysml.library.
If this is not set, Syside uses a bundled compatible standard library. This setting can be used to experiment with different SysML specification versions or to use a customised SysML library. Keep in mind that using standard libraries other than the bundled one can result in spurious and false-positive diagnostics.
Type: string | null
format
Formatter configuration.
empty-brackets
Choose between {} and ; when formatting empty children blocks:
always: empty blocks are always formatted as{}never: empty blocks are always formatted as a trailing;
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "never", preserve = true }
line-width
Formatter visual line-width limit.
Formatter will attempt to fit formatted lines into this number of visual columns.
Type: integer
Default: 100
markdown
Whether to treat Comment and Documentation bodies as
Markdown.
Markdown will preserve whitespace at the end of the lines since it is significant, otherwise it will be trimmed. This does not reformat paragraphs.
Type: boolean
Default: true
strip-unnecessary-quotes
Whether to strip quotes from quoted identifiers where possible.
If true, quotes will be stripped from identifiers that have no restricted characters and do not clash with language keywords.
Type: boolean
Default: true
tab-width
Number of spaces for tabs if using space indentation.
Takes priority over editor settings if set. Defaults to 4
otherwise.
Type: integer | null
tabs
Indent using tabs instead of spaces.
Takes priority over editor settings if set. Defaults to false
otherwise.
Type: boolean | null
format.binary
Options for binary ends formatting:
always: binary ends are printed as binary declarationnever: binary ends are printed as nary declaration
allocation
How binary allocation usage ends are formatted.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
connection
How binary connection usage ends are formatted.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
connector
How binary connector ends are formatted.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
interface
How binary interface usage ends are formatted.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
succession
How binary succession ends are formatted.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
format.breaks
Options for declarations.
about
When to insert line break preceding about in comments:
always: about list is always printed on a new lineas-needed: printer tries to fit about list on the current line
Type: "always" | "as-needed"
Default: "as-needed"
force-bodies
Whether to print all children on a new line, even if they otherwise fit on the same line.
Type: boolean
Default: false
language
When to insert line break preceding language in textual representations:
always: language is always printed on a new lineas-needed: printer tries to fit language on the current line
Type: "always" | "as-needed"
Default: "as-needed"
operator
Wheher to insert line breaks in binary operators:
after: operators are placed on the same line as the LHS expressionbefore: operators are placed on the same line as the RHS expression
Type: "before" | "after"
Default: "after"
format.decl
Options for declaration formatting.
multiplicity-placement
Where multiplicity is placed in type declarations:
first: multiplicity is printed before any other specializationsfirst-specialization: multiplicity is printed after the first specializationlast: multiplicity is printed after all specializations
Type: "first" | "first-specialization" | "last"
Default: "first-specialization"
ordered-nonunique
How ordered and nonunique are ordered:
ordered:orderedis printed firstnonunique:nonuniqueis printed first
Type: { fallback: "ordered" | "nonunique", preserve: boolean }
Default: { fallback = "ordered", preserve = true }
format.decl.merge
Options for merging consecutive declaration relationships.
differencing
Whether to merge consecutive differencings (KerML).
Type: boolean
Default: false
disjoining
Whether to merge consecutive disjoinings (KerML).
Type: boolean
Default: false
feature-chaining
Whether to merge consecutive feature chainings (KerML).
Type: boolean
Default: false
intersecting
Whether to merge consecutive intersectings (KerML).
Type: boolean
Default: false
type-featuring
Whether to merge consecutive type featurings (KerML).
Type: boolean
Default: false
unioning
Whether to merge consecutive unionings (KerML).
Type: boolean
Default: false
format.keywords
Options for keyword formatting, switching between keywords and tokens, or omitting keywords where possible.
allocation
When allocation keyword is printed in allocation usages:
always:allocationis always printedas-needed:allocationis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
assert
When assert keyword is printed in satisfy requirement usages:
always:assertis always printednever:assertis never printed
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
binding
When binding keyword is printed in binding connectors as usages:
always:bindingis always printedas-needed:bindingis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
comment
When comment keyword is printed:
always:commentwill always be printedas-needed:commentwill only be printed as needed
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
concern
When concern keyword is printed in framed concern usages:
always:concernis always printedas-needed:concernis only printed if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
conjugates
Choose between conjugates and ~ when formatting
conjugations (KerML):
keyword:conjugatesis printedtoken:~is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
conjugation
When conjugation keyword is printed in conjugation members (KerML):
always:conjugationwill always be printed.as-needed:conjugationwill be printed only if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
connect
When connect keyword is printed in interface usages:
always:connectis always printedas-needed:connectis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
connection
When connection keyword is printed in connection usages:
always:connectionis always printedas-needed:connectionis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
constraint
When constraint keyword is printed in assert constraint usages:
always:constraintis always printedas-needed:constraintis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
crosses
Choose between crosses and => when formatting
cross subsettings:
keyword:crossesis printedtoken:=>is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
defined-by
Choose between defined by and : when formatting
feature typings (SysML, use typed-by for KerML):
keyword:defined byis printedtoken::is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
disjoining
When disjoining keyword is printed in disjoining members (KerML):
always:disjoiningwill always be printed.as-needed:disjoiningwill be printed only if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
enum
When enum keyword is printed inside enum definitions:
always:enumis always printednever:enumis never printed
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
equals
When to print = in feature values:
as-needed:=will only be printed if it is required by the grammaralways:=will be always printed when it is acceptable by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
inverting
When inverting keyword is printed in inverting members (KerML):
always:invertingwill always be printed.as-needed:invertingwill be printed only if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
metadata
Choose between metadata and @ tokens for metadata features and usages:
keyword:metadatais printedtoken:@is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
null
Option for NullExpression formatting:
null: always formatted asnullbrackets: always formatted as()
Type: { fallback: "null" | "brackets", preserve: boolean }
Default: { fallback = "null", preserve = true }
port
When port keyword is printed of default interface ends:
always:portis always printednever:portis never printed
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
public
When public keyword is printed:
always:publicwill always be printednever:publicwill never be printed
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "never", preserve = true }
references
Choose between references and ::> when formatting
reference subsettings:
keyword:referencesis printedtoken:::>is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
rep
When rep keyword is printed:
always:repwill always be printedas-needed:repwill only be printed as needed
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
requirement
When requirement keyword is printed in satisfy requirement usages:
always:requirementis always printedas-needed:requirementis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
specializes
Choose between specializes and :> when formatting
specializations and subclassifications:
keyword:specializesis printedtoken::>is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
state
When state keyword is printed in exhibit state usages:
always:stateis always printedas-needed:stateis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
subsets
Choose between subsets and :> when formatting
subsettings:
keyword:subsetsis printedtoken::>is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
succession
When succession keyword formatting in successions as usages:
always:successionis always printedas-needed:successionis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
transition
When transition keyword is printed in transition usages:
always:transitionis always printed if permitted by the grammaras-needed:transitionis only printed if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
true
When true keyword is printed in invariants:
never:trueis never printedalways:trueis always printed if invariant is not negated
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
typed-by
Choose between typed by and : when formatting
feature typings (KerML):
keyword:typed byis printedtoken::is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
use-case
When use case keyword is printed in include use case usages:
always:use caseis always printedas-needed:use caseis only printed when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.action
When action keyword is printed:
always:actionis always printedas-needed:actionis only printed when required by the grammar
action-node
When action keyword is printed in action nodes.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
perform-action
When action keyword is printed in perform action usages.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.feature
Options for feature keyword formatting (KerML).
feature
When feature keyword is printed in features:
always:featureis always printedas-needed:featureis printed only when required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
metadata
When feature keyword is printed in metadata features:
always:featurekeyword is always printednever:featurekeyword is never printed
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
format.keywords.first
When first keyword is printed:
always:firstis always printed if permitted by the grammaras-needed:firstis only printed if required by the grammar
succession
When first keyword is printed in binary successions.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
transition
When first keyword is printed in transition usages.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.from
When from keyword is printed:
always:fromis always printedas-needed:fromis only printed when required by the grammar
connector
When from keyword is printed in binary connectors (KerML).
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
dependency
When from keyword is printed in dependencies.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "always", preserve = true }
flow
When from keyword is printed in flows (KerML).
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
flow-usage
When from keyword is printed in flow usages.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
succession-flow
When from keyword is printed in succession flows (KerML).
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
succession-flow-usage
When from keyword is printed in succession flow usages.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.occurrence
When occurrence keyword is printed:
always:occurrenceis always printedas-needed:occurrenceis only printed when required by the grammar
event-occurrence
When occurrence keyword is printed in event occurrence usages.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
occurrence
When occurrence keyword is printed in occurrence usages and definitions.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.of
When of keyword is printed:
always:ofis always printedas-needed:ofis only printed when required by the grammar
binding-connector
When of keyword is printed in binary binding connectors.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
type-featuring
When of keyword is printed in type featuring members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.redefines
Options for redefines keyword formatting.
feature
Choose between redefines and :>> in feature declarations:
keyword:redefinesis printedtoken::>>is printed
Type: { fallback: "token" | "keyword", preserve: boolean }
Default: { fallback = "token", preserve = true }
metadata-body
Choose between redefines, :>>, or no token inside metadata
feature bodies:
keyword:redefinesis printedtoken::>>is printednone: nothing is printed
Type: { fallback: "token" | "keyword" | "none", preserve: boolean }
Default: { fallback = "none", preserve = true }
format.keywords.ref
When ref keyword is printed
attribute
When ref keyword is printed in attribute usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
connection
When ref keyword is printed in connection usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
connector
When ref keyword is printed in connector as usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
event-occurrence
When ref keyword is printed in event occurrence usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
exhibit-state
When ref keyword is printed in exhibit state usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
include-use-case
When ref keyword is printed in include use case usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
metadata
When ref keyword is printed in metadata usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
perform-action
When ref keyword is printed in perform action usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
port
When ref keyword is printed in port usages.
Type: { fallback: "always" | "never", preserve: boolean }
Default: { fallback = "always", preserve = true }
reference
When ref keyword is printed in reference usages:
always:refkeyword is always printedas-needed:refkeyword is only printed if required by the grammar
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.keywords.specialization
Options for specialization keyword formatting member relationships (KerML).
When specialization keyword is printed:
always:specializationwill always be printed.as-needed:specializationwill be printed only if required by the grammar
feature-typing
When specialization keyword is printed in feature typing members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
redefinition
When specialization keyword is printed in redefinition members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
specialization
When specialization keyword is printed in specialization members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
subclassification
When specialization keyword is printed in subclassification members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
subsetting
When specialization keyword is printed in subsetting members.
Type: { fallback: "always" | "as-needed", preserve: boolean }
Default: { fallback = "as-needed", preserve = true }
format.parentheses
Options for expression parentheses formatting:
always: expression is printed with parenthesesnever: expression is printed without parentheseson-break: expression is printed with parentheses only if it breaks
filter
When to parenthesize filter expression filter (...):
always: expression is printed with parenthesesnever: expression is printed without parentheseson-break: expression is printed with parentheses only if it breaks
Type: "never" | "always" | "on-break"
Default: "on-break"
if
When to parenthesize condition expression if (...):
always: expression is printed with parenthesesnever: expression is printed without parentheseson-break: expression is printed with parentheses only if it breaks
Type: "never" | "always" | "on-break"
Default: "on-break"
transition-guard
When to parenthesize condition expression if (...) in transition usages:
always: expression is printed with parenthesesnever: expression is printed without parentheseson-break: expression is printed with parentheses only if it breaks
Type: "never" | "always" | "on-break"
Default: "on-break"
format.parentheses.while-loop
Options for parentheses inside while loops.
condition
When to parenthesize condition expression while (...).
Type: "never" | "always" | "on-break"
Default: "on-break"
until
When to parenthesize until expression until (...).
Type: "never" | "always" | "on-break"
Default: "on-break"
format.synth
Options for printing synthetic elements.
literal-real
How to print synthetic LiteralReal values:
none- implementation defined, typically fixed format, e.g.0.024exp- printed in exponential notation, e.g.2.4e-2prec- general format, switching between fixed and exponential format depending on the magnitude
Type: "none" | "exp" | "prec"
Default: "none"
format.trailing-comma
Options for trailing comma placement.
sequence-expression
When to insert a trailing comma in sequence expressions, e.g. = (a,b,c);:
always: trailing comma is always insertednever: trailing comma is never insertedon-break: trailing comma is inserted if the expression breaks
Type: "never" | "always" | "on-break"
Default: "on-break"
lsp
LSP configuration.
completion-limit
The maximum number of completions shown in the autocomplete dropdown.
Setting this to 0 will disable any limits. Lower values reduce
completion latency.
Type: integer
Default: 256
edit
Document tiers treated as editable, affecting the renaming feature, and diagnostics:
project- allows editing only project files.external- allows editing project files and external libraries except the standard library.all- allows editing all files, including standard library.
Type: "all" | "external" | "project"
Default: "project"
telemetry
Telemetry configuration.
crash-reports
Whether Syside should automatically send crash reports back to Sensmetry or not.
When declared in a configuration file, this only takes effect after the configuration file is parsed. If you want to ensure consistent behaviour, consider passing this through CLI.
Automatic sending can be disabled by setting this to "ignore". For
more information refer to
Telemetry.
Type: "ignore" | "upload" | null