Commit graph

32 commits

Author SHA1 Message Date
Henrik Lissner
790c2a6d84
fix(eval): eros overlay going off-screen
Evaluating code (and :tools (eval +overlay) enabled) will do one of two
things with the return value:

If long, it will be displayed in a popup window on the bottom of the
frame. If short (<3-4 lines), it will be displayed in an overlay at the
end of the line.

If you happened to have scrolled horizontally (such that the BOL isn't
visible), the overlay would be displayed offscreen and unreadable. Any
attempt to scroll it into view will cause it to disappear (as per its
transient nature). This fix pads each newline in said overlay such that
the overlay is pushed into view.
2022-08-07 19:43:27 +02:00
Henrik Lissner
057e6c531c
refactor: replace doom-enlist with ensure-list
doom-enlist is now a deprecated alias for ensure-list, which is built
into Emacs 28.1+ and is its drop-in replacement. We've already
backported it for 27.x users in doom-lib (in 4bf4978).

Ref: 4bf49785fd
2022-08-07 19:43:13 +02:00
Henrik Lissner
7290f85cfd feat(eval): set load-true-file-name & buffer-file-truename
So they are available in evaluated contexts.
2022-01-27 03:50:52 +01:00
Ethan Leba
aebd4b0c99 docs(eval): explain DWIM behavior 2021-12-18 10:45:17 -05:00
Ethan Leba
fea561f678 feat(eval): :send-region and :send-buffer handlers
Ref: #2496
2021-12-18 10:45:17 -05:00
Henrik Lissner
c9eb00a217 Fix incorrect newline placement on send-to-REPL
Sending this form to a REPL (like ielm):

  (defun test (n)
    ...)

Will yield:

  (defun test (n
                 ...))

Because our RET emulation doesn't take evil's off-by-one cursor
placement into account.
2021-04-13 18:54:48 -04:00
daanturo
bac1ff173d Fix non-default REPL's format of command name. 2021-03-13 12:17:42 +07:00
Henrik Lissner
14d341530a tools/eval: always eval elisp in current session
If you used an +eval/* command from a non-emacs-lisp-mode buffer,
quickrun would prompt you for a program to evaluate the code with. If
you selected "emacs" the code would evaluate in an external Emacs
process and return displayed output (stdout).

This commit changes +eval/buffer, +eval/region, and
+eval/region-and-replace (and all the other +eval commands that use
them) to evaluate code in the current session instead.
2021-02-24 18:06:30 -05:00
Henrik Lissner
8bbac4bfb3
Minor refactors 2020-08-08 03:06:26 -04:00
Andrew Whatson
59c5aaad8d Fix error when opening REPL from unsupported mode
"Wrong number of arguments: (_mode fn . plist), 0"
2020-06-19 14:26:57 +10:00
Henrik Lissner
345479c29e
Always display evaluated result in popup buffer
If +eval isn't enabled
2020-01-07 14:27:02 -05:00
Henrik Lissner
7ef3bee851
Consider eval output width when deciding how to display it
If ':tools (eval +overlay)' is enabled, eval commands display their
output in a floating overlay at EOL. If the output is longer than
+eval-popup-min-lines (5), it will display it in a popup window instead.

With this, it also will use a popup window if the output is longer than
the minibuffer can display in one line,
2019-12-28 13:53:13 -05:00
Henrik Lissner
2da7c7b168
tools/eval: make set-eval-handler! accept a list of modes
Fixes inline evaluation for emacs-lisp-mode due to 322bca7.
2019-12-20 02:34:29 -05:00
Henrik Lissner
318754c4d2
Prevent eval results from consuming > half the frame 2019-12-05 20:48:53 -05:00
Henrik Lissner
26c8f5c6ef
Bytecompiler bytecompiler, won't you shut up 2019-11-23 01:21:25 -05:00
Henrik Lissner
c30d0ab1b7
tools/eval: ensure final newline after repl input #2056
Fix an issue where the final line of send-to-repl input (via gr) isn't
consistently processed.
2019-11-17 01:15:51 -05:00
Henrik Lissner
f54d7a15cd
tools/eval: send to repl (via gr) by line #2056 2019-11-16 20:57:04 -05:00
Henrik Lissner
c2db4a8708
tools/eval: add REPL support for +eval/buffer 2019-11-15 00:17:10 -05:00
Henrik Lissner
d0a7cac3ad
Fix +eval:region sending whole buffer to REPL #1941 2019-11-12 20:22:38 -05:00
Henrik Lissner
762c374198
Rename +eval-overlay-max-lines -> +eval-popup-min-lines
Generalize variable.
2019-10-29 18:19:02 -04:00
Henrik Lissner
d2fe021bd9
tools/eval: display in minibuffer if below threshold
If it's just a couple lines, display in minibuffer instead.
2019-10-26 03:54:09 -04:00
Henrik Lissner
36c9f7c333
tools/eval: fix popup when +overlay is disabled 2019-10-26 03:53:54 -04:00
Henrik Lissner
84a063ca78
tools/eval: add +overlay feature
Now, inline evaluation will display results in an overlay next to the
cursor, rather than in the minibuffer (unless it gets too big, in which
case it'll use a popup buffer).
2019-10-26 02:12:58 -04:00
Henrik Lissner
a940d07e4b
tools/eval: minor refactors 2019-10-24 19:23:17 -04:00
Henrik Lissner
bcdf5eb19a
tools/eval: gr now sends to REPL if one is open #1941
And polish other evil repl commands + add docstrings.
2019-10-24 16:56:53 -04:00
Henrik Lissner
0b67251159
tools/eval: associate plist with repl handlers
Also consolidates all REPLs (opened through the :tools eval module)
under one popup rule, which inhibits ESC from prematurely closing
them (#1944), and cleans up after their buffers *only* if their handlers
weren't specified to :persist, e.g.

  (set-repl-handler! 'some-mode #'some-repl-handler :persist t)

Also standardized ESS's REPL commands.
2019-10-23 21:41:23 -04:00
Henrik Lissner
cfcaad4bfc
tools/eval: don't select window after send-to-repl #1941
Also:

- Refactors REPL logic
- Open-repl commands now copy selection to new REPL and select
  them (without executing them).
- Send-to-repl now auto-executes by default. Prefix arg = don't auto
  execute
2019-10-23 14:08:15 -04:00
Henrik Lissner
3181933ed1
Minor refactoring and reformatting 2019-10-08 17:42:36 -04:00
Henrik Lissner
bb71f591f8
tools/eval: fix void-variable term-raw-map errors 2019-10-08 17:42:36 -04:00
Henrik Lissner
1aae5c9242
tools/eval: fix extra newlines in term-char-mode REPLs #1836 2019-10-07 12:58:05 -04:00
Henrik Lissner
2214c3175e
Minor tweaks across the board 2019-05-21 00:34:32 -04:00
Henrik Lissner
77e4cc4d58
💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:

- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces

More potential changes in the future:

- A new :term category for terminal emulation modules (eshell, term and
  vterm).
- A new :os category for modules dedicated to os-specific functionality.
  The :tools macos module would fit here, but so would modules for nixos
  and arch.
- A new :services category for web-service integration, like wakatime,
  twitter, elfeed, gist and pastebin services.
2019-04-24 18:16:04 -04:00