From mboxrd@z Thu Jan 1 00:00:00 1970 From: torys.anderson@gmail.com (Tory S. Anderson) Subject: Re: Help: Saving Agenda Views Date: Wed, 04 Feb 2015 16:27:54 -0500 Message-ID: <87egq59xk5.fsf@gmail.com> References: <87pp9pbkrk.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJ7UO-0005Mg-91 for emacs-orgmode@gnu.org; Wed, 04 Feb 2015 16:28:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YJ7UK-0003G1-7d for emacs-orgmode@gnu.org; Wed, 04 Feb 2015 16:28:00 -0500 Received: from mail-yk0-x234.google.com ([2607:f8b0:4002:c07::234]:42719) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJ7UK-0003Fw-20 for emacs-orgmode@gnu.org; Wed, 04 Feb 2015 16:27:56 -0500 Received: by mail-yk0-f180.google.com with SMTP id 19so173563ykq.11 for ; Wed, 04 Feb 2015 13:27:55 -0800 (PST) In-Reply-To: <87pp9pbkrk.fsf@gmail.com> (Tory S. Anderson's message of "Wed, 04 Feb 2015 13:21:19 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: orgmode list Okay, I've attempted to use my newbie elisp skills to hack together a solution but it doesn't work, yelling at me about wrong number of arguments (why?). Here's what I've put together (clearly inspired by the `org-agenda-filter-by-tag` function). Can anyone help me piece together what's wrong here? --8<---------------cut here---------------start------------->8--- ;; saving views (setq org-agenda-custom-commands '(("x" agenda) ("y" agenda*) ("c" "Class agendas" ((agenda "" ((org-agenda-span 7))) (my-org-agenda-filter-by-tag "LMC_6215" "-")) ;;(org-agenda-filter-apply "+LMC_6215" "tag") ;; This one doesn't work because I can't see what "tag" should be ;; (org-agenda-redo)) ;; would be needed after org-agenda-filter-apply ) )) ;; For my usage (defun my-org-agenda-filter-by-tag (tag char) "A non-interactive version for use in custom commands. Keep only those lines in the agenda buffer that have a specific tag. Char should be + or -, filtering or narrowing." ; (interactive "P") (let* ((alist org-tag-alist-for-agenda) (tag-chars (mapconcat (lambda (x) (if (and (not (symbolp (car x))) (cdr x)) (char-to-string (cdr x)) "")) alist "")) (efforts (org-split-string (or (cdr (assoc (concat org-effort-property "_ALL") org-global-properties)) "0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00" ""))) (effort-op org-agenda-filter-effort-default-operator) (effort-prompt "") (inhibit-read-only t) (current org-agenda-tag-filter) maybe-refresh a n tag) (when (member char '(?+ ?-)) ;; Narrowing down (cond ((equal char ?-) (setq strip t narrow t)) ((equal char ?+) (setq strip nil narrow t)))) (cond ((equal char ?/) (org-agenda-filter-show-all-tag) (when (get 'org-agenda-tag-filter :preset-filter) (org-agenda-filter-apply org-agenda-tag-filter 'tag)) (setq maybe-refresh t)) ((equal char ?. ) (setq org-agenda-tag-filter (mapcar (lambda(tag) (concat "+" tag)) (org-get-at-bol 'tags))) (org-agenda-filter-apply org-agenda-tag-filter 'tag) (setq maybe-refresh t)) ((or (equal char ?\ ) (setq a (rassoc char alist)) (and (>= char ?0) (<= char ?9) (setq n (if (= char ?0) 9 (- char ?0 1)) tag (concat effort-op (nth n efforts)) a (cons tag nil))) (and (= char ??) (setq tag "?eff") a (cons tag nil)) (and tag (setq a (cons tag nil)))) (org-agenda-filter-show-all-tag) (setq tag (car a)) (setq org-agenda-tag-filter (cons (concat (if strip "-" "+") tag) (if narrow current nil))) (org-agenda-filter-apply org-agenda-tag-filter 'tag) (setq maybe-refresh t)) (t (error "Invalid tag selection character %c" char))) (when maybe-refresh (org-agenda-redo)))) --8<---------------cut here---------------end--------------->8--- torys.anderson@gmail.com (Tory S. Anderson) writes: > I'm trying to save an agenda view that I can arrive at in the following way: > > 1. Load agenda (default 1-day view) > 2. / TAB "English_Class" (reduce to only entries tagged English_Class) > 3. \ - TAB "schedule" (further reduce by removing entries having a :schedule tag) > 4. w (load a 7-day span, week-view) > > However, I've been unable to grok the directions at http://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html > > The closest I've come is this: > > --8<---------------cut here---------------start------------->8--- > (setq org-agenda-custom-commands > '(("c" "Class agendas" agenda "" > ((org-agenda-tag-filter '("+LMC_6215")) > (org-agenda-span 7))))) > --8<---------------cut here---------------end--------------->8--- > > But while this successfully sets the span, it fails to filter the buffer (let alone getting to my second filter). Where am I going wrong?