Commit graph

444 commits

Author SHA1 Message Date
James Westman
80b5698533
Improve value parsing
Parse values as different AST nodes rather than just strings. This
allows for better validation and will eventually make expressions
possible.
2021-11-01 21:51:25 -05:00
James Westman
5f0eef5f2e
Add compilation tests
Added a set of test inputs and expected outputs, for regression testing.
2021-10-31 23:36:20 -05:00
James Westman
53ad4ec69d
ast: Separate validation from properties 2021-10-31 22:51:48 -05:00
James Westman
bfd9daf6a9
Reorganize the parser/AST code
The code is now organized by syntax: `menu {}` in one file, `style` in
another, etc. This should make it easier to add syntax in the future.
2021-10-31 21:42:41 -05:00
James Westman
dc7c0cabd8
Clean up AST code 2021-10-31 16:44:34 -05:00
James Westman
d7a8a21b8e
lsp: Add signatures to hover docs 2021-10-30 22:37:06 -05:00
James Westman
b2b50c6288
Improve completions
If the completion cursor is in the middle of an identifier, start the
completion matching before that token. GNOME Builder does this before
sending us a cursor position, but VS Code does not.
2021-10-30 22:37:06 -05:00
James Westman
54237d7976
Preserve child ordering in toplevel
The order of elements sometimes matters, so don't sort children by type.
2021-10-30 22:37:06 -05:00
James Westman
c79d8dc396
Better error handling for incomplete syntax 2021-10-30 22:37:05 -05:00
James Westman
c155ba7b15
Add layouts 2021-10-30 22:37:05 -05:00
James Westman
cc3ee76dc2
Add default values to AST constructors 2021-10-30 19:20:19 -05:00
James Westman
89ff88881b
ci: Fix dependencies 2021-10-30 18:49:38 -05:00
James Westman
408f3ebce5
lsp: Support completions 2021-10-30 17:49:14 -05:00
James Westman
afecd744ca
Fix tests 2021-10-28 00:13:46 -05:00
James Westman
c576fdf211
docs: Add Setup page 2021-10-27 12:59:48 -05:00
James Westman
c443009261
Add batch-compile command
This makes it easier to use gtk-blueprint-tool from meson because you
only need one custom_target().
2021-10-27 12:40:10 -05:00
James Westman
69fbd07fac
fix type check 2021-10-27 12:39:40 -05:00
James Westman
c1ee4151d0
ci: Build and publish docs 2021-10-27 11:28:47 -05:00
James Westman
55e08e4f52
docs: Add examples 2021-10-27 00:31:49 -05:00
James Westman
f2f6bcc198
Run mypy in CI 2021-10-26 23:14:33 -05:00
James Westman
b9068e24ab
Fix type checker errors 2021-10-26 23:13:31 -05:00
James Westman
b387d4114f
Support C class names that ignore GIR
By writing `.MyAppComponent` instead of `MyApp.Component`, the compiler
will ignore GIR validation for that class and assume it's
application-defined.
2021-10-26 22:47:54 -05:00
James Westman
8ef65196f3
Change property binding syntax
Use `<name>: bind <value>;` instead of `<name> := <value>;` for clarity
2021-10-26 10:54:32 -05:00
James Westman
55a117a5b7
lsp: Show docs on hover
Also:
- Install the script to <prefix>/bin
- Fix a bug in XmlReader that would cause "uninteresting" tags to not be
  fully ignored
- Other minor improvements
2021-10-26 10:54:32 -05:00
James Westman
8fc0efb642
lsp: Code cleanup 2021-10-26 10:54:32 -05:00
James Westman
49658c634e
Support property binding flags 2021-10-26 10:54:32 -05:00
James Westman
7cf3c0bfb1
Support menus and object properties 2021-10-26 10:54:32 -05:00
James Westman
b00401d53f
Add issue tracker link to compiler bug message 2021-10-26 10:54:32 -05:00
James Westman
bef92f2879
Add support for CSS styles 2021-10-23 00:59:10 -05:00
James Westman
75a05fe5ce
Remove an unused file 2021-10-23 00:35:24 -05:00
James Westman
8a2caaf382
tests: Add parser test 2021-10-23 00:33:21 -05:00
James Westman
15591cda45
Move tests out of main package 2021-10-22 23:35:29 -05:00
James Westman
419faf0362
Use meson instead of setup.py
This project will usually be used as a subproject, so it needs a meson
file, and I'd like to not support two different buildsystems.
2021-10-22 23:27:19 -05:00
James Westman
848d5d5049
Clarify licensing
The COPYING file contained the LGPL but README.md stated the license was
GPL. I have decided to use the LGPL, so this commit fixes README.md.
2021-10-22 22:36:58 -05:00
James Westman
b3c28ce3d4
Use "using" instead of "gtk" and "import"
- Having one keyword for both is less syntax to remember
- I might use "include" as a keyword in the future, which would make
  "import" confusing, so use "using" instead
2021-10-22 22:31:26 -05:00
James Westman
78a9481631
lsp: Implement textDocument/didClose 2021-10-22 22:01:40 -05:00
James Westman
572db893d9
Remove @ directives
I liked how they made keywords stand out, but they're kinda ugly and I
think syntax highlighting will do a better job anyway.
2021-10-22 21:57:37 -05:00
James Westman
b553fc357c
Add a basic language server 2021-10-22 21:47:05 -05:00
James Westman
e553e5db29
Add GObject Introspection integration
- Parse .gir files
- Validate class, property, and signal names
2021-10-22 21:14:30 -05:00
James Westman
2ad2f1c54a
Add CI 2021-10-18 12:46:49 -05:00
James Westman
d98b7d5891
Add tokenizer tests 2021-10-18 12:37:05 -05:00
James Westman
cf2f5215c8
Add setup.py 2021-10-17 23:45:24 -05:00
James Westman
b64d0346b0
Add a README 2021-10-17 16:30:38 -05:00
James Westman
3a4b7c6dc3
Initial commit 2021-10-17 15:26:34 -05:00