From f50f8d0d103c170633428ffa315ce397531922d5 Mon Sep 17 00:00:00 2001 From: Marco Wahl Date: Tue, 21 Mar 2017 20:42:08 +0100 Subject: [PATCH 1/2] test-org-agenda: Test agenda buffername when reload sticky agenda * testing/lisp/test-org-agenda.el: One additional test to Check that buffer name remains the same after reload. (BTW some cleanup.) --- testing/lisp/test-org-agenda.el | 122 +++++++++++++++++++------------- 1 file changed, 72 insertions(+), 50 deletions(-) diff --git a/testing/lisp/test-org-agenda.el b/testing/lisp/test-org-agenda.el index a37440cf5..0c9928aed 100644 --- a/testing/lisp/test-org-agenda.el +++ b/testing/lisp/test-org-agenda.el @@ -1,4 +1,4 @@ -;;; test-org-agenda.el --- Tests for org-agenda.el -*- lexical-binding: t; -*- +;;; test-org-agenda.el --- Tests for org-agenda.el -*- lexical-binding: t ; -*- ;; Copyright (C) 2017 Marco Wahl @@ -27,37 +27,34 @@ (require 'org-agenda) -;; Auxilliaries for set-up and tear-down and more. +;; General auxilliaries -(defun -sha1-as-defun-name-accc70505c6664ed226e3afa45ca0ecc95a35e83 () - "Name a function with the sha1 of the function text. -Use this function if you are too lazy to invent a function name. +;; (possibly better move to some location in the source.) + +;; Prefixing with '---' on this page. + +;; Evaluate the following function for no brainer function naming. +(defun ---sha1-as-defun-name-39e8857766df959d8b52f9c38739f5a77c392ec0 () + "Insert the sha1 of the function text in front of arglist. The function text starts at the argument list and ends at the -last paren (exclusive)." +last paren (exclusive). +Use this function if you are too lazy to invent a function name." (interactive) - (save-excursion - (let* ((start (progn - (beginning-of-defun) - (search-forward-regexp "\(" nil nil 2) - (backward-char) - (point))) - (end (progn - (end-of-defun) - (backward-char) - (point))) - (sha1 (sha1 (current-buffer) start end))) - ;; relying on (point) is within the defun - (progn - (beginning-of-defun) - (search-forward-regexp " ") - (skip-chars-forward " \t") - (just-one-space)) - (unless (= ?\( (char-after)) - (delete-region (point) (progn (forward-word) (point))) - (just-one-space)) - (insert sha1 " ")))) + (let* ((start (progn + (beginning-of-defun) + (search-forward-regexp "\(" nil nil 2) + (backward-char) + (point))) + (end (progn + (end-of-defun) + (backward-char) + (point))) + (sha1 (sha1 (current-buffer) start end))) + (goto-char start) + (insert sha1 " ") + (backward-word))) -(defun -kill-all-agendas () +(defun ---kill-all-agendas () "Kill all agenda buffers." (mapc #'kill-buffer (cl-remove-if-not @@ -66,50 +63,75 @@ last paren (exclusive)." (eq major-mode 'org-agenda-mode)) (buffer-list)))) +(defun ---agenda-buffers () + "Return agenda buffers in a list." + (cl-remove-if-not + (lambda (x) + (set-buffer x) + (eq major-mode 'org-agenda-mode)) + (buffer-list))) + ;; Test the Agenda -(ert-deftest org-e9d91f5add1245445ba773dd74ac534273113ca5 () +(ert-deftest org-agenda-90c5dce0435b74ba7e9682a4a9a393aeea741739 () "Empty agenda." + (cl-assert (not org-agenda-sticky) nil "precondition violation") + (cl-assert (not (---agenda-buffers)) nil "precondition violation") (let ((org-agenda-span 'day) org-agenda-files) (org-agenda-list) (set-buffer org-agenda-buffer-name) - (should (= 2 (count-lines (point-min) (point-max)))))) + (should (= 2 (count-lines (point-min) (point-max))))) + (---kill-all-agendas)) -(ert-deftest org-a0116aeccdedc04580e42933a16c2893d76ee6bc () +(ert-deftest org-agenda-668f0e69003051b79eb421146f7626ac9438c105 () "One informative line in the agenda." + (cl-assert (not org-agenda-sticky) nil "precondition violation") + (cl-assert (not (---agenda-buffers)) nil "precondition violation") (let ((org-agenda-span 'day) (org-agenda-files `(,(expand-file-name "examples/agenda-file.org" org-test-dir)))) (org-agenda-list nil "<2017-03-10 Fri>") (set-buffer org-agenda-buffer-name) - (should (= 3 (count-lines (point-min) (point-max)))))) + (should (= 3 (count-lines (point-min) (point-max))))) + (---kill-all-agendas)) -(ert-deftest org-165802102bb2d2accf16ff0ae362ef51945ae69f () +(ert-deftest org-agenda-8e6c85e9ff1ea9fed0ae0fa04ff9a3dace6c9d17 () "Agenda buffer name after having created one sticky agenda buffer." - (-kill-all-agendas) - ;; (setq org-agenda-buffer-name "*Org Agenda*") + (cl-assert (not org-agenda-sticky) nil "precondition violation") + (cl-assert (not (---agenda-buffers)) nil "precondition violation") (let ((org-agenda-span 'day) - (org-agenda-buffer-name "*Org Agenda*") - (default-org-agenda-buffer-name org-agenda-buffer-name) (buf (get-buffer org-agenda-buffer-name)) org-agenda-files) (when buf (kill-buffer buf)) (org-test-with-temp-text "<2017-03-17 Fri>" - (org-follow-timestamp-link) ; creates a sticky agenda. - ) - (-kill-all-agendas) + (org-follow-timestamp-link) ; creates a sticky agenda. + ) + (---kill-all-agendas) (org-agenda-list) - (let ((agenda-buffers - (cl-remove-if-not - (lambda (x) - (set-buffer x) - (eq major-mode 'org-agenda-mode)) - (buffer-list)))) - (should (= 1 (length agenda-buffers))) - (should (string= default-org-agenda-buffer-name - (buffer-name (car agenda-buffers)))))) - (-kill-all-agendas)) + (should (= 1 (length (---agenda-buffers)))) + (should (string= "*Org Agenda*" + (buffer-name (car (---agenda-buffers)))))) + (---kill-all-agendas)) + +(ert-deftest org-agenda-9fa27658bf61d8fe2c5b6f9177e9e8ce07f11f7b () + "Agenda buffer name of sticky agenda after reload." + (cl-assert (not org-agenda-sticky) nil "precondition violation") + (cl-assert (not (---agenda-buffers)) nil "precondition violation") + (org-toggle-sticky-agenda) + (let (org-agenda-files) + (org-agenda-list) + (let* ((agenda-buffer-name + (progn + (assert (= 1 (length (---agenda-buffers)))) + (buffer-name (car (---agenda-buffers)))))) + (set-buffer agenda-buffer-name) + (org-agenda-redo) + (should (= 1 (length (---agenda-buffers)))) + (should (string= agenda-buffer-name + (buffer-name (car (---agenda-buffers))))))) + (org-toggle-sticky-agenda) + (---kill-all-agendas)) (provide 'test-org-agenda) From 4b4ccdc3fac7f2405088b730bb8a2559d784605c Mon Sep 17 00:00:00 2001 From: Marco Wahl Date: Tue, 21 Mar 2017 20:47:30 +0100 Subject: [PATCH 2/2] org-agenda: Fix agenda buffer name after reload sticky agenda * lisp/org-agenda.el (org-agenda-list): Don't rename the buffer when redoing sticky. This fix has been proposed by Ian Dunn. TINYCHANGE --- lisp/org-agenda.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index f126a78b8..b7a20cdb5 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4201,6 +4201,7 @@ items if they have an hour specification like [h]h:mm." (catch 'exit (setq org-agenda-buffer-name (or org-agenda-buffer-tmp-name + (and org-agenda-doing-sticky-redo org-agenda-buffer-name) (if org-agenda-sticky (cond ((and org-keys (stringp org-match)) (format "*Org Agenda(%s:%s)*" org-keys org-match))