[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [el-search] How to search string excluding docstring?
From: |
Chunyang Xu |
Subject: |
Re: [el-search] How to search string excluding docstring? |
Date: |
Wed, 27 Dec 2017 13:38:43 +0800 |
User-agent: |
mu4e 0.9.18; emacs 27.0.50 |
Emanuel Berg writes:
> However here there is a collision between the
> two worlds. Because where is point?
> Over which element to begin with, when the
> query is executed? If one knows that, one could
> simply get the defun as a list (which it
> already is) and ask, "is the 4th element
> a string?". If it is, and if point's at it in
> the buffer, then yes it is a docstring.
I think point is at the beginning of the string, the following assumes
this to work. I compare point with the point of docstring (if any) to
see if it is a docstring.
#+begin_src emacs-lisp
;; FIXME: Update this list every time el-search starts. How?
(defvar el-search--symbols-with-doc-string
(let (symbols)
(mapatoms
(lambda (sym)
(and (fboundp sym)
(get sym 'doc-string-elt)
(push sym symbols))))
symbols)
"A list of symbols which support doc-string.")
(defun el-search--doc-string-p ()
"Return t if point is at docstring."
(pcase (save-excursion
(backward-up-list)
(read (current-buffer)))
(`(,(and symbol (guard (memq symbol el-search--symbols-with-doc-string)))
,_ . ,_)
(let ((op (point)))
(save-excursion
(backward-up-list)
(forward-char)
(ignore-errors
(forward-sexp (1+ (get symbol 'doc-string-elt)))
(backward-sexp)
(= op (point))))))))
(el-search-defpattern doc-string (&rest regexps)
"Match any documentation string that is matched by all REGEXPS."
`(and (string ,@regexps) (guard (el-search--doc-string-p))))
(el-search-defpattern s (&rest regexps)
"Match any string (excluding doc string) that is matched by all REGEXPS"
`(and (string ,@regexps) (guard (not (el-search--doc-string-p)))))
#+end_src
- Re: [el-search] How to search string excluding docstring?, (continued)
- Re: [el-search] How to search string excluding docstring?, tomas, 2017/12/25
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/25
- Re: [el-search] How to search string excluding docstring?, tomas, 2017/12/25
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/25
- Re: [el-search] How to search string excluding docstring?, tomas, 2017/12/25
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/25
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/25
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/26
- Re: [el-search] How to search string excluding docstring?, Jean-Christophe Helary, 2017/12/26
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/26
- Re: [el-search] How to search string excluding docstring?,
Chunyang Xu <=
- Re: [el-search] How to search string excluding docstring?, Michael Heerdegen, 2017/12/27
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/27
- Message not available
- Re: [el-search] How to search string excluding docstring?, Emanuel Berg, 2017/12/25