-
-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
emacs plugin development track #275
Comments
We can now link to e.g. https://quick-lint-js.com/errors/#E001. Is an HTTP link the preferred error-explainer? Or should we bundle something with qljs or with the Emacs plugin? |
This looks cool! I'm concerned about crashes, hangs, and leaks in qljs causing Emacs to crash, hang, or leak, though. A separate server is a safer (though less efficient and probably harder to implement) option. |
Are you referring to the following text?
My interpretation is that the package can't be in the same SCM repo as another package. I don't interpret this to mean that a package needs a dedicated SCM repo containing no other code. |
Yes, i assumed that we would have multiple packages there, but actual thinking about this it's far better to have one, all included package. Removed.
ESLint checker does offer it as https://eslint.org/docs/rules/N |
Fixes quick-lint#263 Updates quick-lint#275 Signed-off-by: wagner riffel <[email protected]>
Fixes quick-lint#263 Updates quick-lint#275 Signed-off-by: wagner riffel <[email protected]>
Fixes quick-lint#263 Updates quick-lint#275 Signed-off-by: wagner riffel <[email protected]>
Fixes quick-lint#263 Updates quick-lint#275 Signed-off-by: wagner riffel <[email protected]>
I made src/quick-lint-js/c-api.h which exposes functions for the VS Code plugin and for the website demo. We could do something similar for the Emacs plugin. However, I'm wary of putting quick-lint-js in the same process as Emacs.
Do you plan on developing this yourself? Do you want help? |
Hi, sorry for the delay, somehow I missed the notification for your I thought we already had some infrastructure in the codebase for doing The primary motivation for that is to avoid recreating quick-lint-js |
Does emacs support shared memory? Could we share the byte buffer used to store the source code? Or share a copy of it? If so, we could do shared memory + pipes/semaphores/something, which would give us good performance (I hope) and crash tolerance. How fast would copying the whole buffer in emacs on each buffer change be? quick-lint-js' LSP plugin already copies the whole buffer every change ( quick-lint-js/src/document.cpp Lines 39 to 57 in 47447bb
Maybe I should prototype a shared memory solution myself to test this idea. This mechanism might be useful for plugins for other editors too.
👍
For quick-lint-js -> emacs messages, we can easily have quick-lint-js emit elisp. We don't use simdjson for writing JSON; simdjson only parses JSON. Writing JSON is done with string concatenation: quick-lint-js/src/lsp-error-reporter.cpp Lines 53 to 105 in 47447bb
For emacs -> quick-lint-js messages, we could do anything. I'd be fine with a custom text or binary format, or a JSON format, or an elisp format. I'm biased toward writing as little elisp as possible because I assume elisp is slow compared to C++. |
This is a sentinel issue to track what arrived from the discussion in pull request #264
Flycheck
:errors-explainer
blocker: Document all error codes #206:standard-input
blocker: add support for reading from standard input #263MELPA
according to the project's contributing, we are missing:
Flymake
LSP
lsp-mode integrates with flycheck, it should be already working, but it needs test and automated testing
NPMEither detect quick-lint-js version currently installed with npm, or provide conveniences for users doing that, for example,ivy
exposes some utility functions for filling its selection buffer from shell commands (https://oremacs.com/swiper/#global-key-bindings), we can do something akin allowing the user to choose which quick-lint-js finder function to run.see #409 (comment)
Lint Server
currently linters just re-executes quick-lint-js to get new errors, we need a more efficient way of offering errors, our target Emacs version for that is 24.5 (ubuntu 18.04).
Emacs 25 has added dynamic modules, im not sure how well supported is Windows, I assume it has problems because some of
their api have posix specifics exposed, such as
struct timespec
.So we need to decice between a C ABI, or go with a custom protocol on top of either tcp/udp/unix, rtags achives this with unix socket communication, which also needs workarounds on Windows.
The text was updated successfully, but these errors were encountered: