aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-02-09 06:39:52 +0000
committerBlaž Hrastnik2021-02-09 06:40:06 +0000
commit755632f23113ccff66390de1e2c3476a51886b00 (patch)
tree8036c55aa3d4edc95f206e6f28a2b8d8d98c8800
parent30d1b7098f023ea1cf728e6b989599de364f58ab (diff)
deps update
-rw-r--r--Cargo.lock36
-rw-r--r--README.md70
-rw-r--r--TODO.md44
-rw-r--r--doc/architecture.md66
-rw-r--r--flake.lock7
-rw-r--r--flake.nix2
6 files changed, 125 insertions, 100 deletions
diff --git a/Cargo.lock b/Cargo.lock
index eb38e755..9df40856 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -94,17 +94,17 @@ dependencies = [
[[package]]
name = "async-process"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c8cea09c1fb10a317d1b5af8024eeba256d6554763e85ecd90ff8df31c7bbda"
+checksum = "ef37b86e2fa961bae5a4d212708ea0154f904ce31d1a4a7f47e1bbc33a0c040b"
dependencies = [
"async-io",
"blocking",
- "cfg-if 0.1.10",
+ "cfg-if 1.0.0",
"event-listener",
"futures-lite",
"once_cell",
- "signal-hook",
+ "signal-hook 0.3.4",
"winapi",
]
@@ -154,9 +154,9 @@ dependencies = [
[[package]]
name = "bstr"
-version = "0.2.14"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf"
+checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d"
dependencies = [
"memchr",
]
@@ -296,7 +296,7 @@ dependencies = [
"libc",
"mio",
"parking_lot",
- "signal-hook",
+ "signal-hook 0.1.17",
"winapi",
]
@@ -638,9 +638,9 @@ dependencies = [
[[package]]
name = "idna"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
+checksum = "de910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094"
dependencies = [
"matches",
"unicode-bidi",
@@ -1096,9 +1096,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.61"
+version = "1.0.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a"
+checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486"
dependencies = [
"itoa",
"ryu",
@@ -1137,6 +1137,16 @@ dependencies = [
]
[[package]]
+name = "signal-hook"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "780f5e3fe0c66f67197236097d89de1e86216f1f6fdeaf47c442f854ab46c240"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
name = "signal-hook-registry"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1257,9 +1267,9 @@ dependencies = [
[[package]]
name = "thread_local"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8208a331e1cb318dd5bd76951d2b8fc48ca38a69f5f4e4af1b6a9f8c6236915"
+checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd"
dependencies = [
"once_cell",
]
diff --git a/README.md b/README.md
index 5d963d0f..b3ca9107 100644
--- a/README.md
+++ b/README.md
@@ -17,73 +17,3 @@ cargo install --path helix-term
This will install the `hx` binary to `$HOME/.cargo/bin`.
-# Notes
-
-- server-client architecture via gRPC, UI separate from core
-- multi cursor based editing and slicing
-- WASM based plugins (builtin LSP & fuzzy file finder)
-
-Structure similar to codemirror:
-
-- text (ropes)
-- column utils, stuff like tab aware (row, col) -> char pos translation
-- word/grapheme/code point utils and iterators
-- state
-- transactions
- - changes
- - annotations (time changed etc)
- - state effects
- - additional editor state as facets
-- snapshots as an async view into current state
-- selections { anchor (nonmoving), head (moving) from/to } -> SelectionSet with a primary
- - cursor is just a single range selection
-- markers
- track a position inside text that synchronizes with edits
-- { doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before }
-- view (actual UI)
-- renders via termwiz
-- viewport(Lines) -> what's actually visible
-- extend the view via Decorations (inline styling) or Components (UI)
- - mark / wieget / line / replace decoration
-- commands (transform state)
-- movement
-- selection extension
-- deletion
-- indentation
-- keymap (maps keys to commands)
-- history (undo tree via immutable ropes)
-- undoes transactions
-- invert changes (generates a revert)
-- (collab mode)
-- gutter (line numbers, diagnostic marker, etc) -> ties into UI components
-- rangeset/span -> mappable over changes (can be a marker primitive?)
-- syntax (treesitter)
-- indentation strategies
-- fold
-- selections (select mode/multiselect)
-- matchbrackets
-- closebrackets
-- special-chars (shows dots etc for specials)
-- panel (for UI: file pickers, search dialogs, etc)
-- tooltip (for UI)
-- search (regex? pcre)
-- lint (async linters)
-- lsp
-- highlight (?)
-- stream-syntax
-- autocomplete
-- comment (gc, etc for auto commenting)
-- snippets
-- terminal mode?
-
-- plugins can contain more commands/ui abstractions to use elsewhere
-- languageData as presets for each language (syntax, indent, comment, etc)
-
-Vim stuff:
-- motions/operators/text objects
-- full visual mode
-- macros
-- jump lists
-- marks
-- yank/paste
-- conceal for markdown markers, etc
diff --git a/TODO.md b/TODO.md
index e6b5efd1..60bd003a 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,18 +1,38 @@
-helper methods: iterate over selection spans in the document.
-
-- Implement marks (superset of Selection/Range)
- Implement style configs, tab settings
-- Visual tab width
- Refactor tree-sitter-highlight to work like the atom one, recomputing partial tree updates.
-- Only render highlights on screen
-- proper selection rendering
-- Undo tree
-- selection mode
-- key sequence shortcuts (gg etc)
- syntax errors highlight query
-- UI work: command line
-- UI work: tab popup on command line
- UI work: completion popup
-- UI work: floating pane
+
+------
+
+1
+- [ ] selection mode
+- [x] % for whole doc selection
+- [ ] vertical splits
+- [ ] input counts (30j)
+- [ ] retain horiz when moving vertically
+- [ ] update lsp on redo/undo
+- [ ] Implement marks (superset of Selection/Range)
+- [ ] ctrl-v/ctrl-x on file picker
+- [ ] linewise selection work
+- [ ] goto definition
+- [ ] nixos packaging
+- [ ] CI binary builds
+
+2
+- extend selection (treesitter select parent node) (replaces viw, vi(, va( etc )
+- bracket pairs
+- comment block (gcc)
+- completion signature popups/docs
+- multiple views into the same file
+
+3
+- diagnostics popups
+- diff mode with highlighting?
+- snippet support (tab to jump between marks)
+- gamelisp/wasm scripting
+
+X
+- rendering via skulpin/skia or raw wgpu
diff --git a/doc/architecture.md b/doc/architecture.md
new file mode 100644
index 00000000..743e9a75
--- /dev/null
+++ b/doc/architecture.md
@@ -0,0 +1,66 @@
+
+# Notes
+
+- server-client architecture via gRPC, UI separate from core
+- multi cursor based editing and slicing
+- WASM based plugins (builtin LSP & fuzzy file finder)
+
+Structure similar to codemirror:
+
+- text (ropes)
+- transactions
+ - changes
+ - invert changes (generates a revert)
+ - annotations (time changed etc)
+ - state effects
+ - additional editor state as facets
+- snapshots as an async view into current state
+- selections { anchor (nonmoving), head (moving) from/to } -> SelectionSet with a primary
+ - cursor is just a single range selection
+- markers
+ track a position inside text that synchronizes with edits
+- { doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before }
+- view (actual UI)
+- viewport(Lines) -> what's actually visible
+- extend the view via Decorations (inline styling) or Components (UI)
+ - mark / wieget / line / replace decoration
+- commands (transform state)
+- movement
+- selection extension
+- deletion
+- indentation
+- keymap (maps keys to commands)
+- history (undo tree via immutable ropes)
+ - undoes transactions via reverts
+- (collab mode)
+- gutter (line numbers, diagnostic marker, etc) -> ties into UI components
+- rangeset/span -> mappable over changes (can be a marker primitive?)
+- syntax (treesitter)
+- fold
+- selections (select mode/multiselect)
+- matchbrackets
+- closebrackets
+- special-chars (shows dots etc for specials)
+- panel (for UI: file pickers, search dialogs, etc)
+- tooltip (for UI)
+- search (regex)
+- lint (async linters)
+- lsp
+- highlight
+- stream-syntax
+- autocomplete
+- comment (gc, etc for auto commenting)
+- snippets
+- terminal mode?
+
+- plugins can contain more commands/ui abstractions to use elsewhere
+- languageData as presets for each language (syntax, indent, comment, etc)
+
+Vim stuff:
+- motions/operators/text objects
+- full visual mode
+- macros
+- jump lists
+- marks
+- yank/paste
+- conceal for markdown markers, etc
diff --git a/flake.lock b/flake.lock
index 505d7e95..033f32e9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -72,17 +72,16 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
- "lastModified": 1611026386,
- "narHash": "sha256-ZCYGAGUW9RMG5+Z1cdqrw1mstQqpuD66AB1U6ALpcDw=",
+ "lastModified": 1612751126,
+ "narHash": "sha256-S2DaaC799QcXIKkYZi1hI3SpMnr/d7oOCDI2bhYdXO0=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "a9b13ba83eaf2d07ae955a45b15fd96aa6994b70",
+ "rev": "03b9eee1062791187809d8c3f6a82e291761fc8c",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "a9b13ba83eaf2d07ae955a45b15fd96aa6994b70",
"type": "github"
}
}
diff --git a/flake.nix b/flake.nix
index c1e2296e..39e4683f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,7 +4,7 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
- rust-overlay.url = "github:oxalica/rust-overlay/a9b13ba83eaf2d07ae955a45b15fd96aa6994b70";
+ rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = inputs@{ self, nixpkgs, rust-overlay, flake-utils, ... }: