diff --git a/core/autoload/text.el b/core/autoload/text.el index e3113335f..f848f0e2c 100644 --- a/core/autoload/text.el +++ b/core/autoload/text.el @@ -1,11 +1,13 @@ ;;; core/autoload/text.el -*- lexical-binding: t; -*- +;;;###autoload (defvar doom-point-in-comment-functions () "List of functions to run to determine if point is in a comment. Each function takes one argument: the position of the point. Stops on the first function to return non-nil. Used by `doom-point-in-comment-p'.") +;;;###autoload (defvar doom-point-in-string-functions () "List of functions to run to determine if point is in a string. @@ -42,16 +44,18 @@ lines, above and below, with only whitespace in between." "Return non-nil if POS is in a comment. POS defaults to the current position." (let ((pos (or pos (point)))) - (or (run-hook-with-args-until-success 'doom-point-in-comment-functions pos) - (sp-point-in-comment pos)))) + (if doom-point-in-comment-functions + (run-hook-with-args-until-success 'doom-point-in-comment-functions pos) + (nth 4 (syntax-ppss pos))))) ;;;###autoload (defun doom-point-in-string-p (&optional pos) "Return non-nil if POS is in a string." ;; REVIEW Should we cache `syntax-ppss'? (let ((pos (or pos (point)))) - (or (run-hook-with-args-until-success 'doom-point-in-string-functions pos) - (sp-point-in-string pos)))) + (if doom-point-in-string-functions + (run-hook-with-args-until-success 'doom-point-in-string-functions pos) + (nth 3 (syntax-ppss pos))))) ;;;###autoload (defun doom-point-in-string-or-comment-p (&optional pos) diff --git a/core/core-editor.el b/core/core-editor.el index 4822b6df5..b096c5c48 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -540,6 +540,8 @@ files, so this replace calls to `pp' with the much faster `prin1'." :hook (doom-first-buffer . smartparens-global-mode) :commands sp-pair sp-local-pair sp-with-modes sp-point-in-comment sp-point-in-string :config + (add-to-list 'doom-point-in-string-functions 'sp-point-in-string) + (add-to-list 'doom-point-in-comment-functions 'sp-point-in-comment) ;; smartparens recognizes `slime-mrepl-mode', but not `sly-mrepl-mode', so... (add-to-list 'sp-lisp-modes 'sly-mrepl-mode) ;; Load default smartparens rules for various languages