emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Bug: org-install must precede customization [7.02trans]


From: Carsten Dominik
Subject: Re: [Orgmode] Bug: org-install must precede customization [7.02trans]
Date: Fri, 12 Nov 2010 23:50:35 -0600

Hi David,

On Nov 12, 2010, at 11:01 PM, David Abrahams wrote:


Hi Carsten,

I'm sorry to belabor this, but I'm a little confused about what you're
saying.

that is because I just talked garbage.

Let me try a cleaner version.

If I put an autoload cookie in front of a defun, a stub for this function will be created in the autoloads file (for Org this is org- install.el). When this file gets loaded and the corresponding form evaluated, Emacs knows about this function and it will load the corresponding file to get the full function whenever the function is first called.

We had a discussion here some point ago where someone complained that org-capture-templates was not available for customization before org- capture.el actually has been loaded. I thought that putting an autoload cookie in front of a defcustom form would have the desired effect. I had hoped that org-install.el then would make Emacs aware of org-capture-templates and load org-capture.el whenever org-capture- templates first was needed.

However, it does not work like this. In org-install.el, the defcustom is turned into a defvar, which defines the variable and sets it to nil. When later the customize forms are evaluated, they see the variable already defined and assume that the user has set this value on purpose. So customize does not think it is entitled to overrule the users action and so does *not* install its saved value. So this creates a dependence on the load sequence of org-install.el and custom.el. This is bad and unpredictable. Therefore I clearly prefer that org-capture-templates is only available when org-capture indeed has been loaded, and that an error is produced when I try to access the variable before it is defined.

Moreover, if you use `C-c r C' to customize the variable, it will work because the function org-capture is correctly autoloaded.

That is why I have decided to remove the autoload cookie.

Better?

- Carsten


At Fri, 12 Nov 2010 22:40:10 -0600,
Carsten Dominik wrote:


On Nov 12, 2010, at 9:28 PM, David Abrahams wrote:


Hi Carsten,

Is it merely the autoload of org-capture-templates, or is this a
general rule for everything in org-install?  I think I'm perfectly
happy to work with the dependency in place as long as it's documented.

I think that this should work, but it clearly does not.  So the only
clean thing is it to remove it.  The proper sequence should be
to first load org-install and the do any other configuration.

Are you saying "it clearly does not" based solely on the information I
gave you, or is there something else?  I ask because what you say is
the "proper sequence" is supported by my experience.  When I did
things in that order, everything worked.  When I didn't, I ran into
this problem.  It still seems to me that fundamental problem was
simply that the ordering requirement wasn't documented... unless
there's some information I'm missing?

Thanks


- Carsten

For most people it wouldn't be an issue since custom-* puts its
custom-set-variables call at the end of the file. I think you need to
be using something like initsplit to see the problem.

At Fri, 12 Nov 2010 16:29:15 -0600,
Carsten Dominik wrote:

Hi David,

thanks for investigating this.

It seems to me that the autoload has caused more problems than it
solved - so I have removed the autoload again.

- Carsten

On Nov 12, 2010, at 12:45 PM, David Abrahams wrote:


Remember to cover the basics, that is, what you expected to happen
and
what in fact did happen. You don't know how to make a good report?
See

  http://orgmode.org/manual/Feedback.html#Feedback

Your bug report will be posted to the Org-mode mailing list.
------------------------------------------------------------------------

There's an undocumented dependency between org-install and
customizations. In particular, if custom-set-variables is called to
set
org-capture-templates, and then org-install is loaded,
org-capture-templates will be reset to nil.  I tested this with

emacs -Q

Emacs  : GNU Emacs 23.2.1 (x86_64-apple-darwin, NS apple-
appkit-1038.29)
of 2010-05-08 on black.local
Package: Org-mode version 7.02trans

current state:
==============
(setq
org-agenda-deadline-leaders '("D: " "D%d: ")
org-clock-in-switch-to-state "STARTED"
org-agenda-skip-scheduled-if-deadline-is-shown t
org-export-latex-after-initial-vars-hook '(org-beamer-after- initial-
vars)
org-todo-keyword-faces '(("TODO" :foreground "medium blue" :weight
bold)
                       ("APPT" :foreground "medium blue" :weight
bold)
                       ("NOTE" :foreground "brown" :weight bold)
                       ("STARTED" :foreground "dark  orange"
:weight bold)
                       ("WAITING" :foreground "red" :weight bold)
                       ("DELEGATED" :foreground "dark  violet"
:weight bold)
                       ("DEFERRED" :foreground "dark blue" :weight
bold)
                       ("SOMEDAY" :foreground "dark blue" :weight
bold)
                       ("PROJECT" :height 1.5 :weight  bold
:foreground "black"))
org-speed-command-hook '(org-speed-command-default-hook org-babel-
speed-command-hook)
org-agenda-custom-commands '(("E" "Errands (next 3 days)" tags
                            "Errand&TODO<>\"DONE\"&TODO<>
\"CANCELLED\"&STYLE<>\"habit\"&SCHEDULED<\"<+3d>\""
                            ((org-agenda-overriding-header
"Errands (next 3 days)")
                                                                                
                              )
                            )
                           ("A" "Priority #A tasks" agenda ""
                            ((org-agenda-ndays 1)
                             (org-agenda-overriding-header
"Today's priority #A tasks: ")
                             (org-agenda-skip-function
                              (quote (org-agenda-skip-entry-if
(quote notregexp) "\\=.*\\[#A\\]"))
                              )
                             )
                            )
                           ("B" "Priority #A and #B tasks" agenda
""
                            ((org-agenda-ndays 1)
                             (org-agenda-overriding-header
"Today's priority #A and #B tasks: ")
                             (org-agenda-skip-function
                              (quote (org-agenda-skip-entry-if
(quote regexp) "\\=.*\\[#C\\]")))
                             )
                            )
                           ("w" "Waiting/delegated tasks" tags
                            "TODO=\"WAITING\"|TODO=\"DELEGATED\""
                            ((org-agenda-overriding-header
"Waiting/delegated tasks:")
                             (org-agenda-sorting-strategy
                              (quote (todo-state-up priority-down
category-up)))
                             )
                            )
                           ("u" "Unscheduled tasks" tags
                            "TODO<>\"\"&TODO<>\"DONE\"&TODO<>
\"CANCELLED\"&TODO<>\"NOTE\"&CATEGORY<>{CEG\\|ABC\\|Bizcard\\|
Adagio\
\|EVAprint\\|\\<IT\\>}"
                            ((org-agenda-overriding-header
"Unscheduled tasks: ")

                                                                                
                                                                           (org
-agenda-skip-function

                                                                                
                                                                            
(quote



                                                                                
                                                                                
                      (org
-agenda-skip-entry-if







                                                                                
                                                                                
                             (quote
scheduled)







                                                                                
                                                                                
                             (quote
deadline)







                                                                                
                                                                                
                             (quote
timestamp)







                                                                                
                                                                                
                             (quote
regexp)







                                                                                     
                                                                                     
                   "\\*
\\(DEFERRED \\|SOMEDAY\\)")



                                                                                
                                                                                
                      )

                                                                                
                                                                            )

                                                                                
                                                                           (org
-agenda-files

                                                                                
                                                                            
(quote



                                                                                     
                                                                                     
    ("~
/Dropbox/todo.txt")



                                                                                
                                                                                
              )

                                                                                
                                                                            )

                                                                                
                                                                           (org
-agenda-sorting-strategy

                                                                                
                                                                            
(quote



                                                                                
                                                                                
                         (todo
-state-up priority-down category-up)



                                                                                
                                                                                
                         )

                                                                                
                                                                            )

                                                                                
                                                                           )
                            )
                           ("U" "Deferred tasks" tags
"TODO=\"DEFERRED\"&CATEGORY<>{CEG\\| ABC
\\|Bizcard\\|Adagio\\|EVAprint\\|\\<IT\\>}"
                            ((org-agenda-overriding-header
"Deferred tasks:")
                                                                                
                                )
                            )
                           ("S" "Someday tasks" tags
"TODO=\"SOMEDAY\"&CATEGORY<>{CEG\\| ABC\
\|Bizcard\\|Adagio\\|EVAprint\\|\\<IT\\>}"
                            ((org-agenda-overriding-header
"Someday tasks:")
                                                                                
                               )
                            )
                           ("G" "Ledger tasks (all)" tags-todo
"TODO<>{SOMEDAY}"
                            ((org-agenda-files (quote ("~/src/
ledger/plan/TODO")))
                             (org-agenda-overriding-header "Ledger
tasks:")
                             (org-agenda-sorting-strategy
                              (quote (todo-state-up priority-down
category-up)))
                             )
                            )
                           ("l" "Ledger tasks" tags-todo
"TODO<>{SOMEDAY\\|DEFERRED}"
                            ((org-agenda-files (quote ("~/src/
ledger/plan/TODO")))
                             (org-agenda-overriding-header "Ledger
tasks:")
                             (org-agenda-sorting-strategy
                              (quote (todo-state-up priority-down
category-up)))
                             (org-agenda-skip-function
                              (quote (org-agenda-skip-entry-if
(quote regexp) "\\=.*\\[#C\\]")))
                             )
                            )
                           ("L" "Ledger tasks not in Bugzilla"
alltodo ""
                            ((org-agenda-files (quote ("~/src/
ledger/plan/TODO")))
                             (org-agenda-overriding-header "Ledger
tasks:")
                             (org-agenda-sorting-strategy
                              (quote (todo-state-up priority-down
category-up)))
                             (org-agenda-skip-function
                              (quote (org-agenda-skip-entry-if
(quote regexp) "\\(bug:\\)")))
                             )
                            )
                           ("r" "Uncategorized items" tags
"CATEGORY=\"Inbox\"&LEVEL=2"
                            ((org-agenda-overriding-header
"Uncategorized items")))
                           ("W" "Unscheduled work tasks" tags
"CATEGORY={CEG\\|ABC\\|Bizcard\\| Adagio
\\|IT\\|EVAprint}&CATEGORY<>\"Website\"&TODO<>\"DONE\"&TODO<>
\"CANCELLED\"&TODO<>\"NOTE\"&TODO<>\"\"&LEVEL>1"
                            ((org-agenda-overriding-header
"Unscheduled work tasks")

                                                                                
                                                                                
                  (org
-agenda-skip-function

                                                                                
                                                                                
                   (quote



                                                                                
                                                                                
                                             (org
-agenda-skip-entry-if







                                                                                
                                                                                
                                                    (quote
scheduled)







                                                                                
                                                                                
                                                    (quote
deadline)







                                                                                
                                                                                
                                                    )



                                                                                
                                                                                
                                             )

                                                                                
                                                                                
                   )

                                                                                
                                                                                
                  (org
-agenda-sorting-strategy

                                                                                
                                                                                
                   (quote



                                                                                
                                                                                
                                                (todo
-state-up priority-down)



                                                                                
                                                                                
                                                )

                                                                                
                                                                                
                   )

                                                                                
                                                                                
                  )
                            )
                           ("z" "CEG tasks not in Bugzilla" tags
"CATEGORY={CEG\\|ABC\\|Bizcard\\| Adagio \\|IT\\|EVAprint}&CATEGORY<>{Website\\|Admin}&TODO<>\"DONE \"&TODO<>
\"CANCELLED\"&TODO<>\"NOTE\"&TODO<>\"\"&LEVEL>1&SCOPE<>\"local\""
                            ((org-agenda-overriding-header "CEG
tasks not in Bugzilla")

                                                                                
                                                                                
                                         (org
-agenda-skip-function

                                                                                
                                                                                
                                          (quote



                                                                                
                                                                                
                                                                    (org
-agenda-skip-entry-if







                                                                                
                                                                                
                                                                           
(quote
regexp)







                                                                                     
                                                                                     
                                                                 "\\(cegbug
:\\)")



                                                                                
                                                                                
                                                                    )

                                                                                
                                                                                
                                          )

                                                                                
                                                                                
                                         )
                            )
                           ("Z" "CEG tasks in Bugzilla" tags
"CATEGORY={CEG\\|ABC\\|Bizcard\\| Adagio
\\|IT\\|EVAprint}&TODO<>\"DONE\"&TODO<>\"CANCELLED\"&TODO<>
\"DELEGATED\"&TODO<>\"NOTE\"&LEVEL>1"
                            ((org-agenda-overriding-header "CEG
tasks in Bugzilla")

                                                                                
                                                                                
     (org
-agenda-skip-function

                                                                                
                                                                                
      (quote



                                                                                
                                                                                
                                (org
-agenda-skip-entry-if







                                                                                
                                                                                
                                       (quote
notregexp)







                                                                                     
                                                                                     
                             "cegbug
:")



                                                                                
                                                                                
                                )

                                                                                
                                                                                
      )

                                                                                
                                                                                
     (org
-agenda-sorting-strategy

                                                                                
                                                                                
      (quote



                                                                                
                                                                                
                                   (todo
-state-up category-down priority-down user-defined-up)



                                                                                
                                                                                
                                   )

                                                                                
                                                                                
      )

                                                                                
                                                                                
     )
                            )
                           )
org-agenda-files '("~/Dropbox/todo.txt" "~/Dropbox/Projects")
org-agenda-include-diary t
org-blocker-hook '(org-block-todo-from-children-or-siblings-or-
parent)
org-agenda-menu-two-column t
org-agenda-tags-column -100
org-hide-leading-stars t
org-clock-into-drawer "LOGBOOK"
org-completion-use-ido t
org-metaup-hook '(org-babel-load-in-session-maybe)
org-footnote-section nil
org-agenda-scheduled-leaders '("" "S%d: ")
org-archive-save-context-info '(time category itags)
org-after-todo-state-change-hook '(org-clock-out-if-current)
org-agenda-text-search-extra-files '(agenda-archives)
org-archive-location "TODO-archive::"
org-agenda-skip-unavailable-files t
org-agenda-default-appointment-duration 60
org-time-clocksum-use-fractional t
org-agenda-sorting-strategy '((agenda habit-down time-up todo- state-
up priority-down category-keep)
                            (todo priority-down category-keep)
(tags priority-down category-keep)
                            (search category-keep))
org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup)
org-agenda-prefix-format '((agenda . " %-11:c%?-12t% s") (timeline
. "  % s") (todo . "  %-11:c")
                         (tags . "  %-11:c"))
org-habit-preceding-days 42
org-export-latex-format-toc-function 'org-export-latex-format-toc-
default
org-agenda-skip-scheduled-if-done t
org-stuck-projects '("+LEVEL=1/-DONE" ("TODO" "STARTED" "NEXT"
"NEXTACTION") nil
                   "\\(Appointments\\|Notes\\|Anniversaries\\)")
org-clock-in-resume t
org-export-preprocess-hook '(org-eval-replace-snippts)
org-tab-first-hook '(org-hide-block-toggle-maybe org-src-native- tab-
command-maybe
                   org-babel-hide-result-toggle-maybe)
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-
configure-edit-buffer)
org-mac-mail-account "GMail: BoostPro"
org-cycle-global-at-bob t
org-confirm-shell-link-function nil
org-reveal-start-hook '(org-decrypt-entry)
org-export-first-hook '(org-beamer-initialize-open-trackers)
org-use-tag-inheritance nil
org-clock-persist 'history
org-todo-keywords '((sequence "TODO" "APPT" "|" "DONE" "NOTE"))
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-M-RET-may-split-line '((headline) (default . t))
org-default-notes-file "~/Dropbox/todo.txt"
org-directory "~/Dropbox/Projects"
org-tag-alist '((#("LUANN" 0 5 (face nil)) . 110) (#("WORK" 0 4
(face nil)) . 119))
org-agenda-persistent-filter t
org-babel-pre-tangle-hook '(save-buffer)
org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-
drawers org-cycle-show-empty-lines
               org-optimize-window-after-visibility-change)
org-export-preprocess-before-normalizing-links-hook '(org-remove-
file-link-modifiers)
org-use-speed-commands t
org-mode-hook '((lambda nil (local-set-key [(control 44)] (quote
backward-word)))
              #[nil "\300\301\302\303\304$\207"
                [org-add-hook change-major-mode-hook org-show-
block-all append local] 5]
              #[nil "\300\301\302\303\304$\207"
                [org-add-hook change-major-mode-hook org-babel-
show-result-all append local] 5]
org-babel-result-hide-spec org-babel-hide-all- hashes)
org-agenda-menu-show-matcher nil
org-clock-out-remove-zero-time-clocks t
org-font-lock-hook '(org-eval-handle-snippets)
org-agenda-ndays 1
org-refile-targets '((org-agenda-files :level . 1) (org-agenda-
files :todo . "PROJECT"))
org-extend-today-until 2
org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point org-babel- execute-
safely-maybe)
org-confirm-elisp-link-function nil
org-fast-tag-selection-single-key 'expert
org-todo-repeat-to-state "TODO"
org-clock-modeline-total 'current
org-agenda-start-on-weekday nil
org-agenda-fontify-priorities t
org-export-interblocks '((lob org-babel-exp-lob-one-liners) (src
org-
babel-exp-inline-src-blocks))
org-enforce-todo-dependencies t
org-agenda-skip-deadline-if-done t
org-reverse-note-order t
org-occur-hook '(org-first-headline-recenter)
org-export-preprocess-before-selecting-backend-code-hook '(org-
beamer-select-beamer-code)
org-agenda-cmp-user-defined 'org-cmp-ceg-bugs
org-export-preprocess-after-include-files-hook '(org-export- blocks-
preprocess)
org-tags-column -97
org-modules '(org-crypt org-id org-habit org-mac-message org-
bookmark org-eval)
org-agenda-auto-exclude-function 'org-my-auto-exclude-function
org-ellipsis 'org-habit-alert-face
org-export-latex-final-hook '(org-beamer-amend-header
org-beamer-fix-
toc
                            org-beamer-auto-fragile-frames
                            org-beamer-place-default-actions-for-
lists)
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-clock-idle-time 10
org-attach-method 'mv
org-export-blocks '((src org-babel-exp-src-blocks nil) (comment org-
export-blocks-format-comment t)
                  (ditaa org-export-blocks-format-ditaa nil)
                  (dot org-export-blocks-format-dot nil))
)
--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com


_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode



--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com




--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com





reply via email to

[Prev in Thread] Current Thread [Next in Thread]