Age | Commit message (Collapse) | Author |
|
Mainly by reordering definitions so that functions are not used before
defined. There are a couple of places where the compiler and I
disagree (it complains withing eval-after-load), and a valid complain
about functions defined via geiser-popup--define that should be
addressed).
|
|
|
|
API for test suites is defined by SRFI-64.
|
|
Exceptions are defined by R6RS, SRFI-18 and SRFI-34.
|
|
Move general indentation rules to "geiser-syntax".
|
|
Move general RNRS/SRFI keywords from "geiser-chicken" to "geiser-syntax".
|
|
Use this function instead of repeating the same code in each
implementation.
|
|
Apparently, the nesting level returned by emacs's syntax parser can be
negative (presumably when it gets confused), and we were not avoiding
calling backward-up-list when that happened.
Could or could not address issue #41...
|
|
|
|
This allows partially matched `define-syntax-rule' expressions and
avoids the termination of search-based fontification, which affects
other expressions inside the buffer, in the case of a missing
subexpression.
|
|
The name defined It's more like a function in a define than a variable,
since it can take arguments.
|
|
`define-syntax-rule' is similar enough to procedure definitions that
it should be highlight as a slightly different version of one.
The faces were chosen to keep the same scheme used by `define-macro'.
`define-syntax-rule' was removed from Racket's extra keywords as there
is no need to special case it.
|
|
The parser in geiser-syntax is (tail, but elisp doesn't care)
recursive, and we are setting max-lisp-eval-depth to some, ahem,
heuristic value before starting a read. For long strings, such as
that returned by the list of identifiers exported by the racket
module, the heuristic was bad enough to produce a value making Emacs
to blow away.
This is just a palliative. The real solution is turn the recursion in
geiser-syntax--read into an explicit iteration.
|
|
... and used also internally for C-c C-k, although it doesn't yet work
as well as i wanted when it comes to load modules. The reason is
probably in geiser/enter, where we don't record modification times per
submodule but per path, which is not correct in the presence of submodules.
|
|
By default, keywords are now not fontified in Scheme buffers unless
they have the correct (lower) case. This behaviour can be altered by
new, per-implementation customization variables.
Thanks to Diogo F. S. Ramos for pointing this out.
|
|
|
|
Splitting better the specially indented forms between our two
implementations, so that users of a single one don't get weird
indentations for froms without a special meaning in their scheme.
Ideally, we should make these indentation rules buffer-local, so that
when a user is in a, say, Guile buffer, module+ has no special
indentation (as is the case now if that user also has activated
support for Racket).
|
|
|
|
We had only for two of them, and one was wrong!
|
|
|
|
Hat tip Marijn.
|
|
|
|
Let's use the scheme reader instead of half-assed regular expressions
and special-casing.
|
|
|
|
Apparently, quack makes (thing-at-point 'symbol) to return "#" when
point is looking at a hash symbol, causing havoc to geiser. This patch
defends us about this behaviour.
|
|
|
|
Namely, those with non-letters in their name, because we were using
"%S" instead of "%s" to stringify uninterned symbols.
|
|
If quack-mode is active, we leave additional font locking to it.
|
|
... and i haven't yet refactored `geiser-syntax--scan-locals', oh my.
|
|
... using the new non-interning reader. Plus scanning for case-lambda
and syntax-rules. `geiser-syntax--scan-locals' is in danger of
refactoring, specially if we add support for let-values.
|
|
It was relying on symbol equality, and not dealing correctly with
keyword arguments in this new external world. In the process, some
cleanups to the scheme data display code.
|
|
We were still internalizing scheme _keywords_ in the elisp reader.
|
|
We avoid using elisp's read for symbols, reading uninterned ones
instead. And then, we cannot use symbols as keys in responses from
scheme: we're using strings instead.
|
|
We avoid calling symbol-at-point, and keep the cached signatures with
strings as keys.
|
|
|
|
This reverts commit 801422d1558f488059ede4f9abab5163ca610900.
We cannot blindly substitute make-symbol for intern in the scheme
reader, because we rely on symbol equality elsewhere, often. The fix
will have to be much more careful.
|
|
We were calling `intern' instead of `make-symbol', polluting emacs'
obarray.
|
|
And, as a consequence, we were sending broken sexps to poor schemes.
|
|
Spinning up from correct fontification of [else in this brave Racket
world.
I'm keeping the list of extra keywords lean and mean, but making it
customizable in both Racket and Guile.
|
|
- ((foo wasn't being completed
- define-syntax makes its first argument a bound local
|
|
|
|
|
|
Fixes scan of current symbol when point is in a string or comment and
detection of argument boundaries.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|