Commit Graph

187 Commits

Author SHA1 Message Date
Benedikt Peetz 196c392f59
build(flake): Switch to nixpkgs's wrapped mold linker
By now a wrapped version of mold exists, which thus works with the
NixOS libraries. This is obviously the same as my self-wrapped version,
but vendoring is just not important here.
2023-10-31 18:55:18 +01:00
Benedikt Peetz 66e3b362c3
build(flake): Remove language-servers from the devshell
These should always be provided by the editor, and not the devshell.
2023-10-31 18:50:46 +01:00
Benedikt Peetz 8413a30090
build(flake): Remove unused crane overrides 2023-10-31 18:50:05 +01:00
Benedikt Peetz df07c3fc24
build(flake): Replace self-packaged cranelift with rustup's
Motivation
==========
The self-packed one sort-of worked, but was rather flaky, while the one
from rustup obviously works, as it's an officially distributed part.

Running it
==========
Instead of the `cargo clif [build, etc.]` you now need to run (on nightly):
```
RUSTFLAGS="-Zcodegen-backend=cranelift" cargo build
```

Performance
===========
On my system I noticed, that a debug build takes around 20 sec *more*
with cranelift, compared to the default LLVM backend.

One possible hypothesis, for that could be, that cranelift does
not link via `mold` but instead still uses GNU's `gold`.

On the other hand, the performance decrease could also be caused
by the fact, that it's an early preview and some optimizations are
still lacking.
2023-10-31 18:47:01 +01:00
Benedikt Peetz c1b426d590
build(treewide): Update 2023-10-31 18:04:18 +01:00
antifallobst a784f96603
feat(config): added plane cycling 2023-10-19 20:04:27 +02:00
antifallobst a538877b5b
refactor: restructured event sources 2023-10-19 18:14:59 +02:00
Benedikt Peetz 4e839d4e2c
fix(config/lua): Add the 'jj' mapping the insert mode
This is just here to prove that the fixes for the KeyInputPending mode
actually work
2023-10-18 23:10:44 +02:00
Benedikt Peetz c024b73625
fix(ui): Display pending keys in KeyInputPending 2023-10-18 23:10:12 +02:00
Benedikt Peetz 18152bdded
fix(key_input): Also input pending keys, when leaving KeyInputPending 2023-10-18 23:09:09 +02:00
Benedikt Peetz 0ed99b6244
fix(config/lua): Generate the 'keymappings' table under 'std' 2023-10-18 23:03:16 +02:00
Benedikt Peetz b54f8e59e8
fix(key_input): Handle shifted characters correctly
This commit fixes multiple bugs introduced in the new keymapping system:

    When we can't find a keymapping for a string, we simply pass it
along, by calling the 'send_input_unprocessed' function with the
inputted key turned into it's string representation. Turning a shifted
key into it's repr. returned a doubly shifted string:
   'A' turned into '<S-A>', which then fails to parse as a valid key
input. Thus, we simply unshifted the value.
    The next bug, becoming apparent now, is caused by this: We never
reshifted the value, when we converted it into a crossterm key input
event.
2023-10-18 22:52:07 +02:00
Benedikt Peetz 66bf5e3b6f
build(update.sh): Include the language_macros dir in the update 2023-10-18 21:14:23 +02:00
Benedikt Peetz 97c7327d54
build(treewide): Update 2023-10-18 21:14:03 +02:00
Benedikt Peetz 9139fa2776
feat(command_interface): Support user specified keymappings 2023-10-16 14:04:03 +02:00
Benedikt Peetz 602eba6a60
build(treewide): Update 2023-10-16 13:56:18 +02:00
Benedikt Peetz 1dd9a0e4de
feat(command_interface): Add support for functions (and thus callbacks) 2023-10-14 18:46:25 +02:00
Benedikt Peetz d7b93178e8
build(treewide): Move back to rust stable 2023-10-14 12:42:36 +02:00
Benedikt Peetz 181af51c08
build(treewide): Update 2023-10-14 12:41:05 +02:00
Benedikt Peetz 6745da4c71
style(treewide): Apply consistent formatting
I just ran `cargo fmt -- --config reorder_imports=true,imports_granularity=Crate,group_imp
orts=StdExternalCrate`
2023-09-20 19:22:56 +02:00
Benedikt Peetz 27d00c564c
feat(command_interface): Add support for namespaces 2023-09-20 19:21:44 +02:00
Benedikt Peetz 29aa6c1d33
build(treewide): Update 2023-09-17 16:41:55 +02:00
Benedikt Peetz 9a9cda535a
fix(commands/print): Add basic support for printing non-string types 2023-09-09 22:51:28 +02:00
Benedikt Peetz 357c42332f
feat(app): Add support for a Lua based configuration file 2023-09-09 21:29:46 +02:00
Benedikt Peetz 7aea23f3b6
fix(handlers/main)!: Change exit key to `q`
`Esc` is bound to exit a deeper mode (like `insert` or `command`) and
return to `normal` mode. This however is rather inconvenient,
when `Esc` also exits Trinitrix in general, as spamming `Esc` then
becomes impossible.
This changes also puts Trinitrix more in line with vim (although vim
does not allow exiting with `q`).

BREAKING CHANGE: To exit press `q` instead of `Esc`.
2023-09-09 19:57:49 +02:00
Benedikt Peetz 74f3b25827
feat(states): Add `command` state for command only keymappings 2023-09-09 19:57:20 +02:00
Benedikt Peetz bc1fc0cc02
refactor(LuaCommandManager): Express the semantics of Lua code explicitly 2023-09-09 19:55:16 +02:00
Benedikt Peetz ed37d1239f
feat(CommandTransferValue): Generalize the API to facilitate multiple languages
The code for the `CommandTransferValue` was deeply entrenched in the
whole Lua execution code, which is obviously not ideal. In trying to
alleviate that, I decided to generalize the API in a way, that makes
adding new languages a lot easier.
2023-09-09 19:49:56 +02:00
Benedikt Peetz 42b8793dd0
Fix(lua): Upgrade to mlua 9.1, which introduced braking changes 2023-09-09 19:44:00 +02:00
Benedikt Peetz eb63cb6247
build(flake): Wrap mold so that it works with the nix supplied libraries 2023-09-03 22:11:41 +02:00
Benedikt Peetz a8112d554e
build(treewide): Update 2023-09-03 22:08:35 +02:00
Benedikt Peetz d93b00484e
Docs(architecture): Add lua code execution to diagram 2023-08-04 12:36:46 +02:00
antifallobst ecaa98e771
Docs(architecture): added the backend interface to the architecture diagram 2023-07-26 23:56:32 +02:00
Benedikt Peetz bd0ffe9edc
Merge: Branch 'commands'
Multiple things are still missing:
- [ ] Table type support
- [ ] Error messages and Status messages in ci input field (not in the status panel)
- [ ] Better ux in the ci input field (scrollback more than one line, syntax highlighting, &c)
- For further checkboxes take a look at the `FIXME`s and `TODO`s in the code.

The base ci although is already usable and in some way useful
2023-07-26 22:36:59 +02:00
Benedikt Peetz 84c13fd6f8
Fix(treewide): Resolve merge conflicts 2023-07-26 22:25:08 +02:00
Benedikt Peetz 855d487693
Refactor(treewide): Remove the useless `tui_app` directory 2023-07-26 22:15:54 +02:00
Benedikt Peetz 258f784098
Fix(handlers::main): Don't close the cli after an entered command 2023-07-26 22:15:49 +02:00
Benedikt Peetz a80245c523
Fix(handlers::command): Only send success on real success
The `room_message_send()` function told the user about a successful sent
room message, even if that was not the case.
2023-07-26 22:15:18 +02:00
Benedikt Peetz f7b161fb55
Fix(handlers::command): Add the missing displayOutput handler
This handler is called by the lua executor, to show the final output of
a lua execution.
2023-07-26 22:15:17 +02:00
Benedikt Peetz 909fc01a48
Fix(app::command_interface): Add a `greet_multiple()` func to test tables
This is, like the `greet` function only here to debug the lua api. It
outputs a table.
2023-07-26 22:15:15 +02:00
Benedikt Peetz c0a1fc0a02
Fix(app::command_interface): Add a (workaround) print function
The default print function prints to stdout, which obviously
doesn't work with a tui application. This wrapper however is a
rather poor workaround, as it only works with strings (lua `print`
calls `tostring` to turn non string values in something printable).
2023-07-26 22:15:14 +02:00
Benedikt Peetz 1a35bb152c
Feat(treewide): Add a way for Commands to return more than just strings 2023-07-26 22:15:07 +02:00
Benedikt Peetz 7489f06a7c
Fix(app::command_interface): Use new language_macro api 2023-07-26 22:10:19 +02:00
Benedikt Peetz 3ca01912b9
Build(flake): Switch back to stable 2023-07-26 22:08:11 +02:00
Benedikt Peetz fbcf572f47
Build(flake+Cargo): Update lockfiles 2023-07-26 22:08:10 +02:00
Benedikt Peetz 27ad48c5e9
Refactor(language_macros): Complete rewrite
This **should** have everything the other implementation had, but the
api is implemented in a way, which is more in line with the expectation
raised at the lua functions (being that they are only wrappers over the
command api, and nothing more).

Aside of that, this version is actually documented!
2023-07-26 22:08:09 +02:00
Benedikt Peetz a3b49b17f4
Fix(handlers::main): Close ci after a command input 2023-07-26 22:08:07 +02:00
Benedikt Peetz 0288bdb0ad
Feat(ui): Add status panel, which shows command statuses and errors 2023-07-26 22:08:00 +02:00
Benedikt Peetz 1fe04ca5c6
Fix(lua_command::handle): Move lua_command handler to separate thread
This makes it possible to have lua code execute commands and receive
their output value, without risking a deadlock.
2023-07-26 22:06:42 +02:00
Benedikt Peetz c7a4d5a8ab
Refactor(treewide): Remove the repl, reuse of e. handling is hard
The event handling is deeply ingrained in the ui code, the commands are
focused around the ui code, in short splitting of the event handling and
command system from the ui is intentionally hard and in my opinion not
really worth it right now.
2023-07-26 22:06:40 +02:00