조직 아젠다의 구분선?


12

Q : org아젠다 뷰 에서 디바이더 라인을 배치 할 수 있습니까?

내가해야 할 일이 많을 때 내 의제 버퍼가 약간 바쁠 수 있습니다. 이 혼잡함은 나를 놀라게하기 때문에 내 의제를 보지 못하게하는 비생산적인 효과가 있습니다. 시각적으로 덜 까다로울 수있는 방법을 찾고 있습니다.

내가 원하는 것은 다음과 같은 의제 항목 사이에 구분선 (예 : 대시 선)을 넣을 수 있다는 것입니다.

  • 오늘 마감일이 있습니다
  • 마감일이 지났습니다 (X 일이 지남).
  • 예정된 마감일이 있습니다 (X 일로 인해).

의제보기에서 분배기 라인을 배치 할 수 있습니까? 그렇다면 어떻게해야합니까?


아젠다보기없이 조직 모드 아젠다에 대한 원시 데이터를 얻는 방법 이라는 제목의 반 관련 질문에서 ? 나는 원시 데이터를 획득하는 방법을 보여 대답 게시 : emacs.stackexchange.com/a/12563/2287 당신은을 포함하여, 필요에 따라 데이터를 수정할 수 있습니다, 그러나 국한되지 : replace-regexp-in-string(같은 분할 선 및 / 또는 줄 바꿈을 추가 당신이 원합니다); string-equals특정 기준 또는 원하는 다른 기준을 갖 거나 일치 시킬 수 있습니다 . 기존 텍스트 속성을 값으로 검사하여 기본 제공되는 내용을 익히고 사용하십시오.
lawlist

손에 신선한 커피를 org-mode마시면 문자열의 일부를 교체하여 데이터를 조작하지 않아도 되는 원시 데이터를 사용하는 더 쉬운 방법을 생각했습니다 . 즉, 텍스트 속성을 검사하고 기준과 일치하는 경우 mapcar위의 링크 예에서 버퍼가 채워지기 전 또는 후에 줄과 같은 것을 삽입하십시오 . 이 프로젝트는 생각할 수반 시간은 사용자 정의 만들 구현 수있는 org-agenda버퍼를하고, 예를 수행 하지 찬찬히 org-search-view또는 org-tags-view- 즉, 단지 org-agenda-list.
Lawlist

답변:


2

org-agenda-block-separator

의제에서 블록 사이의 구분 기호입니다. 이것이 문자열이면 줄 바꿈이 추가 된 구분 기호로 사용됩니다. 문자 인 경우 창 너비를 채우기 위해 반복됩니다. nil이면 구분 기호가 비활성화됩니다. 여기서 org-agenda-custom-commands현재 블록과 이전 블록 사이의 구분 기호를 다룹니다.


org-agenda-compact-blocks

non-nil은 블록 아젠다를보다 간결하게 만듭니다. 이는 일정 범위 이름 및 주 번호 또는 구분선과 같은 줄을 생략하여 전체적으로 수행됩니다.


1
고맙지 만 의제 관점에서 이것을 어떻게 사용하는지 예를 들어 줄 수 있습니까?
Dan

1

아젠다보기에서 여러 개의 사용자 정의 명령을 연결하여 자체 검색이 가능한 여러 블록을 가질 수 있습니다.

(setq org-agenda-custom-commands
      '(("D" "Deadlines"
         ((tags-todo "DEADLINE=\"<today>\""
                     ((org-agenda-overriding-header "Due Today"))
                     )
          (tags-todo "DEADLINE<\"<today>\""
                     ((org-agenda-overriding-header "You're Late")))
          (tags-todo "+DEADLINE<\"<+5d>\"+DEADLINE>\"<today>\""
                     ((org-agenda-overriding-header "Better get on it")))
         ))))

끝에 모든 블록에 적용 할 옵션 목록을 배치 할 수도 있습니다.

이 단점은 각 블록이 개별적으로 계산되므로 단일 안건으로 생성하는 데 3 배가 걸린다는 것입니다


1

다음은에 의해 생성되는 항목의 텍스트 속성을 검사하고 org-agenda-list특정 기준에 따라 문자열을 수정하는 방법의 예입니다 . 이 예제에서는 text 속성 값을 가져 ts-date와서 현재 날짜와 비교합니다 OLD:. 기한이 지난 경우에는 ; 현재 인 경우을 추가 CURRENT:하고 미래인 경우을 추가 FUTURE:합니다. 원래 포스터는이 예제를 사용자 정의하여 선택한 위치에 새 줄 및 / 또는 구분선을 추가 할 수 있습니다. 사용자 정의는 org-agenda-sorting-strategy등 의 원본 포스터에서 선택한 정렬 기준에 따라 달라질 수 있습니다 .

이 예에서 함수 org-agenda-finalize-entries;; BEGIN modification및 레이블이 지정된 섹션 사이의 하단 근처에서 수정되었습니다 ;; END modification.

(require 'org-agenda)

(defun org-agenda-finalize-entries (list &optional type)
  "Sort, limit and concatenate the LIST of agenda items.
The optional argument TYPE tells the agenda type."
  (let ((max-effort (cond ((listp org-agenda-max-effort)
         (cdr (assoc type org-agenda-max-effort)))
        (t org-agenda-max-effort)))
  (max-todo (cond ((listp org-agenda-max-todos)
       (cdr (assoc type org-agenda-max-todos)))
      (t org-agenda-max-todos)))
  (max-tags (cond ((listp org-agenda-max-tags)
       (cdr (assoc type org-agenda-max-tags)))
      (t org-agenda-max-tags)))
  (max-entries (cond ((listp org-agenda-max-entries)
          (cdr (assoc type org-agenda-max-entries)))
         (t org-agenda-max-entries))) l)
    (when org-agenda-before-sorting-filter-function
      (setq list
      (delq nil
      (mapcar
       org-agenda-before-sorting-filter-function list))))
    (setq list (mapcar 'org-agenda-highlight-todo list)
    list (mapcar 'identity (sort list 'org-entries-lessp)))
    (when max-effort
      (setq list (org-agenda-limit-entries
      list 'effort-minutes max-effort 'identity)))
    (when max-todo
      (setq list (org-agenda-limit-entries list 'todo-state max-todo)))
    (when max-tags
      (setq list (org-agenda-limit-entries list 'tags max-tags)))
    (when max-entries
      (setq list (org-agenda-limit-entries list 'org-hd-marker max-entries)))
    ;; BEGIN modification
    (setq list
      (mapcar
        (lambda (string)
          (let* (
              (current-date (time-to-days (current-time)))
              (ts-date (get-text-property 0 'ts-date string)) )
            (if ts-date
              (cond
                ((< ts-date current-date)
                  (message "The task dated %s is overdue." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "OLD:  " string))
                ((= ts-date current-date)
                  (message "The task dated %s is due today." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "CURRENT:  " string))
                ((> ts-date current-date)
                  (message "The task dated %s is not due yet." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "FUTURE:  " string)))
              string)))
        list))
    ;; END modification
    (mapconcat 'identity list "\n")))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.