mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
12 KiB
12 KiB
v0.16.0
Added
- Added more "go to reference" implementations in the language server
- Added semantic token support for flag members in the language server
- Added property documentation to the hover tooltip for notify signals
- The language server now shows relevant sections of the reference documentation when hovering over keywords and symbols
- Added
not-swapped
flag to signal handlers, which may be needed for signal handlers that specify an object - Added expression literals, which allow you to specify a Gtk.Expression property (as opposed to the existing expression support, which is for property bindings)
Changed
- The formatter adds trailing commas to lists (Alexey Yerin)
- The formatter removes trailing whitespace from comments (Alexey Yerin)
- Autocompleting a commonly translated property automatically adds the
_("")
syntax - Marking a single-quoted string as translatable now generates a warning, since gettext does not recognize it when using the configuration recommended in the blueprint documentation
Fixed
- Added support for libgirepository-2.0 so that blueprint doesn't crash due to import conflicts on newer versions of PyGObject (Jordan Petridis)
- Fixed a bug when decompiling/porting files with enum values
- Fixed several issues where tests would fail with versions of GTK that added new deprecations
- Addressed a problem with the language server protocol in some editors (Luoyayu)
- Fixed an issue where the compiler would crash instead of reporting compiler errors
- Fixed a crash in the language server that occurred when a detailed signal (e.g.
notify::*
) was not complete - The language server now properly implements the shutdown command, fixing support for some editors and improving robustness when restarting (Alexey Yerin)
- Marking a string in an array as translatable now generates an error, since it doesn't work
Documentation
- Added mention of
null
in the Literal Values section - Add apps to Built with Blueprint section (Benedek Dévényi, Vladimir Vaskov)
- Corrected and updated many parts of the documentation
v0.14.0
Added
- Added a warning for unused imports.
- Added an option to not print the diff when formatting with the CLI. (Gregor Niehl)
- Added support for building Gtk.ColumnViewRow, Gtk.ColumnViewCell, and Gtk.ListHeader widgets with Gtk.BuilderListItemFactory.
- Added support for the
after
keyword for signals. This was previously documented but not implemented. (Gregor Niehl) - Added support for string arrays. (Diego Augusto)
- Added hover documentation for properties in lookup expressions.
- The decompiler supports action widgets, translation domains,
typeof<>
syntax, and expressions. It also supports extension syntax for Adw.Breakpoint, Gtk.BuilderListItemFactory, Gtk.ComboBoxText, Gtk.SizeGroup, and Gtk.StringList. - Added a
decompile
subcommand to the CLI, which decompiles an XML .ui file to blueprint. - Accessibility relations that allow multiple values are supported using list syntax. (Julian Schmidhuber)
Changed
- The decompiler sorts imports alphabetically.
- Translatable strings use
translatable="yes"
instead oftranslatable="true"
for compatibility with xgettext. (Marco Köpcke) - The first line of the documentation is shown in the completion list when using the language server. (Sonny Piers)
- Object autocomplete uses a snippet to add the braces and position the cursor inside them. (Sonny Piers)
- The carets in the CLI diagnostic output now span the whole error message up to the end of the first line, rather than just the first character.
- The decompiler emits double quotes, which are compatible with gettext.
Fixed
- Fixed deprecation warnings in the language server.
- The decompiler no longer duplicates translator comments on properties.
- Subtemplates no longer output a redundant
@generated
comment. - When extension syntax from a library that is not available is used, the compiler emits an error instead of crashing.
- The language server reports semantic token positions correctly. (Szepesi Tibor)
- The decompiler no longer emits the deprecated
bind-property
syntax. (Sonny Piers) - Fixed the tests when used as a Meson subproject. (Benoit Pierre)
- Signal autocomplete generates correct syntax. (Sonny Piers)
- The decompiler supports templates that do not specify a parent class. (Sonny Piers)
- Adw.Breakpoint setters that set a property on the template no longer cause a crash.
- Fixed type checking with templates that do not have a parent class.
- Fixed online documentation links for interfaces.
- The wording of edit suggestions is fixed for insertions and deletions.
- When an input file uses tabs instead of spaces, the diagnostic output on the CLI aligns the caret correctly.
- The decompiler emits correct syntax when a property binding refers to the template object.
Documentation
- Fixed typos in "Built with Blueprint" section. (Valéry Febvre, Dexter Reed)
v0.12.0
Added
- Add support for Adw.AlertDialog (Sonny Piers)
- Emit warnings for deprecated APIs - lsp and compiler
- lsp: Document symbols
- lsp: "Go to definition" (ctrl+click)
- lsp: Code action for "namespace not imported" diagnostics, that adds the missing import
- Add a formatter - cli and lsp (Gregor Niehl)
- Support for translation domain - see documentation
- cli: Print code actions in error messages
Changed
- compiler: Add a header notice mentionning the file is generated (Urtsi Santsi)
- decompiler: Use single quotes for output
Fixed
- Fixed multine strings support with the escape newline character
- lsp: Fixed the signal completion, which was missing the "$"
- lsp: Fixed property value completion (Ivan Kalinin)
- lsp: Added a missing semantic highlight (for the enum in Gtk.Scale marks)
- Handle big endian bitfields correctly (Jerry James)
- batch-compile: Fix mixing relative and absolute paths (Marco Köpcke )
Documentation
- Fix grammar for bindings
- Add section on referencing templates
v0.10.0
Added
- The hover documentation now includes a link to the online documentation for the symbol, if available.
- Added hover documentation for the Adw.Breakpoint extensions,
condition
andsetters
.
Changed
- Decompiling an empty file now produces an empty file rather than an error. (AkshayWarrier)
- More relevant documentation is shown when hovering over an identifier literal (such as an enum value or an object ID).
Fixed
- Fixed an issue with the language server not conforming the spec. (seshotake)
- Fixed the signature section of the hover documentation for properties and signals.
- Fixed a bug where documentation was sometimes shown for a different symbol with the same name.
- Fixed a bug where documentation was not shown for accessibility properties that contain
-
. - Number literals are now correctly parsed as floats if they contain a
.
, even if they are divisible by 1.
Removed
- The
bind-property
keyword has been removed. Usebind
instead. The old syntax is still accepted with a warning.
Documentation
- Fixed the grammar for Extension, which was missing ExtAdwBreakpoint.
v0.8.1
Breaking Changes
- Duplicates in a number of places are now considered errors. For example, duplicate flags in several places, duplicate strings in Gtk.FileFilters, etc.
Fixed
- Fixed a number of bugs in the XML output when using
template
to refer to the template object.
Documentation
- Fixed the example for ExtListItemFactory
v0.8.0
Breaking Changes
- A trailing
|
is no longer allowed in flags. - The primitive type names
gboolean
,gchararray
,gint
,gint64
,guint
,guint64
,gfloat
,gdouble
,utf8
, andgtype
are no longer permitted. Use the non-g
-prefixed versions instead. - Translated strings may no longer have trailing commas.
Added
- Added cast expressions, which are sometimes needed to specify type information in expressions.
- Added support for closure expressions.
- Added the
--typelib-path
command line argument, which allows adding directories to the search path for typelib files. - Added custom compile and decompile commands to the language server. (Sonny Piers)
- Added support for Adw.MessageDialog custom syntax.
- Added support for inline sub-templates for Gtk.BuilderListItemFactory. (Cameron Dehning)
- Added support for Adw.Breakpoint custom syntax.
- Added a warning when an object ID might be confusing.
- Added support for Gtk.Scale custom syntax.
Changed
Some of these changes affect syntax, but the old syntax is still accepted with a purple "upgrade" warning, so they are not breaking changes yet. In editors that support code actions, such as Visual Studio Code, the blueprint language server can automatically fix these warnings.
- The XML output uses the integer value rather than GIR name for enum values.
- Compiler errors are now printed to stderr rather than stdout. (Sonny Piers)
- Introduced
$
to indicate types or callbacks that are provided in application code.- Types that are provided by application code are now begin with a
$
rather than a leading.
. - The handler name in a signal is now prefixed with
$
. - Closure expressions, which were added in this version, are also prefixed with
$
.
- Types that are provided by application code are now begin with a
- When a namespace is not found, errors are supressed when the namespace is used.
- The compiler bug message now reports the version of blueprint-compiler.
- The
typeof
syntax now uses<>
instead of()
to match cast expressions. - Menu sections and subsections can now have an ID.
- The interactive porting tool now ignores hidden folders. (Sonny Piers)
- Templates now use the typename syntax rather than an ID to specify the template's class. In most cases, this just means adding a
$
prefix to the ID, but for GtkListItem templates it should be shortened to ListItem (since the Gtk namespace is implied). The template object is now referenced with thetemplate
keyword rather than with the ID.
Fixed
- Fixed a bug in the language server's acceptance of text change commands. (Sonny Piers)
- Fixed a bug in the display of diagnostics when the diagnostic is at the beginning of a line.
- Fixed a crash that occurred when dealing with array types.
- Fixed a bug that prevented Gio.File properties from being settable.
Documentation
- Added a reference section to the documentation. This replaces the Examples page with a detailed description of each syntax feature, including a formal specification of the grammar.
v0.6.0
Breaking Changes
- Quoted and numeric literals are no longer interchangeable (e.g.
"800"
is no longer an accepted value for an integer type). - Boxed types are now type checked.
Added
- There is now syntax for
GType
literals: thetypeof()
pseudo-function. For example, list stores have anitem-type
property which is now specifiable like this:item-type: typeof(.MyDataModel)
. See the documentation for more details.
Changed
- The language server now logs to stderr.
Fixed
- Fix the build on Windows, where backslashes in paths were not escaped. (William Roy)
- Remove the syntax for specifying menu objects inline, since it does not work.
- Fix a crash in the language server that was triggered in files with incomplete
using Gtk 4.0;
statements. - Fixed compilation on big-endian systems.
- Fix an issue in the interactive port tool that would lead to missed files. (Frank Dana)
Documentation
- Fix an issue for documentation contributors where changing the documentation files would not trigger a rebuild.
- Document the missing support for Gtk.Label
<attributes>
, which is intentional, and recommend alternatives. (Sonny Piers) - Add a prominent warning that Blueprint is still experimental
v0.4.0
Added
- Lookup expressions
- With the language server, hovering over a diagnostic message now shows any associated hints.
Changed
- The compiler now uses .typelib files rather than XML .gir files, which reduces dependencies and should reduce compile times by about half a second.
Fixed
- Fix the decompiler/porting tool not importing the Adw namespace when needed
- Fix a crash when trying to compile an empty file
- Fix parsing of number tokens
- Fix a bug where action widgets did not work in templates
- Fix a crash in the language server that occurred when a
using
statement had no version - If a compiler bug is reported, the process now exits with a non-zero code