diff options
-rw-r--r-- | elisp/geiser-guile.el | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/elisp/geiser-guile.el b/elisp/geiser-guile.el index 849fabf..fca4b01 100644 --- a/elisp/geiser-guile.el +++ b/elisp/geiser-guile.el @@ -95,8 +95,11 @@ This function uses `geiser-guile-init-file' if it exists." (defun geiser-guile-get-module (&optional module) (cond ((null module) (save-excursion - (goto-char (point-min)) - (if (re-search-forward geiser-guile--module-re nil t) + (ignore-errors + (backward-sexp) + (while (not (zerop (geiser-syntax--nesting-level))) + (backward-up-list))) + (if (re-search-backward geiser-guile--module-re nil t) (geiser-guile-get-module (match-string-no-properties 1)) :f))) ((listp module) module) @@ -152,9 +155,9 @@ This function uses `geiser-guile-init-file' if it exists." ;;; Trying to ascertain whether a buffer is Guile Scheme: (defun geiser-guile-guess () - "Return `t' if the current buffer looks like a Guile file." - (listp (geiser-guile-get-module))) - + (save-excursion + (goto-char (point-min)) + (re-search-forward geiser-guile--module-re nil t))) (provide 'geiser-guile) ;;; geiser-guile.el ends here |