"Sebastien Vauban" writes: > Hi Eric, > > Eric Schulte wrote: >> "Sebastien Vauban" writes: >>> Eric Schulte wrote: >>>> Emacs Lisp is an exception in terms of colname processing, it has default >>>> header arguments set to pass column names through to the code block, where >>>> the processing may be done trivially in Emacs Lisp. >>> >>> OK, but I don't understand the precedence of header arguments. I thought >>> that a header argument given on the code block preempted all the other >>> values (system-wide default for all languages, language defaults, file-wide >>> arguments, and subtree arguments). >>> >>> Why isn't this true here as well? >> >> That is what is happening here, although combinations of :hlines and >> :colnames can be tricky. Especially weird, is that if you want to *unset* a >> header argument which is set at a higher level, you need to set it to '(), >> as in ":colnames '()". > > Much clearer, but not yet crystal-clear for me... > > Let me explain. AFAICT, there were 5 possibles values of the ":colnames" > header argument: > > - no header argument :: (default for all languages but Emacs Lisp) > - ":colnames no" :: (default for Emacs Lisp code blocks) > - ":colnames yes" :: Tells Org Babel that your first row contains column > names. > - ":colnames " :: Specifies to use as column names. > - ":colnames nil" :: Same as ":colnames yes". > > > Right? > Almost, values 1 (none) and 5 (nil) are the same. > > Now, indeed, your trick with ":colnames '()" (or even ":colnames > ()"...) does work well for Emacs-Lisp... > > Though, I thought that "()" was equivalent to "nil", but it seems not > to be the case, then. Is it because of some sort of type coercion, > that would convert nil as a string or something along such lines? > See "Emacs Lisp evaluation of variables" in (info "(org)var"). We could add nil as a special exception, but that might be surprising to some people. > > Extra question: when do we have to use such a trick? When the value can be a > list of things? If yes, why are you talking of ":hlines" -- there is no list > argument there? > Whenever you want to "unset" a header argument, which has a value set at some higher level.