Commit Graph

65 Commits

Author SHA1 Message Date
5cc4056abf fix(format): +format-with-eglot-fn: eglot detection 2024-03-13 01:00:38 -04:00
5c7149da67 docs(format): +format-in-org-src-blocks-fn: add docstring 2024-02-17 07:13:39 -05:00
1e8fd09120 fix(format): +format-in-org-src-blocks-fn
Didn't return non-nil, so whether or not it worked, Apheleia would
attempt to (ineffectually) format the org buffer afterwards.

Also remove unneeded beg/end checks (the functions always receive a
value).
2024-02-17 07:13:39 -05:00
9ba6d7191c refactor(format): improve lsp/eglot formatter dispatchers 2024-02-14 18:12:22 -05:00
e9ea3cc591 feat(format): add eglot support
Fix: #7673
2024-02-14 18:12:22 -05:00
20de3d0f29 refactor(format): introduce +format-functions 2024-02-14 18:12:22 -05:00
659f7bfc71 refactor!: deprecate IS-* OS constants
BREAKING CHANGE: This deprecates the IS-(MAC|WINDOWS|LINUX|BSD) family
of global constants in favor of a native `featurep` check:

  IS-MAC      ->  (featurep :system 'macos)
  IS-WINDOWS  ->  (featurep :system 'windows)
  IS-LINUX    ->  (featurep :system 'linux)
  IS-BSD      ->  (featurep :system 'bsd)

The constants will stick around until the v3 release so folks can still
use it -- and there are still some modules that use it, but I'll phase
those uses out gradually.

Fix: #7479
2024-02-04 17:54:29 -05:00
7920b0d46c fix(format): update missing values & set buffer modification
This prevents apheleia complaining about the editing buffer being
killed.

Co-authored-by: Wang Liao <lwlw1988@gmail.com>
2023-09-15 20:38:29 +02:00
4ecd616cd8 refactor(format): replace with apheleia
Initial refactor of format module to replace format-all with apheleia
2023-09-13 20:19:59 +01:00
06392a723f refactor: rename orig-fn arg in advice to fn
A minor tweak to our naming conventions for the first argument of an
:around advice.
2021-08-04 01:53:12 -04:00
bf488394e9 editor/format lsp feature requirement from textDocument/rangeFormatting to textDocument/formatting. 2021-07-27 17:49:57 +08:00
ad24061a81 Fix formatting ignoring buffer-local variables 2021-07-24 01:54:06 +10:00
9fb96f9eeb Fix 'setting-constant enable-multibyte-characters' error
Regression caused by 78dde6efd.

Mentioned in #5133
2021-06-04 22:45:36 -04:00
78dde6efdd Fix #5133: don't kill LSP after reformatting
This happened because LSP hooks on kill-buffer-hook (and possibly
others) caused our temporary formatting buffer to talk to LSP as if it
were the original buffer. When the temp buffer was cleaned up, LSP
assumed the original buffer had been closed. No more!

In fact, to avoid similar issues, let's avoid any complex functionality
in hooks in this temp buffer.
2021-06-04 22:22:57 -04:00
68b422c786 editor/format: redesign
This isn't the apheleia rewrite, just a redesign to fix the module's
current issues with its +onsave feature.

+ Rethinks how the formatter dispatches to lsp/eglot's formatter.
+ Stops format-all from being too imposing with its warnings.
+ Relies more on format-all-mode to control formatting-on-save.
+ Sidestep +format-buffer-a hackery when using lsp/eglot formatters.

Fixes #5121
Fixes #5128
Fixes #5133
2021-06-04 16:15:29 -04:00
99a83ca18f A workaround for formatting org mode
If point is in a source block, format that source block.
Else don't try to format the buffer. format-all-buffer does not support
org mode.
2020-12-13 15:36:56 +01:00
dec573c4e5 Allow formatter in some "special" buffers
Like org-src-edit and scratch buffers.

Fixes #3905
Closes #3915
2020-11-03 21:26:07 -05:00
72da7a3f04 editor/format: add org src-block support
Src blocks can now be reformatted. `+format/buffer` will reformat the
whole src block at point. `+format/region` will format only the
selection (even a subset of a src block).

Closes #3484
2020-08-06 15:25:56 -04:00
da1030985d Minor refactors & reformatting 2020-07-23 01:26:03 -04:00
6798966f78 editor/format: Use eglot LSP formatter 2020-06-24 01:56:26 +09:00
991a205ebd Fix wrong-number-of-args error on +format/region-or-buffer 2020-06-13 00:43:48 -04:00
649052337b fix +format/region when formatting with LSP 2020-05-26 18:16:23 +03:00
090a68ab8f Add +format-with-lsp variable
To control whether or not to use LSP code formatter when it is
available.
2020-05-21 01:20:00 -04:00
4c61f22132 Fix #3175: don't format org-exported buffers
By inhibiting the formatter in temp or special buffers.
2020-05-20 04:46:37 -04:00
7472cffadd Integrate LSP into +format/{buffer,region} commands
Relevant to #1652
2020-05-08 22:04:59 -04:00
9a628c7a12 Fix missing paren in +format/region-or-buffer #3054
Because I'm a derp
2020-05-06 16:43:42 -04:00
200ab5b9af Fix #3054: format with lsp only if server is capable
And fall back to format-all otherwise.
2020-05-06 16:29:32 -04:00
da2247e3d6 Remove redundant +default/lsp-format-region-or-buffer command 2020-05-06 15:14:16 -04:00
300bc65918 Use lsp-format-region-or-buffer if available
Currently the user has to select `SPC c F` for lsp format. But if
lsp-mode is enabled, the user will always want to use the LSP formatter.
So this changes the default `SPC c f` to use lsp formatter if available.
This simplifies the interface a bit so the user doesn't have to worry
about selecting the "right" format, just like how other commands get
auto bound to LSP functions.
2020-05-05 09:52:44 +01:00
7d1093dc29 Fix region formatting 2020-03-26 22:49:00 +09:00
c2a0ac8b3e Fix #2605: update editor/format module 2020-03-10 01:48:20 -04:00
4680f23d90 Fix type listp error when formatting buffers
Because `buffer-local-variables` may contain symbols
(which represent locally unbound variables), not just sublists.
2020-02-18 14:37:15 -05:00
2fe3268dc2 Fix cl-loop indentation. 2020-01-20 17:17:37 +01:00
e34b5decc6 Remove unused local bindings
Remove the let-clauses binding origin-buffer-file-name and origin-default-directory, as the previous commit renders them obsolete.
2020-01-20 17:17:37 +01:00
2e82f297f6 Fix #2036: Copy local variables into formatting buffer.
Make +format-buffer copy all buffer-local variables from the original buffer into the temporary buffer. When resolving a symbol inside of a formatter, the value it is bound to in the formatted buffer will now be used instead of the default value. Fixes #2036.
2020-01-20 17:17:37 +01:00
9b5835504e Fix #2349: Make +format-completing-read return symbol
Currently `+format-completing-read` returns a cons cell like `(symbol . t)`, where `+format/buffer` expects a symbol. This commit makes `+format-completing-read` return a symbol instead. Fixes #2349.
2020-01-10 21:14:03 +01:00
c795a988e6 Conform many modules to new conventions 2019-07-23 12:30:47 +02:00
9bba39bd3a Prevent unsaved prompts when formatting #1498
The fix for #1489 (in 13f5a762) gives the temp buffer (where formatting
is performed) a real buffer-file-name, which causes it to prompt to save
it when it is killed.
2019-06-16 19:16:22 +02:00
13f5a76278 Fix formatters unable to find project root #1489 2019-06-13 18:01:45 +02:00
12233811a8 fix: format-all upstream definitions
Upstream renamed definitions in
f3ed09c430 .
2019-06-08 17:45:42 +02:00
0c743afcfd editor/format: remove utf-8 conversion on Windows #914 2019-05-30 14:11:53 -04:00
5c3188afd5 editor/format: fix +format/region-or-buffer
The `r` interactive spec barfs an error if no mark is active, preventing
this function from ever calling `+format/buffer`.

Reported by @amosbird
2019-04-02 00:52:10 -04:00
99fd8b4e1b O'byte-compiler
Who forbade the obsolete,
Hooks, functions; adieu.

(And an unused argument too)
2019-02-03 18:42:09 -05:00
09603c5444 +format-region-p = nil
Should be a boolean in the first place; this fixes custom formatters
that use it like a boolean.
2018-10-19 11:48:47 -04:00
6859f77e1d format.el: fix Wrong type argument: listp, t
The intention here was to build a list of two elements.

Signed-off-by: Edwin Török <edwin@etorok.net>
2018-10-03 23:03:11 +01:00
6a44cf0124 editor/reformat: refactor & fixes
+ Change +format-type to +format-region-p (now a boolean)
+ Add PRESERVE-INDENT-P boolean argument to +format-buffer
+ Add +format-preserve-indentation variable (only controls indent
  preservation during +format/buffer, not +format/region, where it's
  always enabled).
+ Fix error arising from +format|buffer hook when no formatter is
  defined for the current mode #893
+ Change +format|buffer to alias for +format/buffer.
2018-09-18 15:19:50 -04:00
c52d2a5a14 editor/format: add +format-type letvar
In case we need a conditional to test against in our formatters. e.g. in
go-mode, goimports is incompatible with partial formatting, so we force
it to use gofmt in that case.
2018-09-10 08:25:48 -04:00
e0f8325f45 editor/format: fix wrong-number-of-args error
+format|buffer takes no arguments
2018-09-10 08:25:48 -04:00
8480f52081 editor/format: add +format-with option
+ A formatter can now be specified explicitly buffer-locally by setting
  +format-with to a symbol representing the name of the
  formatter (accepts any key of format-all-format-table)
+ Passing C-u to any of +format/buffer, +format/region or
  +format/region-or-buffer will now prompt you to select a formatter.
+ Revise docstring for +format-on-save-enabled-modes
2018-09-09 09:58:22 -04:00
46083ed398 editor/format: preserve indent in +format-buffer 2018-09-09 09:58:22 -04:00