summaryrefslogtreecommitdiff
path: root/elisp/geiser-mode.el
AgeCommit message (Collapse)Author
2024-07-06Define autoloads how that is normally doneJonas Bernoulli
- Avoid defining autoload definitions in a central location. Instead add autoload cookies to the forms/definitions that should be autoloaded, in the locations where the actual definitions are located. - Do this for `geiser-mode', `turn-on-geiser-mode', `geiser-mode--maybe-activate' (including adding that to `scheme-mode-hook'), `geiser', `geiser-connect', `geiser-connect-local' and `geiser-repl-switch'. - Also do this for `run-geiser', even though it is only an obsolete function alias for `geiser', which might make it desirable to drop the autoload altogether. Some unusual autoload definitions remain in "geiser.el", see below. - One issue with defining autoloads in a central location is that it is easy to forget to remove such autoloads when the real definition is removed. No longer autoload `geiser-version' because since [1: 847d2ad] there no longer exists a proper definition of that function. - No longer autoload `geiser-unload', `geiser-reload' and `turn-off-geiser-mode', because they are only useful if Geiser has already been loaded, at which point any autoloaded definitions are no longer relevant. However, - Keep autoloading `geiser-activate-implementation' and `geiser-implementation-extension', even though I doubt that this is actually useful. - Keep using `custom-add-load' to specify dependencies of Custom groups and keep autoloading that. I don't know if this is actually necessary, and while it seems really weird, it might served a legit purpose, that I am not aware of. 1: 2020-07-19 847d2ad4c6da462c26c50af1ef7d9cd697f3a5d2 scheme and autotools removals
2024-07-06Cleanup library headersJonas Bernoulli
- In the summary line, use three dashes to separate the file name from the summary. That is the convention, which some tools depend on, and for some libraries we already did it here too. - Capitalize the first word in the summary. That is the convention, and for some libraries we already did it here too. - For libraries that have a commentary, make sure it is placed in a "Commentary:" section. - Make sure the "Code:" heading, which separates the header from the code part of the library, exists in all files.
2024-02-08geiser-mode: redundant custom groupsjao
2023-09-22Add geiser-repl-superparen-mode minor mode.Antero Mejr
Disabled by default. Adds new custom variables "geiser-repl-superparen-character" and "geiser-repl-superparen-mode-p".
2023-04-22Add geiser-repl-autoeval-mode minor mode.Antero Mejr
Disabled by default. Adds new custom variables "geiser-repl-autoeval-mode-delay" and "geiser-repl-autoeval-mode-p".
2022-10-15local definition discovery sans imenujao
we already had our own lighter mechanism, just needed to use it better. it will also allow guessing local signatures, quite useful in chezzy (or more generally r6rs-librarish) schemes.
2022-10-12imenu as a last resort for jumping to definitionjao
... as well as a way of telling imenu to look for nested define forms, as the ones one finds for instance inside (library ...) or (module ...) sexps, or simply nested defines in function bodies. it's a crappy way of finding definitions, but it's better than nothing when it's all we have (e.g., R6RS libraries don't seem to provide an environment/namespace including their privates, which is a killjoy).
2022-08-25run-geiser obsoleted (just use M-x geiser)jao
2022-08-25New geiser-repl-switch[-to-module] obsoleting switch-to-geiser[module]jao
2022-08-23Interactive REPL start in C-c C-k and C-c C-ljao
Should address, sort of, issue #46
2022-08-13fix: start scheme just once if repl buffer doesn't existjao
Should fix issue #49.
2022-04-23geiser-capf: new module to break cyclic dependenciesjao
2022-04-23Suggestive patch for simplified completionDaniel Mendler
NOTE: The patch is largely untested. Modifications: - Update readme.org - Remove geiser-company - Move Company extensions to geiser-completion Omissions: - geiser-company--inhibit-autodoc has been removed. Eldoc handling should be implemented in the frontend, not in the backend. See for example: https://github.com/minad/corfu/blob/04fbfce3d7e9c125a7fd22a34455a508247a522b/corfu.el#L1212 - The quickhelp-string action and geiser-company--docstring have been removed. company-quickhelp can use `:company-doc-buffer` instead with minimal overhead. See: https://github.com/company-mode/company-quickhelp/blob/3ca2708b4e5190205aca01d65fe1b391963a53f9/company-quickhelp.el#L138 - The automatic Company setup has been removed. Personally I am not a fan of such auto configuration. It is better if completion is configured consistently in the user configuration. You may want to restore the auto configuration for backward compatibility. It depends on your backward compatibility story. I am fine with rare breaking changes from time to time. - There is a cyclic dependency between geiser-edit/geiser-doc and geiser-completion, which should be untangled.
2022-01-18Make C-u C-x C-e work again (fixes #33)jao
2021-12-29New function geiser-eval-region/waitjao
2021-12-29Fix: really use seconds to wait in geiser-wait-evaljao
2021-12-29geiser-eval-wait -> geiser-wait-eval (and make it work)jao
2021-12-27New helper, geiser-eval-wait, to facilitate synchronous evaluationsjao
This should address, for instance, issue #30
2021-12-20Asynchronous, interruptable evaluationsjao
2021-11-21New geiser-mode command: geiser-exit-repljao
Useful specially for REPLs including a debugger, where you might want to exit it from a scheme buffer. Bound by default to C-c C-q.
2021-04-21Use defvar-localJonas Bernoulli
It is available since Emacs 24.3 and we already depend on Emacs 24.4.
2020-12-02Declare keymaps using defvar explicitlyJonas Bernoulli
This makes it possible to re-evaluate the containing buffers without user customizations being clobbered.
2020-03-27Fix indentationJonas Bernoulli
2020-03-27Mark the beginning of code part of elisp libraries with Code: headingJonas Bernoulli
It's the convention and by following it we make a big step towards supporting outline navigation. The convention doesn't say much about what parts of the code are supposed to be part of that sections and what parts belong in a subsequent section. Here we put the `require' forms in this section and maybe some setup code, that's a popular approach. In most cases there was " " where we now insert "Code:". They both serve a similar purpose and we keep the former because some users depend on that for navigation. We even add this " " in libraries where it previously was missing. In some cases the permission statement was followed by a commentary, which obviously does not belong in the "Code:" section. In such cases add the conventional "Commentary:" section.
2020-03-27Begin the summary lines of all elisp libraries with three semicolonsJonas Bernoulli
It's the convention and by following it we make a big step towards supporting outline navigation.
2020-01-28C-c \ and C-c [ in geiser-repl tooJose Antonio Ortega Ruiz
With a hat tip to Mikhail Kryshen, who was wondering in guile-user why oh why, and rightly so.
2017-11-22Theoretically unnecessary save-excursionJose Antonio Ortega Ruiz
For some reason, one of our users is experiencing point jumps when calling `geiser-set-scheme'. A save-excursion is all that's needed, even though it *shouldn't* be needed in the first place.
2017-08-28WhitespaceJose Antonio Ortega Ruiz
2017-08-28Add geiser-mode-eval-to-buffer-transformerChaos Eternal
geiser-mode-eval-to-buffer-transformer will take 2 argments: errstring and result when eval-to-buffer, the result will be transformed by this procedure e.g. (setq geiser-mode-eval-to-buffer-transformer (lambda (estring x) (let ((l (length x)) (p (seq-position x ?\n))) (if (and p (< (+ 1 p) l)) (format "\n#| %s%s\n |#" estring x) (format ";;=> %s%s" estring x)))))
2017-04-11Preserve the position of (point) after evalingDiogo F. S. Ramos
After evaling the last expression, if not inserting its value into buffer, leave (point) at its original position.
2017-04-11Eval last expression even after a comment charDiogo F. S. Ramos
Scan for beginning and end of a sexp, instead of using (point) as the end. Previously, if (point) was after a comment character, the REPL would freeze.
2017-01-27bug fix: error message get displayedChaos Eternal
2017-01-17Not inserting a trailing \n when eval prefix is emptyJose Antonio Ortega Ruiz
And, on reflection, it's better we do the same thing with the ERROR insertion...
2017-01-17Not inserting an additional \n when eval prefix is emptyJose Antonio Ortega Ruiz
2017-01-13Make eval-last-sexp-to-buffer customizableChaos Eternal
2016-06-12New key bindings: C-c C-c, C-c C-lJose Antonio Ortega Ruiz
2016-06-12Real fix fontification on scheme switchJose Antonio Ortega Ruiz
2016-06-12REPLs not started by the font-lock bufferJose Antonio Ortega Ruiz
This one should fix github's issue #132. There's still the glitch that scheme strings are fontified without taking into account extra keywords.
2016-06-12Removing stale keywords when switching to another schemeJose Antonio Ortega Ruiz
Addresses github's #158, and its implementation is really easy (kudos to fice-t, also for telling me about bound-and-true-p).
2015-08-14Don't try to turn on geiser-mode in non-scheme buffersJose Antonio Ortega Ruiz
xscheme defines its own scheme-interaction-mode that, quite rudely if you ask me, calls not only its hooks, but also scheme-mode's. Among them, turn-on-geiser-mode, causing havoc to users of xscheme's run-scheme function. We, ahem, fix this problem by checking that we're actually in scheme-mode when our hook is called. Thanks to Federico Beffa for his reports.
2014-01-10Racket: better behaviour of geiser-eval-bufferJose Antonio Ortega Ruiz
For buffers containing a #lang directive, geiser-eval-buffer was simply broken: one cannot send the whole region wrapped in a `begin' in that case. We try now to send the region below, although a real solution would imply using #%module-begin as the wrapper, in order to be robust for languages that define their own version of the macro (such as TR). But people should use C-c C-a or C-c C-k and leave this silly function alone instead.
2013-05-13Add geiser-eval-buffer & geiser-eval-buffer-and-goNick Parker
These functions are similar to geiser-eval-region and geiser-eval-region-and-go, however they allow the user to operate on the entire buffer, not requiring the user to narrow to a specific region. This also differs slightly from geiser-compile-current-buffer as geiser-eval-buffer does not require the contents of the buffer to be saved prior to being sent to the REPL. Documentaion has also been updated to include references to the new methods and their keybindings.
2013-04-12A bit of documentation for the previous patchesJose Antonio Ortega Ruiz
2013-04-12Simplifications to previous patchJose Antonio Ortega Ruiz
2013-04-12Evaluate last expression to buffer with a prefixDiogo F. S. Ramos
Use a prefix before pressing C-x C-e to print the result of evaluating the expression before mark to the current buffer.
2013-04-12Hide auto-started REPLJose Antonio Ortega Ruiz
I'm not convinced that this is the right thing, and the effect is a bit ugly (we use save-window-excursion), but maybe this is the correct thing to do for users that want auto-start.
2013-04-11New flag to automatically start REPLs when geiser-mode is activatedJose Antonio Ortega Ruiz
When no live REPL is found, of course. The flag's imaginatively called geiser-mode-start-repl-p.
2013-02-03Little cleanups, and C-u variant for the lambda thingJose Antonio Ortega Ruiz
2013-02-03More robust lambda and keybinding to C-c \Jose Antonio Ortega Ruiz
Since C-\ is a standard Emacs binding, and people know how to change it anyway. I've also put the command in the menu for Geiser mode, for discoverability. A pleasant surprise: greek lambdas are understood by both Racket and Guile.
2013-02-03Insert Greek letter lambda.Ray Racine