Have set the last three function arguments to optional. When calling the elisp
function in code (rather than interactively), how can I check the optional arguments
fol nil
?
When brcmk-end in nil
, I do not want the search-forward
to occur on $endmk
.
When rgn-beg
and rgn-end
are nil
, I could default to (region-beginning)
and
(region-end)
.
(defun rk-bracemk-count-2 (brcmk-beg &optional brcmk-end rgn-beg rgn-end)
"Count brace marks within a selected region.
BRCMK-BEG Opening brace mark.
BRCMK-END Closing brace mark.
RGN-BEG Region start marker or position.
RGN-END Region end marker or position."
(interactive
(list (read-char-from-minibuffer "Opening bracemark: ")
(read-char-from-minibuffer "Closing bracemark: ")
(region-beginning)
(region-end) ))
(save-excursion
(let ( ($a 0) ($b 0)
($begmk (char-to-string brcmk-beg))
($endmk (char-to-string brcmk-end)) )
(goto-char rgn-beg)
(while (and (< (point) rgn-end)
(search-forward $begmk rgn-end t))
(cl-incf $a))
(goto-char rgn-beg)
(while (and (< (point) rgn-end)
(search-forward $endmk rgn-end t))
(cl-incf $b))
(message "Marks: %s %s Counts: %d %d" $begmk $endmk $a $b)
(goto-char rgn-beg) )))