>>>>> "Alex" == Alex Schroeder <[EMAIL PROTECTED]> writes:
Alex> Alex Schroeder <[EMAIL PROTECTED]> writes:
>> Alex Schroeder <[EMAIL PROTECTED]> writes:
>>
>>> There is, however, no way to search for people without phone numbers,
>>> or all people without an address matching "gnu". Do you think this is
>>> important?
Alex> Ok, so I was bored. Now you can also search for stuff *not*
Alex> matching something, for example for all people whose name do
Alex> not contain the letter a. I'm still not sure such a thing
Alex> is actually needed, though. Plus I think the user interface
Alex> is bad. At the moment you have to call M-x
Alex> bbdb-search-invert-set to invert the meaning of the next
Alex> search.
M-x bbdb
searches for records matching regexp.
Why not make a C-u prefix invert the sense of the search to find
records not matching regexp?
The prompt would have to be changed though to make sense again.
His is the current doc for `bbdb':
Display all entries in the BBDB matching the regexp STRING
in either the name(s), company, network address, or notes.
How about this, then:
Display all entries in the BBDB matching the regexp STRING
in either the name(s), company, network address, or notes.
With prefix argument display all entries not matching
regexp STRING.
Alex> I'll leave it up to other people to decide wether such code
Alex> is worth having in the BBDB.
Alex> Alex.
Alex> *** bbdb-com.el.~1.136.~ Mon Jan 21 23:02:54 2002
Alex> --- bbdb-com.el Mon Jan 21 23:35:09 2002
Alex> ***************
Alex> *** 77,85 ****
Alex> 'bbdb-display-layout))
Alex> (defmacro bbdb-search (records &optional name company net notes phone)
Alex> ! ;; this macro only emits code for those things being searched for;
Alex> ! ;; literal nils at compile-time cause no code to be emitted.
Alex> (let (clauses)
Alex> ;; I didn't protect these vars from multiple evaluation because that
Alex> ;; actually generates *less efficient code* in elisp, because the extra
Alex> --- 77,109 ----
Alex> 'bbdb-display-layout))
Alex> + (defvar bbdb-search-invert nil
Alex> + "Bind this variable to t in order to invert the result of `bbdb-search'.
Alex> +
Alex> + \(let ((bbdb-search-invert t))
Alex> + \(bbdb-search records foo foo))")
Alex> +
Alex> + (defun bbdb-search-invert-get ()
Alex> + "Return `bbdb-search-invert' and set it to nil.
Alex> + To set it on again, use `bbdb-search-invert-set'."
Alex> + (let ((result bbdb-search-invert))
Alex> + (setq bbdb-search-invert nil)
Alex> + result))
Alex> +
Alex> + (defun bbdb-search-invert-set ()
Alex> + "Set `bbdb-search-invert' to t.
Alex> + This will invert the meaning of the next search command.
Alex> + You will have to call this function again, if you want to
Alex> + do repeated inverted searches."
Alex> + (interactive)
Alex> + (setq bbdb-search-invert t))
Alex> +
Alex> (defmacro bbdb-search (records &optional name company net notes phone)
Alex> ! "Search RECORDS for optional arguments NAME, COMPANY, NET, NOTES, PHONE.
Alex> ! This macro only emits code for those things being searched for;
Alex> ! literal nils at compile-time cause no code to be emitted.
Alex> !
Alex> ! If you want to reverse the search, bind `bbdb-search-invert' to t."
Alex> (let (clauses)
Alex> ;; I didn't protect these vars from multiple evaluation because that
Alex> ;; actually generates *less efficient code* in elisp, because the extra
Alex> ***************
Alex> *** 170,183 ****
Alex> nil))
Alex> (case-fold-search bbdb-case-fold-search)
Alex> (records (, records))
Alex> record)
Alex> (while records
Alex> (setq record (car records))
Alex> ! (if (or (,@ clauses))
Alex> ! (setq matches (cons record matches)))
Alex> ! (setq records (cdr records)))
Alex> (nreverse matches)))))
Alex> -
Alex> ;;;###autoload
Alex> (defun bbdb (string elidep)
Alex> --- 194,210 ----
Alex> nil))
Alex> (case-fold-search bbdb-case-fold-search)
Alex> (records (, records))
Alex> + (invert (bbdb-search-invert-get))
Alex> record)
Alex> (while records
Alex> (setq record (car records))
Alex> ! (if (or (and invert
Alex> ! (not (or (,@ clauses))))
Alex> ! (and (not invert)
Alex> ! (or (,@ clauses))))
Alex> ! (setq matches (cons record matches)))
Alex> ! (setq records (cdr records)))
Alex> (nreverse matches)))))
Alex> ;;;###autoload
Alex> (defun bbdb (string elidep)
Alex> _______________________________________________
Alex> [EMAIL PROTECTED]
Alex> https://lists.sourceforge.net/lists/listinfo/bbdb-info
Alex> BBDB Home Page: http://bbdb.sourceforge.net/
--
Adrian Aichner
mailto:[EMAIL PROTECTED]
http://www.xemacs.org/
_______________________________________________
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/bbdb-info
BBDB Home Page: http://bbdb.sourceforge.net/