[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Scheme-mode: Add support for regular expression literal
From: |
Toshi Umehara |
Subject: |
Re: [PATCH] Scheme-mode: Add support for regular expression literal |
Date: |
Thu, 28 Mar 2024 21:40:11 +0900 |
User-agent: |
Cyrus-JMAP/3.11.0-alpha0-333-gbfea15422e-fm-20240327.001-gbfea1542 |
The code below, which works in init.el, corresponds to the updated scheme.el .
Could you try it ?
(add-hook
'scheme-mode-hook
(lambda ()
(setq-local
syntax-propertize-function
(lambda (beg end)
(goto-char beg)
(scheme-syntax-propertize-sexp-comment2 end)
(scheme-syntax-propertize-regexp end)
(funcall
(syntax-propertize-rules
("\\(#\\);" (1 (prog1 "< cn"
(scheme-syntax-propertize-sexp-comment2 end))))
("\\(#\\)/" (1 (when (null (nth 8 (save-excursion
(syntax-ppss
(match-beginning 0)))))
(put-text-property
(match-beginning 1)
(match-end 1)
'syntax-table (string-to-syntax "|"))
(scheme-syntax-propertize-regexp end)
nil)
)))
(point) end)))))
(defun scheme-syntax-propertize-sexp-comment2 (end)
(let ((state (syntax-ppss)))
(when (eq 2 (nth 7 state))
;; It's a sexp-comment. Tell parse-partial-sexp where it ends.
(condition-case nil
(progn
(goto-char (+ 2 (nth 8 state)))
;; FIXME: this doesn't handle the case where the sexp
;; itself contains a #; comment.
(forward-sexp 1)
(put-text-property (1- (point)) (point)
'syntax-table (string-to-syntax "> cn")))
(scan-error (goto-char end))))))
(defun scheme-syntax-propertize-regexp (end)
(let* ((state (syntax-ppss))
(within-str (nth 3 state))
(start-delim-pos (nth 8 state)))
(when (and within-str
(char-equal ?# (char-after start-delim-pos)))
(while
(and
(re-search-forward "/" end 'move)
(eq -1
(% (save-excursion
(backward-char)
(skip-chars-backward "\\\\")) 2))))
(when (< (point) end)
(progn
(put-text-property
(match-beginning 0)
(match-end 0)
'syntax-table (string-to-syntax "|"))
)))
))
- [PATCH] Scheme-mode: Add support for regular expression literal, Toshi Umehara, 2024/03/22
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Jakub T. Jankiewicz, 2024/03/23
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Stefan Monnier, 2024/03/23
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Toshi Umehara, 2024/03/24
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Jakub T. Jankiewicz, 2024/03/28
- Re: [PATCH] Scheme-mode: Add support for regular expression literal,
Toshi Umehara <=
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Jakub T. Jankiewicz, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Eli Zaretskii, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Jakub T. Jankiewicz, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Toshi Umehara, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Eli Zaretskii, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Toshi Umehara, 2024/03/29
- Re: [PATCH] Scheme-mode: Add support for regular expression literal, Eli Zaretskii, 2024/03/30