- closes https://github.com/cursorless-dev/cursorless/issues/945
- closes https://github.com/cursorless-dev/cursorless/issues/1044
- depends on https://github.com/cursorless-dev/cursorless/pull/1322
- depends on https://github.com/cursorless-dev/cursorless/pull/1327
## Checklist
- [x] Split into smaller PRs for ease of review
- [x] Try DX tests again
https://github.com/cursorless-dev/cursorless/discussions/1289
- [x] I have updated the
[docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and
[cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet)
- [x] File issue for speeding up cheatsheet / making it not optional
locally https://github.com/cursorless-dev/cursorless/issues/1307
- [x] Set package manager in package.json
https://nodejs.org/api/packages.html#packagemanager
- [x] Re-add lint rule to prevent api types from importing anything
- [x] Try local install
- [x] Make sure cheatsheet works
- [x] Make sure local extension build depends on building cheatsheet, or
allows no cheatsheet
- [x] Figure out why we're getting so many extra `internal` modules
- [x] Update https://github.com/cursorless-dev/cursorless/issues/931 to
indicate we're now patching instead of swizzling
- [x] Make sure lint rules are actually running in CI
- [x] Check that we've addressed everything in
https://github.com/cursorless-dev/cursorless/issues/945
- [x] Incorporate changes from
https://github.com/cursorless-dev/cursorless/pull/1166
- [x] ~~Make sure this PR doesn't break doc links; see
https://github.com/cursorless-dev/cursorless/pull/942#discussion_r968556276~~
There's no way to avoid these links getting broken if we upgrade
typedoc; filed https://github.com/cursorless-dev/cursorless/issues/1304
to track
- [x] Revert https://github.com/cursorless-dev/cursorless/pull/1284
- [x] I have added
[tests](https://www.cursorless.org/docs/contributing/test-case-recorder/)
- [x] I have not broken the cheatsheet
- [x] Generate cursorless-vscode package.json automatically, and change
the name we use to `@cursorless/cursorless-vscode` in the `package.json`
checked into source control
- [x] Be sure to update meta-updater to check for that instead of name
`cursorless` (see fixme in its `index.ts`)
## Desiderata
- From https://github.com/cursorless-dev/cursorless/discussions/1289
### Correctly flagging errors
- [x] `D1`: It is a compile error to import external packages that are
not listed in `package.json`
- [x] `D1.1`: `vscode` (for some reason this one behaves strangely)
- [x] `D1.2`: Other packages
- [x] `D2`: It is **not** a compile error to import from local packages
that you depend on, using our preferred syntax (eg `@cursorless/foo`)
- [x] `D3`: It is a compile error to import from local packages that you
depend on, **not** using our preferred syntax (eg `../foo`)
- [x] `D4`: It is a compile error to import from local packages that you
do **not** depend on, either
- [x] `D4.1`: using our non-preferred syntax (eg `../packages/foo`), or
- [x] `D4.2`: using preferred syntax (eg `@cursorless/foo`)
- [ ] `D5`: It is a compile error to import from anything other than
`index.ts` in another module
- [x] `D5.1`: **no** `@cursorless/foo/bar`
- [x] `D5.2`: **no** `../foo/bar`
- [x] `a`: Even if you depend on the module
- [ ] `b`: Even if `bar` was re-exported in `foo/index.ts`. In that case
it should be required to import `@cursorless/foo`. Untested, but
probably works, and I ran out of steam 😅
- [x] `D6`: It is **not** a compile error to import external packages
listed in `package.json`
- [x] `D6.1`: `vscode` (for some reason this one behaves strangely)
- [x] `D6.2`: Other packages
### Auto-import
- [x] `D7`: Auto-import doesn't import from external packages not listed
in `package.json`
- [x] `D7.1`: `vscode` (for some reason this one behaves strangely)
- [x] `D7.2`: Other packages
- [x] `D8`: Auto-import imports from external packages listed in
`package.json`
- [x] `D8.1`: `vscode` (for some reason this one behaves strangely)
- [x] `D8.2`: Other packages
- [x] `D9`: Auto-import imports from local packages that you depend on,
using our preferred syntax (eg `@cursorless/foo`)
- [x] `D10`: Auto-import doesn't import from local packages that you
don't depend on
- [x] `D11`: Auto-import doesn't import from anything other than
`index.ts` in another package (eg **no** `@cursorless/foo/bar`)
- [x] `D11.1`: When you depend on the package
- [x] `D11.2`: When you don't depend on the package
### Other DX
- [x] `D12`: Find references across projects when no file from the
referencing project is open
- [x] `D13`: Rename across projects when no file from the referencing
project is open
- [x] `D14`: Jump to definition across projects
- [ ] `D15`: It is easy to move a file from one package to another
- [ ] `D16`: It is easy to create a new package
- [ ] `D17`: Breakpoints work in Cursorless extension
- [x] `D18`: Breakpoints work on Cursorless root website
- [ ] `D19`: Breakpoints work on Cursorless docs website
Fixed the v1 to v2 script to preserve order and not drop any values.
- [ ] ~~Use normalisation code for updating fixtures in
a4cee9611f/src/test/suite/recorded.test.ts (L130-L138~~)
(filed https://github.com/cursorless-dev/cursorless/issues/1168 to
follow up on this one)
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
Co-authored-by: David Vo <auscompgeek@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
I noticed that `eslint --fix` didn't remove unused imports and `eslint
src --ext ts` complained with a warning about an existing unused one:
```
$ eslint src --ext ts
.../src/core/commandVersionUpgrades/canonicalizeAndValidateCommand.ts
1:10 warning 'window' is defined but never used. Allowed unused vars must match /^_/u @typescript-eslint/no-unused-vars
```
I imagine this is because most people are fixing this up using the
Visual Studio Code action, but it's nice to have everything working from
the command line. Also JetBrains will only do it if `eslint --fix` does,
hence my motivation :)
This adds the configuration such that `eslint src --ext ts --fix`
removed unused imports, and fixes the existing unused imports in the
codebase. Let me know if I made a mistake.
## Checklist
- [ ] I have added
[tests](https://www.cursorless.org/docs/contributing/test-case-recorder/)
- [ ] I have updated the
[docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and
[cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet_html)
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
* Started working on our own replacement for vscode types
* remove unused imports
* More workl
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* more changes
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* More stuff
* Stuff stuff
* Some super secret clean up stuff
* Additional changes beyond human comprehension
* clean up
* Trans dimensional super fixes
* Mind boggling changes
* Hopefully done with this suffering
* Fixed circular dependencies
* Updated fake ide
* Added test for position
* Added range test
* Added getter to vscode editable editor implementation
* Convert position
* Added text line implementation
* Better handling of selections
* group document by uri
* Remove on use to vscode converter
* Clean up tests
* Make sure functions use arrow format
* Use weak map to keep track of text editors
* cleanup
* empty
* use arrow functions
* updated lock file
* restore normal methods for position and range
* Remove arrow expressions as method
* added is active on the text editor
* Error when trying to deselect all selections
* added types
* Make use of `@cursorless` imports
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Moved vscode utilities
* update
* Fixed stupid bug
* empty
* stuff
* stuff
* Added to empty range on position
* cleaned up vscode edit
* clean up
* clean up vscode focus editor
* move creation of text editors into ide
* cleanup
* moved get node at location into editor
* empty
* remove spread
* Add license reference
* use full vscode implementation
* Revert "moved get node at location into editor"
This reverts commit 4c2ec1cfab.
* remove location type
* Switch `getNodeAtLocation` to use document
* Use editable editor for performing edits
* Add `ide` reference to editable text editor
* docs
* Tweak
* tweak
* Fix bug with id / editor generation
* Remove unnecessary functions
* Tweak name
* merged vscode text editor implementations
* Add back comments about range adjustment
* Tweak docstrings
* docs
* add a couple tests
* Updated line behavior
* Test tweaks
* updated behavior
* added selection isEqual
* `isEqual` => `isRangeEqual`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* cleanup
* Capture more unit tests in launch config
* move `openNewEditor`
* Basic `TextLine` test
* Selection + more range tests
* yarn.lock tweak
* more line tests
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
* Added word separator setting. Removed language specific regex components.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Updated tests
* Word separator is now a list
* Update documentation
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Mock word separators for tests
* Minor tweaks
* Update src/core/tokenizerConfiguration.ts
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Revert "Minor tweaks"
This reverts commit b7f3695975.
* cleanup
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use join to create key
* Update src/core/tokenizer.ts
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
* Update docs
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
* Improve cheatsheet update machinery
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Tweak
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>