Releases: rhdunn/xquery-intellij-plugin
1.6.2
MarkLogic Rewriter XML Integration:
- Use the regular expression language for
matches
attributes. - Add code completion for
match-accept
,match-content-type
,
match-execute-privilege
,match-header
, andmatch-method
elements. - Support resolving
dispatch
,set-error-handler
, andset-path
elements to the XQuery/MJS/SJS file they reference. - Add a line marker to XQuery files referenced in a rewriter file.
Run Configurations:
- Support stopping Saxon queries.
- Fix running/profiling update queries on MarkLogic 10.
- Fix using BaseX in a language other than English.
1.6.1
- Saxon 10.0 syntax extension support.
- Improved the query result output when running/profiling queries.
- Fixed displaying the active structure item in the nav bar when the element under the cursor is an XPath element. This is a workaround for IDEA-232100.
- Report an error when a closing XML tag does not contain a QName, e.g.
<a>error</>
.
Run Configurations:
- Syntax highlight results in the run query output according to the mimetype of the result if the results all have the same mimetype.
- Support reformatting the run query output if enabled in the run configuration settings.
- Fix profiling Saxon 10 queries.
Saxon Syntax Extensions:
- Support for Saxon 9.8
~type
type aliases. - Support for Saxon 10.0 wildcards in element and attribute-based kind tests.
- Support for Saxon 10.0
.{ ... }
style context item inline function expressions. - Support for Saxon 10.0
_{ ... }
style lambda inline function expressions. - Support for Saxon 10.0
otherwise
expressions. - Support for Saxon 10.0 using
as
for specifying the tuple field type in a tuple sequence type. - Support for Saxon 10.0
StringLiteral
tuple field names. - Support for Saxon 10.0
type(T)
type aliases. - Support for Saxon 10.0
for member
expressions.
1.6
References and Resolving:
- Support
BracedURILiteral
references (Q{...}
). - Support navigating to Java classes specified by
java:
and unprefixed
classpath URIs (BaseX, eXist-db, Saxon). - Fix resolving
URIQualifiedName
functions and variables. - Add definitions for the MarkLogic 10.0-3 built-in functions.
Semantic Highlighting:
- Fixed QName prefix semantic highlighting and keyword in QName highlighting
removal when the QName contains a space. - Display the correct type name in the find usages UI for EQNames that are
annotations, attributes, decimal formats, elements, functions, namespaces,
options, parameters, pragmas, types, and variables in XQuery and XPath. - Semantic highlighting of usage types for annotations, attributes, decimal
formats, elements, functions, namespace declarations, options, parameters,
pragmas, types, and variables in XQuery and XPath. - Make XSLT elements use the template language colour style by default.
IntelliJ Integration:
- Rename refactoring support for variables and functions.
- Implement inlay parameter hints for XQuery function calls and named arrow
function expressions. - Support quick documentation (Ctrl+Q) for W3C XQuery functions.
- Support quick documentation (Ctrl+Q) for MarkLogic functions.
- Support displaying the XQuery file structure view in the navigation bar on
IntelliJ 2020.1. - Provide spellchecking support with bundled dictionaries for XPath, XQuery,
and XSLT terms. - Support context information (Alt+Q) for XQuery function declarations.
- Display the namespace signature and module path when holding Ctrl over a
module namespace URI or prefix.
Run Configurations:
- Don't crash on the run configurations page if there are no query processors.
- Support using Saxon 10.
1.5.2
Code Completion:
- Don't crash when editing a
StringLiteral
inside anNodeType
expression, e.g. using MarkLogic's
object-node("...")
.
Run Configurations:
- Fix saving the selected query processor in the run configuration.
- Improve the error handling and reporting when connecting to BaseX servers.
- Improve responsiveness when populating the query processor list, especially
for servers that are not responding. - Don't use HTML formatting when displaying the Context column of the Flat Profile table.
Log Viewer:
- When selecting a BaseX processor, default to the last (most recent) log file.
- When selecting a MarkLogic processor, default to the
ErrorLog.txt
log file.
1.5.1
References, Resolving and Find Usages:
- Specify variable declarations and parameters as write access, including highlighting them in the editor.
- Fix an issue where some built-in functions and namespaces don't always resolve properly.
Code Completion:
- Don't crash when editing a
StringLiteral
inside anAxisStep
expression, e.g. from aPITest
. - Don't list function completions in
@...
-styleAbbrevForwardStep
expressions. - Don't display code completions when typing numeric literals.
IntelliJ Integration:
- Display the namespace signature when holding Ctrl over a
QName
prefix. - Display the parameter information for a
FunctionCall
and named arrow expression function calls. - Breadcrumbs support for XQuery functions, inline functions, and direct/computed element constructors.
XPath and XQuery:
- Support Saxon's
fn{...}
andtuple(...)
syntax in XPath expressions. - Report "Incomplete double exponent" errors for
IntegerLiteral
in addition toDecimalLiteral
. - Report an error when an NCName follows a number without whitespace.
1.5
References, Resolving and Find Usages:
- Fix resolving and finding usages of variables declared in imported modules.
- Fix find usages of locally declared and imported functions.
- Support the MarkLogic behaviour for resolving
NCName
-basedFunctionDecl
s. - Fix resolving to imported functions from declarations other than the one declaring the namespace.
- Provide better type names in the find usages pane.
- Display the
EQName
type signature in the find usages pane.
IntelliJ Integration:
- File structure support, listing the declared functions, variables, and types,
and the query body in a file. - Display the functions, variables, and types when "Show Members" is enabled
in the project pane. - Display the function signature when holding Ctrl over a function call.
- Display the variable signature when holding Ctrl over a variable reference.
- Use the QName annotator on Wildcard elements to correctly highlight the
namespace prefix and local name parts.
Code Completion:
- In-scope variable completion support in
VarRef
expressions for XQuery. - Statically-known function completion support in
FunctionCall
andArrowExpr
expressions for XQuery. - XML Schema and
union()
type completion support inAtomicOrUnionType
andSimpleTypeName
for XPath and XQuery. - Namespace prefix completion support in
QName
s for XPath and XQuery. - Keyword completion support in
ForwardAxis
andReverseAxis
for XPath and XQuery. - Keyword completion support in
KindTest
basedNodeTest
s andItemType
s for XPath and XQuery. - Keyword completion support in
SequenceType
s for XPath and XQuery.
Run Configurations:
- Link to the files when displaying query errors in the console.
- Support running XPath queries as XSLT patterns (XPath subset) on the Saxon
query processor. - Support profiling Saxon XSLT and XQuery scripts.
- Display the elapsed time and number of items returned by the query in the
results console. - Include the console output when profiling queries.
Query Processor Integration:
- Add a query log viewer for BaseX and MarkLogic log files.
Saxon:
- Fix using Saxon 9.2 to 9.8 JAR files.
- Disable Saxon EE optimizations to prevent the processor throwing a
NoClassDefFoundError
looking forcom/saxonica/ee/bytecode/GeneratedCode
. - Support
union(...)
types in XPath expressions. - Support
union(...)
types inSingleType
s for XPath and XQuery.
BaseX:
- Add definitions for the BaseX 9.2 built-in functions.
- Add support for the
perm
annotations introduced in BaseX 9.0.
MarkLogic:
- Add definitions for the MarkLogic 10.0-1 built-in functions.
- Fix MarkLogic 6.0
binary()
used as aNodeTest
. - Support the MarkLogic 6.0
validate full
syntax extension. - Improve support for the MarkLogic 7.0 schema syntax extensions.
XPath and XSLT:
- Enable XPath syntax validation of expressions and patterns in XSLT when the
XPath View + XSLT plugin is disabled. - Full Text 1.0 and 3.0 extensions support in the XPath lexer and parser.
XPath and XQuery:
- Fix parsing decimal
CharRef
s with a single digit, e.g."	"
. - Fix parsing a NameTest that is a named computed constructor keyword like
element
followed by a keyword that is part of a containing expression
(e.g.return
) and does not have anEnclosedExpr
. - Report an error when the
EnclosedExpr
is missing from named computed
constructors. - Report a parser error when a
NumericLiteral
is followed by anNCName
or
URIQualifiedName
without whitespace or comment tokens, due to them being
non-delimiting terminal symbols. - Report an error if an unknown axis name is followed by the
::
axis indicator. - When recovering parser errors in a main module with a prolog, preserve the
prolog context in the subsequent partial expressions.
Inspections:
- XPST0017: Enable the undefined function inspection by default.
- XQST0047: Don't generate an error on
ModuleImport
s without a namespace prefix.
1.4.1
IntelliJ Integration:
- Support code folding for
DirCommentConstructor
elements (<!--...-->
).
XPath and XQuery:
- Removed support for the plugin-specific annotated sequence type syntax.
Static Context:
- Fixed the builtin function definitions to be valid XQuery after the ItemType
and SequenceType changes for annotated and union sequence types in 1.4.
Run Configurations:
- Fixed running queries on MarkLogic prior to 8.0-7 and 9.0-2.
- Persist the updating option in the run configuration settings.
- Display the name of the query being run instead of an empty string in stack traces.
1.4
IntelliJ Integration:
- Register the XSLT 3.0 schema with IntelliJ.
- Display the first comment line when the comment is folded.
- Support profiling MarkLogic queries.
- Support configuring the namespace prefix colour.
Bug Fixes:
- Fix an issue with run configuration settings not saving in IntelliJ 2018.3
and later. - Don't highlight xqDoc tags in non-xqDoc comments.
- Don't throw an IllegalCharsetNameException if the encoding string spans to
the next line.
XPath and XQuery:
- Support the expath-ng variadic function arguments proposal.
- Fix parsing QNames in NameTests where the prefix is
attribute
,
element
,every
,exit
,namespace
,processing-instruction
,
return
, orsome
. - Fix parsing NCNames in FunctionCalls and NameTests where the
prefix issome
, orevery
. - Fix parsing
``[`{...}`...`]``
--StringConstructorInterpolation
at the start of aStringConstructor
.
Static Context:
- Add support for the eXist-db built-in functions and static context. Thanks
to Bridger Dyson-Smith for providing the built-in function definitions. - Add the
err
andoutput
namespaces to the BaseX static context.
Function Resolution:
- Correctly match functions with variadic function arguments.
Inspections:
- XPST0017: Fix the arity check for variadic functions.
- XPST0118: Don't crash on code like
</<test/>
.
1.3
- Added support for the eXist-db XQuery database.
- Initial support for running queries on the BaseX, eXist-db, MarkLogic and
Saxon XQuery processors. - Support for Saxon 9.9 and BaseX 9.1 syntax extensions (see below).
- Support for the BaseX and Saxon built-in functions. Thanks to Bridger
Dyson-Smith for adding these. - Improved resolving imported modules, names, and functions (see below).
Saxon Vendor Extensions:
- Recognise Saxon
UnionType
constructs inTypedMapTest
sequence types. - Support
TupleType
constructs with names only, not associated sequence types. - Support Saxon 9.8 simple inline function expressions.
- Support Saxon 9.9
orElse
andandAlso
logical expressions. - Support Saxon 9.9 optional field names for tuples, and extensible tuples.
- Support
NCName
andURIQualifiedName
types in theunion()
syntax.
BaseX Vendor Extensions:
- Support the BaseX 9.1
TernaryIfExpr
conditional expressions. - Support the BaseX 9.1
ElvisExpr
conditional expressions. - Support the BaseX 9.1 if expressions without else branches.
XQuery Working Draft 02 May 2003 and MarkLogic 0.9-ml Support:
- Support
empty()
syntax forempty-sequence()
.
Invalid Syntax Recovery:
- Recover parsing when the
CompElemConstructor
,CompAttrConstructor
,
CompPIConstructor
, orCompNamespaceConstructor
tag name is aStringLiteral
. - Recover parsing when a
SequenceType
is used in aParenthesizedItemType
.
Static Context:
- Add the
sql
namespace to the MarkLogic static context, added in MarkLogic 7.0. - Add support for the BaseX built-in functions and static context. Thanks to
Bridger Dyson-Smith for providing the built-in function definitions. - Add support for the Saxon built-in functions and static context. Thanks to
Bridger Dyson-Smith for providing the built-in function definitions. - Add support for EXPath and EXQuery module functions used by BaseX and Saxon
as built-in functions and importable modules.
Module Import Resolution:
- Use project source roots to resolve module import URIs.
- Locate built-in definitions from
http://
-basedURILiteral
nodes. - Resolve all location URIs in a
ModuleImport
, not just the first valid location. - Resolve
ModuleImport
declarations that don't specifyat
paths.
EQName Resolution:
- Expand
NCName
-basedEQName
nodes, using the default element or function
namespaces where appropriate. - Resolve EQNames bound to
NamespaceDecl
declarations. - Resolve EQNames bound to
DefaultNamespaceDecl
declarations. - Resolve EQNames bound to
DirAttributeList
attributes.
Function Resolution:
- Matching statically-known functions against expanded QNames.
- Search the
MainModule
/LibraryModule
prolog for function declarations.
Inspections:
- IJVS0001: Report warnings for constructs that require a different XQuery version.
1.2
Language Support:
- Support BaseX 8.4
non-deterministic
function calls. - Support mixing arrow and transform with expressions, allowed in BaseX.
- Improved performance by not creating PSI (AST) nodes for EBNF symbols that
are just forwarding to a sub-expression.
Bug Fixes:
TransformWithExpr
containing an empty expression body should not report
a parser error as it is allowed by the Update Facility 3.0 specification.- Parse
UpdateExpr
correctly, according to how it is handled in BaseX. - Don't crash when computing folding for a partial direct element node inside
an outer direct element node.