Instructoins on the following external dependencies required by certain
functions are added/updated to the README file:
- `cargo-edit`
- `cargo-audit`
- `rustfmt`
- `clippy`
Signed-off-by: Lucius Hu <lebensterben@users.noreply.github.com>
Clojure (CIDER) is missing the incredibly useful function that jumps to the end
of the line and evaluates the last s-expression.
This function is in Emacs Lisp major mode under `SPC m e $` and `SPC m e l`
The function `spacemacs/cider-eval-sexp-end-of-line` is a copy of
`lisp-state-eval-end-of-line` with the last line replaced to call the equivalent
cider function, `cider-eval-last-sexp`.
The same keybindings are added to the Clojure layer as used for elisp.
The keybindings follow the Spacemacs convention for evaluation, as defined in
https://github.com/syl20bnr/spacemacs/blob/master/doc/CONVENTIONS.org#evaluationResolves#4124
When purpose mode is enabled, Spacemacs fails to assign correct mu4e buffers to
correct windows when we're in headers view and select an e-mail from the list.
Since `*mu4e-headers*` and `*mu4e-view*` buffers have the same purpose
name (`mail`), and `*mu4e-loading*` buffer is either `fundamental` (or with a
recent version of upstream mu4e `mu4e-loading-mode`) which has the purpose
`general`.
So what happens is, when we select an e-mail from the list, e-mail opens up at
the headers' window, and loading opens up in the lower window which should have
displayed the actual email content.
With this commit, there will be two purpose names which will prevent this issue
from happening.
This is a squashed commit it contains:
- Added new sections on `cargo-edit`, `cargo-audit`, and `Clippy`,
which are used for several key-bindings in this layer.
- Re-ordered the `Key bindings` section, added entries for new bidings,
and improved description.
- ~SPC m c a~ for =cargo add=
- ~SPC m c r~ for =cargo rm=
- ~SPC m c U~ for =cargo upgrade=
- ~SPC m c A~ for =cargo audit=
- ~SPC m c X~ is for =cargo run --bin= now, instead of =cargo run --example=,
which is bound to ~SPC m c E~
I have noticed that most commands from the sphinx layer stopped working while
I was working on the restructured text layer.
This commit tries to jurry rig this package back into a working state.
It does not solve all issues we have in this package to do so a major
rewrite would be in order.
I have fixed:
- An endless loop caused by a failing search for a conf.py
- Fixed all compile commands
- Add a more detailed description of the meaning of the necessary config
variables in the doc.
This layer supported the very old linum and the non working
auto-complete-rst package. The later is not longer maintained
and does not work with up-to-date releases of sphinx causing
To fix the issue I have disabled `linum` and `auto-complete-rst`.
There is a popular question about openning file in exact window.
There is an ace mode for that, but it is not so clear how to use
it for new users.
That commmit add information how to use ace mode and how tweak it
based on information from https://github.com/Alexander-Miller/treemacs/issues/266
Add installation instruction for `sqlfmt` executable
Adapt documentation to be more like the other layers
Replace wrong default sqlfmt parameter -u with --use-spaces
Make error buffers be reused by default to reduce memory consumption
Change prefix for repl keybindings to be conform with the other layers
Remove obsolete progn statement
Enhances `sqlfmt` support in SQL layer.
`sqlfmt` was only being applied against the whole buffer, and did not allow
invocation against a specific region in the buffer. `sqlfmt` customize options
were not included under the `sql` group. It was not possible to control if
`sqlfmt` reused an existing error buffer or generated new ones.
- Added `sqlfmt-region` interactive command and binding under `sql-mode` keymap
- `sqlfmt-buffer` calls into `sqlfmt-region` with `(point-min)` and
`(point-max`)
- Added `sqlfmt` customize group as child to `sql` customize group
- Added `sqlfmt-reuse-error-buffer` option
- Updated `sql` layer documentation to reflect changes
The warning:
nlinum layer is deprecated for Emacs 26.1 and above
wasn't shown until SPC h SPC was pressed.
Because the variable: configuration-layer--used-layers
wasn't populated before the warning check occurred in
nlinum/packages.el.
The solution (suggested by syl20bnr) was to move the
check to a new file: nlinum/config.el.
When entering insert mode, don't start editing in the middle of the prompt text.
That is, given:
~/foo/bar> some command
^ ^ ^
A B C
Cursor A will jump to position C but cursor B won't.
Edit by duianto
This also stops the cursor from jumping to the end of the last line,
when entering insert state, from all but the last line in a multi line.
Example:
~/foo/bar>(+
1{cursor in normal state on the 1}
2)
Entering insert state: i
Before:
~/foo/bar>(+
1
2){cursor in insert state after the close parenthesis}
After:
~/foo/bar>(+
{cursor in insert state before the 1}1
2)
`lsp-mode` supports two LSP server backend for Rust language, i.e.
`rls` and `rust-analyzer`.
`rust-analyzer` is experimental and lacks certain functionalities
such as `DAP` support.
`lsp-mode` provides a function `lsp-rust-switch-server` that changes
the priority of LSP server backend for *new* LSP session.
This commit adds a key binding `SPC m s s` to `lsp-rust-switch-server`.
There's no keybinding for markdown-insert-kbd alongside all the other
markdown-insert-* keybindings, this patch adds one using the same
convention (specifically xk).
even though we have a check if doom is actually set in
dotspacemacs-mode-line-theme in doom mode line init function. doom-modeline
still adds a bunch functions to hook `after-change-functions regardless of the
value of mode line theme name. Hence we need to put a toggle on the declaration
The cl package has been deprecated.
It had aliases for cl- prefixed commands without the cl- prefix.
Ex: letf or letf* instead of cl-letf or cl-letf*
On the `spacemacs-base` distribution, with the `ivy` layer.
When one tries to search with `SPC /`
(which calls `spacemacs/counsel-search`)
Then this error message is shown:
>spacemacs/counsel-search: Symbol’s function definition is void: letf*
It doesn't happen with the `helm` layer,
because it's search commands already has the `cl-` prefix.
There are also three instances of: `letf`
in the `spacemacs-editing-visual` layers functions:
- `spacemacs/toggle-centered-buffer` (`SPC w c c`)
- `spacemacs/toggle-distraction-free` (`SPC w c C`)
- `spacemacs/centered-buffer-transient-state` (`SPC w c .`)
Without the `cl-` prefix they show the error message:
>Symbol’s function definition is void: letf
Previously, this would try to add the lsp jump handler to the mode's jump
handler list every time lsp started managing a buffer of that mode. Now, we only
use the lsp jump handler for buffers managed by lsp.
Per discussion in #13164, we have a standard, consistent technique for doing
this across any layer. Provided that `global-company-mode` is not set, this
works as expected to disable company without requiring custom variables.
Added keybindings for the Sesman REPL session management commands to the Clojure
layer, following the Spacemacs keybinding conventions.
https://docs.cider.mx/cider/0.23/usage/managing_connections.html
Sesman has been a part of CIDER for many versions now and provides session
management for nREPL connections (in fact any connections).
Sesman keybinds are placed in the `SPC m c` menu, providing a cleaner separation
between sending code to the repl and session management.
See issue #12593 and PR #13140 which covers the background for the design of
these additional keybindings.
Formatting the region and defun keybinds have been added, along with formatting
for edn files. Moved to `=` menu to match Spacemacs convention.
Evaluation up to point keybinding has also been added.
Documentation in the README has been updated to complete the description of the
existing Clojure layer, as well as including details specific to the new
keybindings.
Bind `SPC x d l` to `delete-blank-lines` (default: `C-x C-o`)
If the cursor is on a blank line:
- with blank lines above or below, then they are reduced to only one.
- without blank lines above or below, then the blank line is removed.
destructuring-bind is a macro in the deprecated package: cl
SPC-TAB calls: spacemacs/alternate-buffer
In the spacemacs-base distribution, it shows the message:
spacemacs/alternate-buffer: Symbol’s function definition is void: destructuring-bind
Also renamed three instances of destructuring-bind in the rirc layer.
The snippets seem to have been accidentally changed in this commit:
a2de9a63af (diff-75e0388987cdf040d82762426e40e5a5R434)
where other instances of checking for a layer, were changed to check for a
package.
It doesn't work to check if the haskell package is used in the user config
section, because the haskell package hasn't loaded yet.
Reverting it to check if the haskell layer is used works.
I would expect the default sort order in treemacs to be alphabetically
ascending, and indeed until recently it appeared to be so. But the
setting in spacemacs is `alphabetic-desc`, and has been ever since the
layer was introduced. How did this work?
The answer is https://github.com/Alexander-Miller/treemacs/pull/577.
Until recently the alphabetical ascending/descending orders were swapped
accidentally. So we need to now (more logically) set the sort order to
`alphabetic-asc`.
Spacemacs configures `org-present` to inline images while presenting. That much
makes sense. But it has a hook to turn them off unconditionally when exiting
presentation mode. This causes a problem if you just want images to show in and
out of presentation mode.
STEPS TO REPRODUCE
1. Create an Org file
2. Add a link to a file
3. Set `#+STARTUP: inlineimages`
4. `M-x org-present`
5. Exit presentation mode
EXPECTED
Because of `#+STARTUP: inlineimages` images are still inlined.
ACTUAL
The inline images have been removed upon exiting the presentation mode.
FIX
Check `org-startup-with-inline-images` on exiting presentation mode and only
remove the inline images if it is false.
TESTING
To ensure that this did not introduce a regression of the converse behavior, I
also tested with `#+STARTUP: noinlineimages`, and it still turned off the images
when exiting the presentation.
The function: helm-org-get-candidates was removed upstream.
Improvements:
Recenter the target candidate.
Reversed the helm headings list, to match the order of the
questions in FAQ.org, so that the Common questions are
listed first.
Removed the : (colon) after the heading: How do I
in FAQ.org, to match the other parent headings.
Add Spacemacs keybindings to the Clojure layer for all the sesman functions.
Sesman has been a part of CIDER for many versions now and provides session
management for nREPL connections (in fact any connections).
Several keybindings relating to the use of a specific repl been migrated the
`e` evaluation menu and `es` sent-to-repl-buffer sub-menu, providing a cleaner
separation between repl connection and session management and interacting with a
specific repl.
Updated layer documentation and keybindings in README.org file.
Added changes to CHANGELOG.develop
Resolves#12593
Make rainbow-identifiers not colorize special operators and macros, so they
always visually stand out. Rationale behind this change is that special
operators and macros in Lisp may be considered "syntax" elements, so it makes
sense to have them visually distinguished at all times.
Add key bindings to the `SPC p l` persp switch project prompt:
- helm `C-d`
- ivy `d` in the `M-o` actions list
They create a new perspective with the project name
and open a dired buffer at the project root.
The suggestion to also add it to ivy was provided by nixmaniack.
On some Nix setups, company completion via the Nix repl process can be extremely
slow and hang emacs. This commit adds an option toggle to disable it in the
`nixos` layer. The default behavior is unchanged.
Also updates the comment and license headers to be consistent with other layers.
org has changed its file naming for the notmuch add-on from
org-notmuch to ol-notmuch.
org-mode commit 499c0a50cc4b11e37b91374af23cb27ab8fc20d2.
Fix the require to reflect this change.
Signed-off-by: Loys Ollivier <loys.ollivier@gmail.com>
- Fixed setting dap-java shortcuts - ATM the shortcuts were not enabled due to
the fact that dap-mode configuration was overriding them since it was running
after this piece of code
- removed configuration code about lsp-java since it was either about
missing properties or about setting defaults already set by lsp-mode/lsp-java
(e. g. lsp-eldoc-render-all is now nil by default)
If a user uses ripgrep persistent configuration file that sets options
helm overrides the argument parser for ripgrep might incorrectly parse
the command line used by helm.
The problem is encountered whenever an argument option occurs multiple
times and the last one is of this form: '--arg value' or '-a v'. If that
last argument is followed by the positional argument (input) then its
value will be treated as the input resulting in error due to too many
positional arguments.
In other worlds, this would fail to be parsed correctly:
rg --max-columns=10 --max-columns 20 input
rg --max-columns 10 --max-columns 20 input
While this works as expected:
rg --max-columns=10 --max-columns=20 input
rg --max-columns 10 --max-columns=20 input
The solution would be to use arguments in the form of '--arg=value'
which will never be treated as a positional argument.
Fixes#10953
See #10825.
Try to match more closely the build process followed upstream:
- Force module build mode, which builds the latest stable release (not master),
and takes care of module replacements.
- Disable cgo.
- The -trimpath argument to go get requires go >= 1.13, which is also needed
because go <= 1.12 has a bug that causes problems with golangci-lint², as
explained in the golangci-lint installation instructions².
Note that the only thing that is missing to exactly match the upstream build
process is the addition of some -X variables, which only affect the data
reported by golangci-lint version.
¹: https://github.com/golang/go/issues/29612
²: https://github.com/golangci/golangci-lint#install
Thanks to @dbriemann and @seriousben for reporting and clarifying this issue!
Usage of the `:if` keyword with `use-package` does not prevent Spacemacs form
installing the package, it only prevents the loading in run-time. This commit
employs the `:toggle` feature of the configuration layer system to prevent the
unneeded packages from being installed in the first place.
This further improves upon 31324f68bb
removing the `lexical-let` caused the intended closure to be invalid. the
filename being compiled was nil when the compilation-finish-function was
run.
this adds a special var to hold the temp file being compiled instead, and
tries to narrow down the compilation-finish-function to only run when the
compilation buffer includes the "rustc -o /tmp" regexp
Before the ruby layer was only requiring standalone lsp layer,
however with the latest changes dap support has been added
therefore I have updated the layer file to require the full
dap layer instead which in turn requires the lsp layer.
I have:
- Revised the documentation to be more clear about the possible backends
- Simplified the lsp setup code
- Removed redundant loading of company-lsp (is done by lsp-mode already)
- Made lsp the default backend for dart and mentioned that the analyser is
deprecated
An older PR reintroduced a dependency on lexical let.
There is no proper replacement for this in cl-lib therefore
I have changed it to a normal let which works the same
way.
In future we should think of making the entire file lexically bound
and only mark the exceptions to be dynamically bound.
Introduced in PR #11949, terminal-here wasn't wrapped in `use-package'. This
made it impossible to use `spacemacs|use-package-add-hook' to customize it.
keyboard-layout was broken by commit da80634, which replaced cl by
cl-lib. Some function calls weren’t replaced. There may be old calls
remaining in other layers.
I have tried to integrate flow-js2-mode into flow-type in addition
I have fixed a couple of issues in the layer and replaced obsolete
react-mode bindings with rjsx-mode bindings.
This allows to use quick run when the default shell is not bash-compatible.
I also fixed the output name by using a digest of the filename rather
than always a new file as I noted that my /tmp got cluttered with 4MiB
files pretty quickly, and I was just using a hello-world like file.
and `SPC s B`
When one invokes `spacemacs/swiper-region-or-symbol` (`SPC s S`) or
`spacemacs/swiper-all-region-or-symbol` (`SPC s B`) with active visual selection
(transient-mark-mode), the selection expands over the buffer while one jumps
around with swiper. Thus I believe it is appropriate to deactivate visual
selection within the above command.
Since the mentioned commands both use identical code for getting the text to
operate on, I moved that code into a separate function.
`man` command displays output from the external program with the same name,
so it will generally fail to work on Windows.
`woman` is a pure elisp parser for manpages, so it will work on Windows. But
`woman` lacks colorizing of manpages, so we only use it as a fallback.
`display-fill-column-indicator-mode` is a new native fill column indicator
mode implemented on C-level, thus has almost no performance penalty in contrast
with the legacy `fci-mode` implemented in elisp.
This commit implements conditional activation of the mentioned mode on
Emacs 27+. `fci-mode` is still available for previous Emacs versions.
Resolves#12884
Make LSP be used as default backend
Request DAP layer when LSP is used as backend
Update README.org with latest pyls package dependencies
Remove obsolete getter functions
Update the version of metals referenced in the metals installation
instructions, so that an old version of the metals binary doesn't get installed
by accident.
Added undocumented keybindings to README.org
Moved bindings from top level to application specific
Fix some smaller documentation issues
Added "quickurls" file to .gitignore
~org-mime-htmlize-subtree~ as has the ability to set the email =To=, =From=,
=Subject=, =CC=, and =BCC= fields based on properties. If you commonly capture
and email the subtree being able to bake these settings into your template is
very convenient.
https://github.com/org-mime/org-mime#m-x-org-mime-org-subtree-htmlize
~org-mime-org-subtree-htmlize~ is similar to ~org-mime-org-buffer-htmlize~ but
works on subtree. It can also read subtree properties =MAIL_SUBJECT=, =MAIL_TO=,
=MAIL_CC=, and =MAIL_BCC=. Here is the sample of subtree:
,,* mail one
:PROPERTIES:
:MAIL_SUBJECT: mail title
:MAIL_TO: person1@gmail.com
:MAIL_CC: person2@gmail.com
:MAIL_BCC: person3@gmail.com
:END:
content ...
- lsp-mode supports defining remote versions of each clients(e. g. clangd which
works over tramp). Before this change the language server will be disabled
because it has different server-id.
Add a full/minified transient state toggle.
Grouped backend transient state key bindings by column.
Moved the html/init-web-mode :init section before the :config section.
The helpful layer delivers more sophisticated help buffers,
at least for elisp and emacs specific objects. Therefore
it makes sense to replace the existing help functions for
these bindings silently if this layer is loaded.
Integrated terminal emulators/integrated shells get the job done for
quick-and-dirty shell commands, but a lot of people take great care to tweak
their terminal workflow exactly to their liking. This makes it possible to
switch to that workflow seamlessly, by opening their terminal emulator of
choosing in the current directory or at the project root, and even supports
working over `ssh` using `tramp`.
Make doc more clearly describe which tools belong to which backend.
Change keybindings to be consistent with spacemacs conventions.
Simplify LSP layer code.
Fixes#11878
The issue seems to have been caused by helm making sure that
the functions that are called with: helm-exit-and-execute-action
are actions.
Ensure action is available before running it
d6dfb8f1e3
Helm:
SPC C l calls helm-colors
SPC h d F calls spacemacs/helm-faces
Ivy:
SPC C e calls counsel-colors-emacs
SPC C f calls counsel-colors-faces
SPC C w calls counsel-colors-web
SPC h d F calls counsel-describe-face
Thanks Miciah for the SPC h d F suggestion.
doom-modeline-init was marked as obsolete in version: 1.6.0.
Add new mode: doom-modeline-mode.
868f1bb00b
The doom-modeline package is currently at version: 2.6.2.
This environment variable is used by python LSP to determine
the pyenv virtual environment to use. When switching to a different
project using projectile 'switch-to-project', it should only be
necessary to restart the LSP server but a restart will only
work if this VIRTUAL_ENV changes value too.
Adjust the documentation to be more clear how to activate the new lsp feature.
Simplify layer setup code.
Provide missing company-lsp integration in feature list.
Remove obsolete tests for a loaded lsp layer as the docker layer loads it
itself already.
Improve documentation to be clear about the choices of backends.
Remove obsolete functions.
Make sure that company-lua is only loaded when the right backend is used.
Make keybindings conform to conventions.
Removed the following key bindings from the multiple-cursors layer:
grI evil-mc-make-cursor-in-visual-selection-beg
grA evil-mc-make-cursor-in-visual-selection-end
because they have been added upstream in the evil-mc package.
Changed the changelog.develop entry from saying that they were
added to the layer, to say that they were documented in the layer.
Removed the parentheses around the buffer name number,
because the angle brackets are enough.
Added the frame argument.
Rewrote the accepted SPLIT arguments as a table.
The commit 9c613b8 introduced a regression for ivy users that use ag or rg as
the search tool. It made `C-c C-e` and `F3` keybindings unavailable, and thus
making it impossible to make multi-file edits.
Partially fixes#12838
The newly introduced function to compile an elpa package
was very much redundant with the existing recompile-elpa function.
I have adapted recompile-elpa so that it can be used for the helm action too.
In addition I have bound recompile-elpa to `SPC c C-c` to allow users to
easily recompile their entire elpa directory if the need arises.
I have also removed the error handling in the helm action in favor of
standard error reporting via the *Compile-Log* buffer.
How to use: `SCP h p` select package then `F3` or `C-z` and choose `Recompile`
Motivation: Some packages when compiling need other packages to be loaded first.
The pacakage maintainers should make sure of this requirement but sommetimes
they don't. It also doesn't help when Spacemacs is lazy loading and compiles
updated pacakges on startup. So the manual fix for this problem is recompile the
package once Spacemacs has fully loaded. This requires user go to the package
install location to delete elc files and then do a `spacemacs/recompile-elpa`.
This commit will do that chore for them.
This will make fixing the problem with `org-plus-contrib` or `dumb-jump` update
every now and then easier.
- Removed the word `Manipulation` from the transient state titles:
- Buffer Manipulation Transient State and Window Manipulation TS
- Expanded the TS abbreviation to Transient State
- Documented the Buffer Transient State key binding:
`q` to quit the transient state
- Capitalized `Transient State` in the titles
- Window Transient State:
- Added a line break after the title in the folded hint.
This allows for more keys to be visible horizontally.
- Moved up the [?] help key after the title, so that
it's in the same place in both the folded and full
transient state.
The search next/previous commands are different
because of the `evil-search-module' values:
vim = evil-search
hybrid = isearch
- With the =vim= editing style in =normal= state:
- ~n~ =evil-ex-search-next=
- ~N~ =evil-ex-search-previous=
- With the =hybrid= editing style in =normal= state:
- ~n~ =evil-search-next=
- ~N~ =evil-search-previous=
Added evil-mc make cursors from selection key bindings:
grI calls evil-mc-make-cursor-in-visual-selection-beg
grA calls evil-mc-make-cursor-in-visual-selection-end
Front end:
minified hint:
- Added `a`
- Sorted `w` alphabetically
full hint:
Sorted keys alphabetically:
- Select: a, o, w
- Other: d, D, u, U
Back end:
Grouped the keys by the transient state columns
To activate javascript-eslint all lsp layers where
running eslint during lsp-ui flycheck phase. This
caused a lot of side effects and has been deactivated
for now. Eslint shall be called by the lsp server instead.