emacs-orgmode
[Top][All Lists]
Advanced

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

[PATCH] org-table: Add mode flag to enable Calc units simplification mod


From: Daniele Nicolodi
Subject: [PATCH] org-table: Add mode flag to enable Calc units simplification mode
Date: Tue, 20 Oct 2020 15:30:00 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.12.1

Hello,

attached there are a few patches reworking the code, fixing the bug, and
introducing a new mode flag to enable Calc's units simplification mode
as discussed in a recent thread on the mailing list.  I haven't updated
the documentation.  I can do it once we agree that this feature is a
good idea.

Cheers,
Dan


On 19/10/2020 17:38, Daniele Nicolodi wrote:
> Hello,
> 
> I am hacking org-table-eval-formula (see thread about monetary values in
> org-tables) which uses this inline function:
> 
> (defsubst org-table--set-calc-mode (var &optional value)
>   (if (stringp var)
>       (setq var (assoc var '(("D" calc-angle-mode deg)
>                            ("R" calc-angle-mode rad)
>                            ("F" calc-prefer-frac t)
>                            ("S" calc-symbolic-mode t)))
>           value (nth 2 var) var (nth 1 var)))
>   (if (memq var org-tbl-calc-modes)
>       (setcar (cdr (memq var org-tbl-calc-modes)) value)
>     (cons var (cons value org-tbl-calc-modes)))
>   org-tbl-calc-modes)
> 
> which I am not able to understand or which is not correct.
> 
> The first (if ...) does some value substitutions, however, IIUC the
> second (if ...) sets a new value for an entry in the org-tbl-calc-modes
> plist if the entry is already present and builds a new plist with the
> entry prepended if the entry is not there. However, the original plist
> is returned and not the one with the new entry prepended.
> 
> It does not seem to be the intended behavior.
> 
> Shouldn't this be simply:
> 
> (defsubst org-table--set-calc-mode (var &optional value)
>   (if (stringp var)
>       (setq var (assoc var '(("D" calc-angle-mode deg)
>                            ("R" calc-angle-mode rad)
>                            ("F" calc-prefer-frac t)
>                            ("S" calc-symbolic-mode t)))
>           value (nth 2 var) var (nth 1 var)))
>   (plist-put org-tbl-calc-modes var value))
> 
> or, better, the code refactored to do not use this function?
> 
> Cheers,
> Dan
> 

Attachment: 0001-org-table-Fix-table-formula-mode-string-handling.patch
Description: Text document

Attachment: 0003-org-table-Add-mode-flag-to-enable-Calc-units-simplif.patch
Description: Text document

Attachment: 0002-org-table-Simplify-mode-string-parsing.patch
Description: Text document


reply via email to

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