The following code is an excerpt from the elisp tutorial, section 14.6.
(while (re-search-forward "^(defun" nil t)
(setq lengths-list (cons (count-words-in-defun) lengths-list)))
Placing the cursor just before the code and executing (forward-sexp) will fail, because of the ( symbol imbedded in the regexp "^(defun"
. My ugly remedy is below:
(setq my-regexp (concat "^" (char-to-string 40) "defun"))
(while (re-search-forward my-regexp nil t)
(setq lengths-list (cons (count-words-in-defun) lengths-list)))
Is there a less ugly approach? Alternatively, is there a wrapper for (forward-sexp) that provides optional arguments to ignore imbedded quotes and ignore imbedded comments (e.g. ;...
)?
If not, I will reference this posting as a feature request for both forward-sexp and backward-sexp.
27.0.50
and probably earlier too. What is youremacs-version
?forward-sexp
does the right thing, but only if you're using the right major-mode. since how to skip strings and comments is something that depends on the language.