* Configure java +lsp test runner via dap-mode
This configures dap-mode appropriately so the user can run tests
directly from Doom. It adds two bindings as well which tries to mirror
other major modes:
* `SPC m t t` runs all the tests in the class at point.
* `SPC m t s` runs a single test method at point.
I also expanded the README with more details about configuring `+lsp`.
* Add +java/run-test, document +lsp/uninstall-server
* Add +java/debug-test
* Fix localleader bindings
When in `:init` they don't load in time on the initial Java buffer.
This is a first pass at making `+lsp` more functional:
* Fix lsp not starting automatically when opening java-mode buffers.
Placing it in the lsp-java hook does not work.
* Enable the code lens for test classes.
* Add a keybinding/function to easily update the eclipse LSP server.
* Add a keybinding to bring up the lsp-jt-browser (the treemacs based
browser that lists all the project tests).
* Fix root path for lsp-jt.
There are still a lot of rough edges here, and I don't think it's quite
usable yet, mostly due to issues around the java test mode (lsp-jt). The other
functionality all seems to work well though.
* Added template and description for module flags
Because +lsp and +meghanada are mutually exclusive I thought I would
create a separate section for each feature and add descriptions what
they each offer. So far only +lsp is done.
* First draft for java documentation
The second plugin +meghanada is explained as well as some instructions
how to install JDK 11 and OpenJDK 11.
* Do requested edits to README
* Regenerate TOC in readme
* Reformat README
Co-authored-by: Henrik Lissner <accounts@v0.io>
Introduces a select few of the localleader keybind standards proposed in
issue #1270, corrects a few typos and introduces more localleader
keybinds in general.
Co-authored-by: yuhan0 <>
This update may potentially break your usage of add-hook! if you pass
the :local or :append properties to it. This is how they used to work:
(add-hook! :append 'some-mode-hook #'do-something)
Thsoe properties must now follow the hooks, e.g.
(add-hook! 'some-mode-hook :append #'do-something)
Other changes:
- Various add-hook calls have been renamed to add-hook! because I
incorrectly assumed `defun` always returned its definition's symbol,
when in fact, its return value is "undefined" (so sayeth the
documentation). This should fix#1597.
- This update adds the ability to add multiple functions to hooks
without a list:
(add-hook! 'some-mode-hook
#'do-something
#'do-something-else)
- The indentation logic has been changed so that consecutive function
symbols at indented at the same level as the first argument, but forms
are indent like a defun.
(add-hook! 'some-mode-hook
#'do-something
#'do-something-else)
(add-hook! 'some-mode-hook
(message "Hello"))
Calling this pivotal macro "def-package!" has frequently been a source
of confusion. It is a thin wrapper around use-package, and it should be
obvious that it is so. For this reason, and to match the naming
convention used with other convenience macros/wrappers, it is now
use-package!.
Also changes def-package-hook! -> use-package-hook!
The old macros are now marked obsolete and will be removed when straight
integration is merged.
Still needs to be documented, but includes support for the following
languages:
+ C/C++/ObjC
+ Go
+ Java
+ Javascript
+ OCaml
+ PHP
+ Python
+ Ruby
+ Scala
+ Swift
+ HTML/CSS
Relevant to #460, #716, #1186
Initialize it globally and turn it off where needed, instead of enabling
it on demand. Also fixes void-function: flycheck-mode errors when
:feature syntax-checker is disabled. This is experimental.
Indirectly fixes#710
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!
I am slowly phasing out the setting system (def-setting! and set!),
starting with these.
What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.
The old set! function will still work, for a while.
load!'s first argument is no longer a symbol (that will cause
void-variable errors now) to save on unnecessary interning and simplify
compile-time logic. It accepts any valid form that evaluates to a string
now.
If you use load!, you need to change its argument to a string!
e.g. (load! +my-module) => (load! "+my-module")
Now that we are loading package autoloads files (as part of the
generated doom-package-autoload-file when running make autoloads), many
:commands properties are redundant. In fact, many def-package! blocks
are redundant.
In some cases, we can do without a config.el file entirely, and can move
into the autoloads file or rely entirely on package autoloads.
Also, many settings have been moved in their module's autoloads files,
which makes them available ASAP; their use no longer depends on module
load order.
This gained me a modest ~10% boost in startup speed.