Hello everyone, I get some unexpected behaviour in org-column mode on my workstation (Emacs 24.3, org-version 8.2.2, Win 7 64 bit). May I ask support in order to understand: - if this is reproducible for you as well - if it is actually a bug, or a mess on my local installation, or if I misunderstood how to use org-column properly Thanks in advance to anyone patient enough to read this and give it a try. Kindest regards, Andrea. HOW TO REPRODUCE PROBLEM A: 1) create an example Org file like this: * myproject ** mytask1 ** mytask2 2) click on the word "myproject", C-c C-x C-c to enable column view 3) M-S-<right>, then answer the wizard questions: property=cost, title=cost, width=8, summary=add_numbers 4) now click on the word "myproject", type q to leave org-columns mode 5) you will see that in the first row of the buffer a new line appears: #+COLUMNS: %25ITEM %8cost %TODO %3PRIORITY %TAGS I expected "%8cost{+}" instead of "%8cost". Even if f I change manually "%8cost" to "%8cost{+}" the automatic sums (cost of myproject sums cost of mytask1+mytask2) still don't work. The sums work properly if I remove the entire #+COLUMNS statement and add to the :PROPERTIES: of row "myproject" the following property: :COLUMNS: %25ITEM %8cost{+} %TODO %3PRIORITY %TAGS HOW TO REPRODUCE PROBLEM B: 1, 2, 3) same steps than problem A 4) go on row "mytask1" column "cost", type "e" to edit the value, set it to 1234, type RET 5) type "e" and change the proposed value 1234 into the empty string, then type RET 6) type "e" and set the value to 3456, then type RET 7) go on row "mytask1", type TAB to see the properties: you will see that the properties are now: :PROPERTIES: :cost: :cost: 3456 :END: (I did not expect that empty :cost: column)
Hi Andrea,
I have fixed problem A. Problem B has to do with the fact that the property search function does not find a property with an empty value. I need to look into this some more.
- Carsten
On Nov 22, 2013, at 8:30 PM, andrea.rossetti@gmail.com wrote:
>
> Hello everyone,
>
> I get some unexpected behaviour in org-column mode on my
> workstation (Emacs 24.3, org-version 8.2.2, Win 7 64 bit).
> May I ask support in order to understand:
>
> - if this is reproducible for you as well
> - if it is actually a bug, or a mess on my local installation,
> or if I misunderstood how to use org-column properly
>
> Thanks in advance to anyone patient enough to read this
> and give it a try. Kindest regards, Andrea.
>
>
>
>
> HOW TO REPRODUCE PROBLEM A:
>
> 1) create an example Org file like this:
>
> * myproject
> ** mytask1
> ** mytask2
>
> 2) click on the word "myproject", C-c C-x C-c to enable
> column view
>
> 3) M-S-<right>, then answer the wizard questions:
> property=cost, title=cost, width=8, summary=add_numbers
>
> 4) now click on the word "myproject", type q to leave
> org-columns mode
>
> 5) you will see that in the first row of the buffer
> a new line appears:
>
> #+COLUMNS: %25ITEM %8cost %TODO %3PRIORITY %TAGS
>
> I expected "%8cost{+}" instead of "%8cost". Even
> if f I change manually "%8cost" to "%8cost{+}" the
> automatic sums (cost of myproject sums cost of
> mytask1+mytask2) still don't work.
>
> The sums work properly if I remove the entire
> #+COLUMNS statement and add to the :PROPERTIES: of
> row "myproject" the following property:
>
> :COLUMNS: %25ITEM %8cost{+} %TODO %3PRIORITY %TAGS
>
>
>
> HOW TO REPRODUCE PROBLEM B:
>
> 1, 2, 3) same steps than problem A
>
> 4) go on row "mytask1" column "cost", type "e" to edit
> the value, set it to 1234, type RET
>
> 5) type "e" and change the proposed value 1234 into
> the empty string, then type RET
>
> 6) type "e" and set the value to 3456, then type RET
>
> 7) go on row "mytask1", type TAB to see the properties:
> you will see that the properties are now:
>
> :PROPERTIES:
> :cost:
> :cost: 3456
> :END:
>
> (I did not expect that empty :cost: column)
>
[-- Attachment #1: Type: text/plain, Size: 352 bytes --] Hello Carsten and everyone else reading, yesterday I re-stumbled into the "problem B" described below, and had a look at the Org sources. I think the solution could be: if user sets a non-special property to "" or nil, then remove the property. An example of a possible (non-bulletproof, test-only-intended) patch for "org-entry-put" follows. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: org.el.diff --] [-- Type: text/x-patch, Size: 621 bytes --] *** c:/Users/andrea/AppData/Roaming/.emacs.d/elpa/org-20140422/org.el Wed Apr 23 22:15:51 2014 --- c:/Users/andrea/AppData/Roaming/.emacs.d/elpa/org-20140422/org.new.el Thu Apr 24 12:40:49 2014 *************** *** 15557,15562 **** --- 15557,15563 ---- ((member property org-special-properties) (error "The %s property can not yet be set with `org-entry-put'" property)) + ((equal value "") (org-delete-property property)) (t ; a non-special property (let ((buffer-invisibility-spec (org-inhibit-invisibility))) ; Emacs 21 (setq range (org-get-property-block beg end 'force)) [-- Attachment #3: Type: text/plain, Size: 1924 bytes --] Does it make sense for you too? Kindest regards, Andrea Carsten Dominik <carsten.dominik@gmail.com> writes: > Hi Andrea, > > I have fixed problem A. Problem B has to do with the fact that the > property search function does not find a property with an empty value. > I need to look into this some more. > > - Carsten > On Nov 22, 2013, at 8:30 PM, andrea.rossetti@gmail.com wrote: > ....... >> >> HOW TO REPRODUCE PROBLEM A: >> >> 1) create an example Org file like this: >> >> * myproject >> ** mytask1 >> ** mytask2 >> >> 2) click on the word "myproject", C-c C-x C-c to enable >> column view >> >> 3) M-S-<right>, then answer the wizard questions: >> property=cost, title=cost, width=8, summary=add_numbers >> >> 4) now click on the word "myproject", type q to leave >> org-columns mode >> >> 5) you will see that in the first row of the buffer >> a new line appears: >> >> #+COLUMNS: %25ITEM %8cost %TODO %3PRIORITY %TAGS >> >> I expected "%8cost{+}" instead of "%8cost". Even >> if f I change manually "%8cost" to "%8cost{+}" the >> automatic sums (cost of myproject sums cost of >> mytask1+mytask2) still don't work. >> >> The sums work properly if I remove the entire >> #+COLUMNS statement and add to the :PROPERTIES: of >> row "myproject" the following property: >> >> :COLUMNS: %25ITEM %8cost{+} %TODO %3PRIORITY %TAGS >> >> >> >> HOW TO REPRODUCE PROBLEM B: >> >> 1, 2, 3) same steps than problem A >> >> 4) go on row "mytask1" column "cost", type "e" to edit >> the value, set it to 1234, type RET >> >> 5) type "e" and change the proposed value 1234 into >> the empty string, then type RET >> >> 6) type "e" and set the value to 3456, then type RET >> >> 7) go on row "mytask1", type TAB to see the properties: >> you will see that the properties are now: >> >> :PROPERTIES: >> :cost: >> :cost: 3456 >> :END: >> >> (I did not expect that empty :cost: column) >>
Hi Andrea, I pushed another fix for the second problem you reported, something along the lines of what you suggested. Let me know if it works for you, and thanks for reporting this, -- Bastien
[-- Attachment #1: Type: text/plain, Size: 1171 bytes --] Bastien <bzg@gnu.org> writes: > Let me know if it works for you, Hi! I tried a recent git snapshot (Fri May 30 19:28:04 2014 +0200) and performed some manual tests (1 to 5, see below). - in org-columns mode ("C-c C-x C-c"): - 1) PASS: org-columns-edit-value ("e") updates correctly the empty/whitespace string - in normal org-mode (i.e. not org-columns mode): - 2) PASS: org-set-property ("C-c C-x p") and org-set-property-and-value ("C-c C-x P") update correctly the empty/whitespace string - 3) FAIL: when using org-set-property or org-set-property-and-value interactively, tab autocompletion for the "Property: " prompt can't find the name of property X if the old value of X was an empty/whitespace string - 4) FAIL: org-delete-property ("M-x org-delete-property") commands skips/ignores a property name if the value is empty/whitespace string I think that commit 822dcfc881a5df3249fcecf4b7bc71ee9c321b92 addressed the tests 1) and 2) and they pass, so I'd say the commit is OK. The tests 3) and 4) pass if I use the following (naive, demonstrative-only, just-to-give-the-idea) patch: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: naive-patch-for-org-delete-property.diff --] [-- Type: text/x-patch, Size: 890 bytes --] diff --git a/lisp/org.el b/lisp/org.el index d645897..a772743 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -15530,7 +15530,7 @@ things up because then unnecessary parsing is avoided." (setq range (org-get-property-block beg end)) (when range (goto-char (car range)) - (while (re-search-forward org-property-re + (while (re-search-forward (org-re-property ".*?" 'literal t) (cdr range) t) (setq key (org-match-string-no-properties 2) value (org-trim (or (org-match-string-no-properties 3) ""))) @@ -15619,7 +15619,7 @@ If yes, return this value. If not, return the current value of the variable." (if (and range (goto-char (car range)) (re-search-forward - (org-re-property property) + (org-re-property property nil t) (cdr range) t)) (progn (delete-region (match-beginning 0) (1+ (point-at-eol))) [-- Attachment #3: Type: text/plain, Size: 549 bytes --] For curiosity I also tested a wrong-syntax input: - 5) if the user edits manually the :PROPERTIES: block and adds an empty-valued property (example: :prop1:) and he forgets to add at least one whitespace character after :prop1: then the tests 1)-2)-3)-4) fail I'd say: 5) is acceptable behaviour, but special care must be taken by users that hand-edit empty-valued properties, as it's easy to miss a whitespace while typing. > and thanks for reporting this, Thanks to you for your work on this one. Cheers, Andrea
Hi Andrea,
Andrea Rossetti <andrea.rossetti@gmail.com> writes:
> Bastien <bzg@gnu.org> writes:
>
>> Let me know if it works for you,
>
> - 3) FAIL: when using org-set-property or org-set-property-and-value
> interactively, tab autocompletion for the "Property: " prompt
> can't find the name of property X if the old value of X was an
> empty/whitespace string
>
> - 4) FAIL: org-delete-property ("M-x org-delete-property") commands
> skips/ignores a property name if the value is
> empty/whitespace string
This should be fixed now in maint, thanks for the detailed tests and
the suggested fix!
--
Bastien