summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-base.el5
-rw-r--r--elisp/geiser-plt.el80
2 files changed, 45 insertions, 40 deletions
diff --git a/elisp/geiser-base.el b/elisp/geiser-base.el
index 362930d..4133245 100644
--- a/elisp/geiser-base.el
+++ b/elisp/geiser-base.el
@@ -97,6 +97,11 @@
(insert str)
(put-text-property p (point) 'face face)))
+(defmacro geiser--scheme-indent (&rest pairs)
+ `(progn ,@(mapcar (lambda (p)
+ `(put ',(car p) 'scheme-indent-function ',(cadr p)))
+ pairs)))
+
(provide 'geiser-base)
;;; geiser-base.el ends here
diff --git a/elisp/geiser-plt.el b/elisp/geiser-plt.el
index a410e19..6526ae6 100644
--- a/elisp/geiser-plt.el
+++ b/elisp/geiser-plt.el
@@ -105,7 +105,7 @@ This function uses `geiser-plt-init-file' if it exists."
;;; External help
(defun geiser-plt-external-help (symbol module)
(message "Requesting help for '%s'..." symbol)
- (geiser-eval--send/wait `(:eval (help ,symbol) 'geiser)))
+ (geiser-eval--send/wait `(:eval (help ,symbol) scheme/help)))
;;; Trying to ascertain whether a buffer is mzscheme scheme:
@@ -120,45 +120,45 @@ This function uses `geiser-plt-init-file' if it exists."
;;; Emacs tweaks for PLT scheme code:
-(put 'begin0 'scheme-indent-function 1)
-(put 'c-declare 'scheme-indent-function 0)
-(put 'c-lambda 'scheme-indent-function 2)
-(put 'case-lambda 'scheme-indent-function 0)
-(put 'catch 'scheme-indent-function 1)
-(put 'chicken-setup 'scheme-indent-function 1)
-(put 'class 'scheme-indent-function 'defun)
-(put 'class* 'scheme-indent-function 'defun)
-(put 'compound-unit/sig 'scheme-indent-function 0)
-(put 'dynamic-wind 'scheme-indent-function 0)
-(put 'for/fold 'scheme-indent-function 2)
-(put 'instantiate 'scheme-indent-function 2)
-(put 'interface 'scheme-indent-function 1)
-(put 'lambda/kw 'scheme-indent-function 1)
-(put 'let*-values 'scheme-indent-function 1)
-(put 'let+ 'scheme-indent-function 1)
-(put 'let-values 'scheme-indent-function 1)
-(put 'let/ec 'scheme-indent-function 1)
-(put 'mixin 'scheme-indent-function 2)
-(put 'module 'scheme-indent-function 'defun)
-(put 'opt-lambda 'scheme-indent-function 1)
-(put 'parameterize 'scheme-indent-function 1)
-(put 'parameterize-break 'scheme-indent-function 1)
-(put 'parameterize* 'scheme-indent-function 1)
-(put 'quasisyntax/loc 'scheme-indent-function 1)
-(put 'receive 'scheme-indent-function 2)
-(put 'send* 'scheme-indent-function 1)
-(put 'sigaction 'scheme-indent-function 1)
-(put 'syntax-case 'scheme-indent-function 2)
-(put 'syntax/loc 'scheme-indent-function 1)
-(put 'type-case 'scheme-indent-function 'defun)
-(put 'unit 'scheme-indent-function 'defun)
-(put 'unit/sig 'scheme-indent-function 2)
-(put 'unless 'scheme-indent-function 1)
-(put 'when 'scheme-indent-function 1)
-(put 'while 'scheme-indent-function 1)
-(put 'with-handlers 'scheme-indent-function 1)
-(put 'with-method 'scheme-indent-function 1)
-(put 'with-syntax 'scheme-indent-function 1)
+(geiser--scheme-indent
+ (begin0 1)
+ (c-declare 0)
+ (c-lambda 2)
+ (case-lambda 0)
+ (catch 1)
+ (class defun)
+ (class* defun)
+ (compound-unit/sig 0)
+ (dynamic-wind 0)
+ (for/fold 2)
+ (instantiate 2)
+ (interface 1)
+ (lambda/kw 1)
+ (let*-values 1)
+ (let+ 1)
+ (let-values 1)
+ (let/ec 1)
+ (mixin 2)
+ (module defun)
+ (opt-lambda 1)
+ (parameterize 1)
+ (parameterize-break 1)
+ (parameterize* 1)
+ (quasisyntax/loc 1)
+ (receive 2)
+ (send* 1)
+ (sigaction 1)
+ (syntax-case 2)
+ (syntax/loc 1)
+ (type-case defun)
+ (unit defun)
+ (unit/sig 2)
+ (unless 1)
+ (when 1)
+ (while 1)
+ (with-handlers 1)
+ (with-method 1)
+ (with-syntax 1))
;;; Register this implementation: