How do I check if a string is already in a list in Emacs Lisp? I need to check if a certain path string is already in exec-path
, and then add it to that list if it's not.
The function add-to-list
will check automatically before adding
(setq a '(1 2 3))
(add-to-list 'a 4)
(add-to-list 'a 3)
will result in a
equal to (4 1 2 3)
From Emacs 26 C-h f add-to-list
:
(add-to-list LIST-VAR ELEMENT &optional APPEND COMPARE-FN) Add ELEMENT to the value of LIST-VAR if it isn’t there yet. The test for presence of ELEMENT is done with ‘equal’, or with COMPARE-FN if that’s non-nil. If ELEMENT is added, it is added at the beginning of the list, unless the optional argument APPEND is non-nil, in which case ELEMENT is added at the end. The return value is the new value of LIST-VAR. This is handy to add some elements to configuration variables, but please do not abuse it in Elisp code, where you are usually better off using ‘push’ or ‘cl-pushnew’. If you want to use ‘add-to-list’ on a variable that is not defined until a certain package is loaded, you should put the call to ‘add-to-list’ into a hook function that will be run only after loading the package. ‘eval-after-load’ provides one way to do this. In some cases other hooks, such as major mode hooks, can do the job.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With