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.
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)
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
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
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.
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
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 ...
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.
Problem:
The variable spacemacs-layouts-restrict-spc-tab is defined in:
~/.emacs.d/layers/+spacemacs/spacemacs-layouts/config.el
But the spacemacs-layouts layer isn't loaded by default in spacemacs-base.
Solution:
Check if the variable is bound.
- Reordered the New layers under their correct parent directory:
layers/+<directory>
- Removed a duplicate entry for: multiple-cursors
- Removed the now empty Others heading
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
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.
- Removed the first line deletion.
This required the banners to have an empty first line.
- Removed the empty first line from the banners.
- Made sure that there is a single empty line between:
- The Version and Banner.
- Banner and Buttons ([?] [Homepage] ...).
- Version and Buttons (when the banner is hidden).
- Reordered the backend version insertion function call
to match the frontend Spacemacs buffer order.
- version
- banner
- buttons
Before it added:
- the banner
- then the buffers first line was removed
- then the version was added to the first line
- then the buttons were added at the bottom of the buffer
(there are more things added after the buttons,
but they haven't been changed by this commit).
- Removed the version insertion call in:
core/core-spacemacs-buffer.el
The changes above caused the version to appear twice
in the Spacemacs home buffer on startup.
I'm not sure if it has/had other uses.
This seems to be where it was first added to:
core-configuration-layer.el:
core: restore default mode line in home buffer
77161bd591
It was slightly modified in this commit:
core: defer distro insertion in home buffer
cd50d9c069
Here it was joined with the banner:
Fix version injection in home buffer
Don't inject version if banner is nil
a764eb4eb9
core: condensed versions into one string in left-hand side
spacemacs-version@emacs-version (distribution)
627e934453
- I had not seen that the version was joined with the
banner on purpose until now.
It seemed useful to still be able to see the versions
if one just wanted to hide the banner.
Therefore I opened this PR (it's been cherry-picked):
Uncouple version from banner in spacemacs buffer #11901https://github.com/syl20bnr/spacemacs/pull/11901
If there's a good reason to combine them again,
then the changes can be reverted.
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.
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.
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.
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=
The org-journal package from the org layer is writing this cache file to more
quickly compute the next journal date. While it's configurable via
`org-journal-cache-file`, by default it goes into the `user-emacs-directory` and
results in a dirty git status on spacemacs.
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
Use =counsel-ag= and =counsel-rg= when possible. They have more
optimizations, such as switching directory, the ability to turn
on and off casefold, etc. Counsel will also carry future
improvement with these two functions, and spacemacs will
automatically benefit from it.
Fix several problems with environment variable caching.
First, if a shell printed extra output besides the command output,
spacemacs//init-spacemacs-env included the extra output in .spacemacs.env.
For example, a login shell could print a motd, which would be erroneously
included in .spacemacs.env. To avoid this, spacemacs//init-spacemacs-env
now redirects the command output to a temporary file and then reads the
file.
Second, spacemacs//init-spacemacs-env sorted lines using the entire
"name=value" string for each line whereas the correct behavior is to sort
only on the "name" part. To fix this, spacemacs//init-spacemacs-env now
uses sort-regexp-fields with an appropriate regexp to match the "name" part
and ignore the "value" part.
Third, although load-env-vars-set-env added all PATH settings in
.spacemacs.env to exec-path, it set PATH to the first PATH setting in
.spacemacs.env. Now load-env-vars-set-env sets PATH from exec-path so that
it will reflect that combined value.
Fourth, load-env-vars-set-env set exec-path and PATH without consideration
to the operating system's directory separator. Now load-env-vars-set-env
converts backslashes to forward slashes when adding path entries to
exec-path and converts forward slashes to backslashes when setting PATH on
platforms that use backslashes.
Fifth, load-env-vars-set-env now normalizes exec-path by deleting trailing
slashes from path entries, converting drive letters in path entries to
lower-case, and deleting duplicate path entries.
Sixth, Spacemacs no longer uses exec-path-from-shell, but a changelog entry
said that it did. This commit corrects the changelog entry, deletes
another outdated entry, and merges two entries that covered the same
functionality.
Finally, this commit corrects several typos and tries to improve wording in
several docstrings, messages, and comments.
* CHANGELOG.develop: Delete mention of exec-path-from-shell, which
Spacemacs no longer uses by default. Delete mention of
dotspacemacs-import-env-vars-from-shell and
dotspacemacs-import-env-vars-shell-file-name, which no longer exist.
Merge entries about synchronizing environment variables.
* core/core-env.el (spacemacs-ignored-environment-variables): Fix typos and
mention that the strings are regexps that are matched against the names of
environment variables.
(spacemacs//init-spacemacs-env): Use a temporary file rather than standard
output in order to avoid getting motd and other noise. Sort lines using
only environment variables' names, not their values. Better describe the
behavior with respect to spacemacs-ignored-environment-variables, duplicate
settings, and PATH. Try to make wording clearer.
(spacemacs/edit-env): Fix typos in the docstring.
* core/libs/load-env-vars.el (load-env-vars-set-env): Fix typos in the
docstring. Delete trailing slashes from path entries in exec-path, convert
drive letters to lower-case, delete duplicate path entries, and convert
backslashes to forward slashes when setting exec-path. Set PATH from
exec-path, converting forward slashes to backslashes on platforms that use
backslashes.
problem:
renaming a file to it's current name, results in the message:
"File 'current-name' successfully renamed to 'current-name'"
solution:
when the new and old names are the same, show a rename failed message, and call
the rename function again
problem:
the rename command shows the same message:
"File 'old-file-name' successfully renamed to 'new-file-name'"
(without the directory path) for all three file operations:
move, rename and both move & rename
solution:
show messages that fit the rename operation,
and align the from and to path/file names,
to make it easier to see what changed.
And use the same message format when renaming a buffer.
It has already been bound to <kbd>C-backspace</kbd> and
<kbd>C-delete</kbd>. Such an
additional binding is redundant (if hjkl navigation is not used) and
makes the original <kbd>C-h</kbd> binding
(help) unavailable.
Loaded lsp-julia from melpa
And fixed#12852
spacemacs/go-setup-backend was incorrectly added to the hook:
julia-mode-local-vars-hook
The correct function is now added: spacemacs/julia-setup-lsp
correct a tick
The variable clojure-enable-linters can now be set to a list of linters:
'(clj-kondo joker)
or
'(joker squiggly)
or any other combination of the available linters.
In which case, all linters in the list will be active if they are
available to be. In that flycheck is configured so that each linter
in the list has as next-checker the next linter in the list.
The variable can also now be set to:
'joker
If only the newly added joker linter should be used.
This will pull down flycheck-joker and add Joker as a checker for
Clojure modes.
--
Implementation Details
The way it works is that for each Clojure linting mode, clj, cljc,
cljs and edn, a primary linter is chosen based on the order the
user specifies in clojure-enable-linters which support that mode.
It is made the primary linter for flycheck to use by being promoted
to the front of the flycheck-checkers list. All other linters specified
by the user which the mode also supports get added to it as a
next-checker.
Tested with clj-kondo, joker and squiggly. The only issue I saw was that
the way flycheck-clojure works, and the way I currently have setup the
logic for multiple checkers mean that we can't add to a mode multiple
checkers for the same linter. flycheck-clojure has eastwood, kibit and
core.typed. If you have it configured to use eastwood linter, then it
will all work, as eastwood gets added as the next-checker. But if you
have it disabled in flycheck-clojure, there won't be any
flycheck-clojure linters to activate. I'm not sure as of now how to best
support that. Ideally, we would not clubber linters into a single packge
like that, and so the layer would have instead of squiggly: eastwood,
kibit, core.typed. But that's not how flycheck-clojure works. Future
commit might be able to do something smarter about this.
Effectively, this forces `vterm` to spawn a shell set in a
`shell-default-term-shell` variable i/o default "/bin/bash" - just like
other shells from `shell-pop` do.
add auto-completion-enable-help-tooltip support
add auto-completion-use-company-box option and update document
add company-box config source url, remove empty line and join single line parenthesis
hide company-box mode line
update CHANGELOG.develop
hide doc popup when selection changed
add all-the-icon in auto-completion-packages
move icons config to auto-completion/init-all-the-icons according to duianto's advice
counsel-git find a file in the current git repository. "gff" is
currently bound to magit-find-file. While counsel-git seemingly performs the
same functionality as magit-find-file, they are substantially different:
magit-find-file is not intended to find a file, contrary to what the
name indicates. See https://github.com/magit/magit/issues/3967 for
explanation. This is why we need another key binding for counsel-git.
Delete integration code for git-link and git-timemachine, which is
superseded by upstream changes to git-link committed in August 2016:
433ba1dba7
* CHANGELOG.develop: Add an entry for this change.
* layers/+source-control/git/funcs.el (spacemacs/git-link-copy-url-only):
Replace call to spacemacs/git-link with a call to git-link.
(spacemacs/git-link-commit-copy-url-only): Replace call to
spacemacs/git-link-commit with a call to git-link-commit.
(spacemacs/git-link, spacemacs/git-link-commit): Delete functions.
* layers/+source-control/git/packages.el (git/init-git-link): Replace
binding to spacemacs/git-link with a binding to git-link.
counsel-more-chars was renamed to ivy-more-chars a year ago:
Move counsel-more-chars-alist and counsel-more-chars to ivy.el.
4461ef302a
with an alias to counsel-more-chars.
The alias was removed 2 days ago:
ivy.el: Clean up obsolete aliases
1a9002bf4b
Use a dynamic hint for the smerge transient state in order to show the
current and total numbers of conflicts, and make the full hint toggleable.
* CHANGELOG.develop: Add an entry for this change.
* layers/+source-control/version-control/config.el
(spacemacs--smerge-ts-full-hint-toggle): New variable.
* layers/+source-control/version-control/funcs.el
(spacemacs//smerge-ts-hint): New function. Return a string indicating the
index of the current conflict and the total number of conflicts detected by
smerge-mode. If spacemacs--smerge-ts-full-hint-toggle is true, append the
smerge transient state's full hint.
(spacemacs//smerge-ts-toggle-hint): Toggle showing the full hint for the
smerge transient state.
* layers/+source-control/version-control/packages.el
(version-control/init-smerge-mode): Define the transient state in :init so
we can use spacemacs|transient-state-format-hint. Use
spacemacs//smerge-ts-hint to display a dynamic hint. Bind the ? key to
spacemacs//smerge-ts-toggle-hint.
Instead of using a single variable for all transient states' full-hint
toggle functions, define a unique variable for each toggle function so that
toggling the full hint for one transient state does not affect the others.
* CHANGELOG.develop: Add an entry for this change.
* layers/+spacemacs/spacemacs-defaults/keybindings.el
(spacemacs--window-manipulation-ts-full-hint-toggle): New variable.
(spacemacs//window-manipulation-ts-toggle-hint)
(spacemacs//window-manipulation-ts-hint): Replace
spacemacs--ts-full-hint-toggle with
spacemacs--window-manipulation-ts-full-hint-toggle.
* layers/+spacemacs/spacemacs-layouts/config.el
(spacemacs--ts-full-hint-toggle): Delete variable.
(spacemacs--layouts-ts-full-hint-toggle)
(spacemacs--workspaces-ts-full-hint-toggle): New variables.
* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//layouts-ts-toggle-hint, spacemacs//layouts-ts-hint): Replace
spacemacs--ts-full-hint-toggle with spacemacs--layouts-ts-full-hint-toggle.
(spacemacs//workspaces-ts-toggle-hint, spacemacs//workspaces-ts-hint):
Replace spacemacs--ts-full-hint-toggle with
spacemacs--workspaces-ts-full-hint-toggle.
The react layer relies on the javascript layer and uses multiple values
from it including definition of a formatter. However, the react layer
does not respect the javascript layer setting for formatting a file on
save.
This patch configures the react layer to add a before save hook that
calls the javascript layer formatting function when the
'javascript-fmt-on-save variable is enabled.
Context:
When using org files, one normally tends to add Github code links to an
algorithm/bug explanation so that readers are able to follow along with a PR
change.
The current `<SPC> g l L` command gets us the URL to the current branch; given
the code is in flux, the link becomes non-sensical rather quickly, loosing value
when trying to build a document with explanations about the code.
This PR allows us to get the Permalink (e.g. link associated to the commit, not
the branch); using this, the URL contents will never change with new commits
submitted to the repository.
Changes:
* Add two new functions with associated keybindings:
- `<SPC> g l p` maps to `spacemacs/git-permalink`
- `<SPC> g l P` maps to `spacemacs/git-permalink-copy-url-only`
* The above changes rely on mechanisms of `git-link`, so no new code needs to
be introduced
dart-mode has been split into two packages:
- dart-mode, Provides basic syntax highlighting and indentation.
- dart-server, Factors out the features from dart-mode.el that relied on
external executables, thus improving availability, reliability, testing and
development of dart-mode.el.