* Re: emacs lisp. Is there a rassoc-default for getting ALL elementsmatching a VALUE?
[not found] ` <jj5ouk02i3c@enews4.newsguy.com>
@ 2014-12-26 9:57 ` WJ
0 siblings, 0 replies; only message in thread
From: WJ @ 2014-12-26 9:57 UTC (permalink / raw)
To: help-gnu-emacs
WJ wrote:
> Xah Lee wrote:
>
> >
> > emacs lisp. Is there a rassoc-default for getting ALL elements
> > matching a VALUE?
> >
> > emas lisp. Is there a rassoc-default function? i.e. similar to assoc-
> > default but get all items of a alist of a give value.
> >
> > i want to be able to properly setup cperl-mode to load instead of perl-
> > mode. Here's detail.
> >
> > easy way is just
> > (defalias 'perl-mode 'cperl-mode)
> >
> > but the problem with that is you can't call perl-mode anymore, if you
> > still want it on occasion.
> >
> > So, i went to set the auto-mode-alist. Like this:
> >
> > (setq auto-mode-alist (rassq-delete-all 'perl-mode auto-mode-alist))
> > (add-to-list 'auto-mode-alist '("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al
> > \\)\\'" . cperl-mode))
> >
> > that turns out doesn't do it, because there's also interpreter-mode-
> > alist. So i wrote:
> >
> > (when
> > (rassoc 'perl-mode interpreter-mode-alist)
> > (let ((mykey (car (rassoc 'perl-mode interpreter-mode-alist)) ))
> > (setq interpreter-mode-alist (rassq-delete-all 'perl-mode
> > interpreter-mode-alist))
> > (add-to-list 'interpreter-mode-alist (mykey . 'cperl-mode))
> > )
> > )
> >
> > but i discovered there are actually several elements for perl in that
> > alist:
> >
> > ("perl" . perl-mode)
> > ("perl5" . perl-mode)
> > ("miniperl" . perl-mode)
> >
> > So my code above won't work.
> >
> > So, the proper way is to query for the value 'perl-mode, get ALL
> > results, then remove them all, then add them all back with 'cperl-
> > mode.
elisp:
(mapcar
(lambda (x)
(let ((k (car x)) (v (cdr x)))
(if (eq 'perl-mode v)
(cons k 'cperl-mode)
x)))
'(("foo" . bar)
("perl" . perl-mode)
("perl5" . perl-mode)
("miniperl" . perl-mode)
("whiz" . bang)))
===>
(("foo" . bar) ("perl" . cperl-mode) ("perl5" . cperl-mode)
("miniperl" . cperl-mode) ("whiz" . bang))
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-12-26 9:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <75505678-f49c-415b-b682-4461d544820c@t8g2000prm.googlegroups.com>
[not found] ` <jj5ouk02i3c@enews4.newsguy.com>
2014-12-26 9:57 ` emacs lisp. Is there a rassoc-default for getting ALL elementsmatching a VALUE? WJ
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).