Hi Tom, Tim, Thomas, and Greg, Thank you all for your thoughts. I’ll try to respond to all the main points raised below.
First off, in case it wasn’t clear in my earlier email when I said “#o555 works” or the like I was being lazy and really meaning “(identity #o555)” works. The parsing of “555” to the integer 555 is done by org-babel-parse-header-arguments, and so can’t really be changed. For a simple octal notation our best bet is adding non-digit characters so it is left as a string, e.g. “o555”. ┌──── │ 1 -> (org-babel-parse-header-arguments ":tangle-mode 555" light) │ 1 <- org-babel-parse-header-arguments: ((:tangle-mode . 555)) │ ====================================================================== │ 1 -> (org-babel-parse-header-arguments ":tangle-mode o555" light) │ 1 <- org-babel-parse-header-arguments: ((:tangle-mode . "o555")) └──── So while I’d like it if we could easily apply Tom’s suggestion to “change the radix for bare integers to 8 when reading that particular header”, I don’t think that’s very feasible, unfortunately. Giving errors when a base 10 value has been given by accident would be a nice idea, but in practice isn’t easy as many base 10 values are valid octal values, e.g. #o555 = 365. Likewise, I don’t think Tim’s suggestion of disallowing base 10 values is feasible. Regarding the concern that “we are making a rod for our back by trying to make this overly clever” and that the change makes it too complex — I disagree. Having had this discussion earlier we’ve ended up with, • a shorthand for octal • ls-style • chmod-style I think this small collection of distinct and simple input methods isn’t overly clever or complex, and feel that it strikes the right balance between too many options and too little flexibility. Octal is great, for those that are familiar with it. Likewise, chmod-style is quite natural for those who are used to chmod. There’s little added complexity to the Org code base as we simply pass this to the Emacs function file-modes-symbolic-to-number. I think the ls-style is quite valuable for two reasons. It’s well-established thanks to ls, and is particularly good for understanding permissions at a glance. For reading Org files I think this is advantageous compared to the other styles. I’m don’t find assertions that this is non-typical or unpredictable well-founded. Each style/syntax is well-defined, simple, distinct, and taken from very common/wide spread usage. Tim suggested that invalid forms should cause tangling to fail, but I feel this may be a bit much. Personally I’m inclined to either • warn, and don’t touch the file permissions (this is what currently occurs) • use a very conservative file permission (e.g. rw——-). So, as I see it the main decision that needs to be made is how to handle the octal shorthand, now that it’s clear that the original plan is flawed? I’m thinking either “o555” or “#o555” would be a good improvement over “(identity #o555), but am open to other suggestions. All the best, Timothy