emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug: error in org-table-justify-field-maybe - in conjunction with org-sbe [9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)]
@ 2020-02-29 13:31 Lester Longley
  2020-09-05 13:20 ` Bastien
  0 siblings, 1 reply; 2+ messages in thread
From: Lester Longley @ 2020-02-29 13:31 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 7443 bytes --]

Hello,

I am encountering an error when using this .org code:

----------------------------------------------------------------------
| abc | hello |
#+TBLFM: :: $2 = '(org-sbe hello_world)

#+NAME: hello_world
#+BEGIN_SRC shell -n
  echo "hello"
#+END_SRC
----------------------------------------------------------------------

The error can be reproduced as follows:

(1) setup: (org-babel-do-load-languages 'org-babel-load-languages
'((emacs-lisp . t) (shell . t)))
(2) with position at beg of table - C-c C-c - succeeds
(3) with position (still) at beg of table - C-c C-c (again) - fails, with
Backtrace as attached.

The error is from this line in function "org-table-justify-field-maybe()"
of "org-table.el":

     ((<= (org-string-width new) width)

... where "width" is nil.

It seems to be caused by a wrong state of variable
"org-table-last-column-widths".

After the 1st C-c C-c, org-table-last-column-widths contains: "(3 5)" -
correct
After the 2nd C-c C-c, org-table-last-column-widths contains: "(5)" - wrong

The latter value results, I think, from a prior invocation of
"org-table-import" overwriting "org-table-last-column-widths".

(There are other ways to trigger the error; this is the simplest recipe I
have found.)

Thanks for your help.

Regards,
Lester

Emacs  : GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-09-15, modified by Debian
Package: Org mode version 9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)

current state:
==============
(setq
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
 org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
 org-occur-hook '(org-first-headline-recenter)
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-confirm-shell-link-function 'yes-or-no-p
 org-src-mode-hook '(org-src-babel-configure-edit-buffer
    org-src-mode-configure-edit-buffer)
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-babel-pre-tangle-hook '(save-buffer)
 org-mode-hook '((closure
 (org--rds reftex-docstruct-symbol org-element-greater-elements
  org-clock-history org-agenda-current-date org-with-time
  org-defdecode org-def org-read-date-inactive org-ans2 org-ans1
  org-columns-current-fmt-compiled org-clock-current-task
  org-clock-effort org-agenda-skip-function
  org-agenda-skip-comment-trees org-agenda-archives-mode
  org-end-time-was-given org-time-was-given org-log-note-extra
  org-log-note-purpose org-log-post-message
  org-last-inserted-timestamp org-last-changed-timestamp
  org-entry-property-inherited-from org-blocked-by-checkboxes
  org-state org-agenda-headline-snapshot-before-repeat
  org-capture-last-stored-marker org-agenda-start-on-weekday
  org-agenda-buffer-tmp-name org-priority-regexp buffer-face-mode-face
  org-tbl-menu org-org-menu org-struct-menu org-entities
  org-last-state org-id-track-globally org-clock-start-time
  texmathp-why remember-data-file
  org-agenda-tags-todo-honor-ignore-options iswitchb-temp-buflist
  calc-embedded-open-mode calc-embedded-open-formula
  calc-embedded-close-formula align-mode-rules-list org-emphasis-alist
  org-emphasis-regexp-components org-export-registered-backends
  org-modules org-babel-load-languages
  org-indent-indentation-per-level org-element-paragraph-separate
  ffap-url-regexp org-inlinetask-min-level t)
 nil
 (add-hook (quote change-major-mode-hook) (quote org-show-all)
  (quote append) (quote local))
 )
(closure
 (org-src-window-setup *this* org-babel-confirm-evaluate-answer-no
  org-src-preserve-indentation org-src-lang-modes
  org-edit-src-content-indentation org-babel-library-of-babel t)
 nil
 (add-hook (quote change-major-mode-hook)
  (quote org-babel-show-result-all) (quote append) (quote local))
 )
org-babel-result-hide-spec org-babel-hide-all-hashes)
 org-bibtex-headline-format-function '(closure
      (org-id-locations
org-agenda-search-view-always-boolean
org-agenda-overriding-header t)
      (entry) (cdr (assq :title entry)))
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
 org-optimize-window-after-visibility-change)
 org-link-shell-confirm-function 'yes-or-no-p
 org-link-elisp-confirm-function 'yes-or-no-p
 org-table-automatic-realign nil
 org-confirm-elisp-link-function 'yes-or-no-p
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-link-parameters '(("attachment" :follow org-attach-open-link :export
org-attach-export-link :complete org-attach-complete-link)
      ("id" :follow org-id-open)
      ("eww" :follow eww :store org-eww-store-link)
      ("rmail" :follow org-rmail-open :store org-rmail-store-link)
      ("mhe" :follow org-mhe-open :store org-mhe-store-link)
      ("irc" :follow org-irc-visit :store org-irc-store-link :export
org-irc-export)
      ("info" :follow org-info-open :export org-info-export :store
org-info-store-link)
      ("gnus" :follow org-gnus-open :store org-gnus-store-link)
      ("docview" :follow org-docview-open :export org-docview-export
:store org-docview-store-link)
      ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link)
      ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete
org-bbdb-complete-link :store org-bbdb-store-link)
      ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs")
      ("shell" :follow org-link--open-shell)
      ("news" :follow
(closure
((scheme . "news") (--dolist-tail--) org-ts-regexp
 org-time-stamp-formats org-src-source-file-name
 org-outline-regexp-bol org-inhibit-startup
 org-id-link-to-org-use-id org-highlight-links
 org-comment-string org-agenda-buffer-name
 clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme ":" url)))
)
      ("mailto" :follow
(closure
((scheme . "mailto") (--dolist-tail--) org-ts-regexp
 org-time-stamp-formats org-src-source-file-name
 org-outline-regexp-bol org-inhibit-startup
 org-id-link-to-org-use-id org-highlight-links
 org-comment-string org-agenda-buffer-name
 clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme ":" url)))
)
      ("https" :follow
(closure
((scheme . "https") (--dolist-tail--) org-ts-regexp
 org-time-stamp-formats org-src-source-file-name
 org-outline-regexp-bol org-inhibit-startup
 org-id-link-to-org-use-id org-highlight-links
 org-comment-string org-agenda-buffer-name
 clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme ":" url)))
)
      ("http" :follow
(closure
((scheme . "http") (--dolist-tail--) org-ts-regexp
 org-time-stamp-formats org-src-source-file-name
 org-outline-regexp-bol org-inhibit-startup
 org-id-link-to-org-use-id org-highlight-links
 org-comment-string org-agenda-buffer-name
 clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme ":" url)))
)
      ("ftp" :follow
(closure
((scheme . "ftp") (--dolist-tail--) org-ts-regexp
 org-time-stamp-formats org-src-source-file-name
 org-outline-regexp-bol org-inhibit-startup
 org-id-link-to-org-use-id org-highlight-links
 org-comment-string org-agenda-buffer-name
 clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme ":" url)))
)
      ("help" :follow org-link--open-help)
      ("file" :complete org-link-complete-file)
      ("elisp" :follow org-link--open-elisp)
      ("doi" :follow org-link--open-doi))
 org-babel-load-languages '((emacs-lisp . t) (shell . t))
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 )

[-- Attachment #1.2: Type: text/html, Size: 9433 bytes --]

[-- Attachment #2: bug.backtrace.txt --]
[-- Type: text/plain, Size: 58004 bytes --]

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  <=(5 nil)
  (cond (org-table-may-need-update (format " %s |" (or new field))) ((not properly-closed\?) (setq org-table-may-need-update t) (format " %s |" (or new field))) ((not new) (concat (org-table--align-field field width align) "|")) ((<= (org-string-width new) width) (concat (org-table--align-field new width align) "|")) (t (setq org-table-may-need-update t) (format " %s |" new)))
  (progn (cond (org-table-may-need-update (format " %s |" (or new field))) ((not properly-closed\?) (setq org-table-may-need-update t) (format " %s |" (or new field))) ((not new) (concat (org-table--align-field field width align) "|")) ((<= (org-string-width new) width) (concat (org-table--align-field new width align) "|")) (t (setq org-table-may-need-update t) (format " %s |" new))))
  (unwind-protect (progn (cond (org-table-may-need-update (format " %s |" (or new field))) ((not properly-closed\?) (setq org-table-may-need-update t) (format " %s |" (or new field))) ((not new) (concat (org-table--align-field field width align) "|")) ((<= (org-string-width new) width) (concat (org-table--align-field new width align) "|")) (t (setq org-table-may-need-update t) (format " %s |" new)))) (set-match-data save-match-data-internal (quote evaporate)))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (cond (org-table-may-need-update (format " %s |" (or new field))) ((not properly-closed\?) (setq org-table-may-need-update t) (format " %s |" (or new field))) ((not new) (concat (org-table--align-field field width align) "|")) ((<= (org-string-width new) width) (concat (org-table--align-field new width align) "|")) (t (setq org-table-may-need-update t) (format " %s |" new)))) (set-match-data save-match-data-internal (quote evaporate))))
  (let* ((align (nth (1- col) org-table-last-alignment)) (width (nth (1- col) org-table-last-column-widths)) (cell (match-string 0)) (field (match-string 1)) (properly-closed\? (/= (match-beginning 2) (match-end 2))) (new-cell (let ((save-match-data-internal (match-data))) (unwind-protect (progn (cond (org-table-may-need-update ...) (... ... ...) (... ...) (... ...) (t ... ...))) (set-match-data save-match-data-internal (quote evaporate)))))) (if (equal new-cell cell) nil (let (org-table-may-need-update) (replace-match new-cell t t))) (goto-char pos))
  (if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")) (setq org-table-may-need-update t) (let* ((align (nth (1- col) org-table-last-alignment)) (width (nth (1- col) org-table-last-column-widths)) (cell (match-string 0)) (field (match-string 1)) (properly-closed\? (/= (match-beginning 2) (match-end 2))) (new-cell (let ((save-match-data-internal (match-data))) (unwind-protect (progn (cond ... ... ... ... ...)) (set-match-data save-match-data-internal (quote evaporate)))))) (if (equal new-cell cell) nil (let (org-table-may-need-update) (replace-match new-cell t t))) (goto-char pos)))
  (progn (skip-chars-backward "^|") (if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")) (setq org-table-may-need-update t) (let* ((align (nth (1- col) org-table-last-alignment)) (width (nth (1- col) org-table-last-column-widths)) (cell (match-string 0)) (field (match-string 1)) (properly-closed\? (/= (match-beginning 2) (match-end 2))) (new-cell (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...))))) (if (equal new-cell cell) nil (let (org-table-may-need-update) (replace-match new-cell t t))) (goto-char pos))))
  (if (> col 0) (progn (skip-chars-backward "^|") (if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")) (setq org-table-may-need-update t) (let* ((align (nth (1- col) org-table-last-alignment)) (width (nth (1- col) org-table-last-column-widths)) (cell (match-string 0)) (field (match-string 1)) (properly-closed\? (/= (match-beginning 2) (match-end 2))) (new-cell (let (...) (unwind-protect ... ...)))) (if (equal new-cell cell) nil (let (org-table-may-need-update) (replace-match new-cell t t))) (goto-char pos)))))
  (let ((pos (point)) (col (org-table-current-column))) (if (> col 0) (progn (skip-chars-backward "^|") (if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")) (setq org-table-may-need-update t) (let* ((align (nth ... org-table-last-alignment)) (width (nth ... org-table-last-column-widths)) (cell (match-string 0)) (field (match-string 1)) (properly-closed\? (/= ... ...)) (new-cell (let ... ...))) (if (equal new-cell cell) nil (let (org-table-may-need-update) (replace-match new-cell t t))) (goto-char pos))))))
  (cond ((and (not new) org-table-may-need-update)) ((org-at-table-hline-p)) ((and (not new) (or (not (eq (marker-buffer org-table-aligned-begin-marker) (current-buffer))) (< (point) org-table-aligned-begin-marker) (>= (point) org-table-aligned-end-marker))) (setq org-table-may-need-update t)) (t (let ((pos (point)) (col (org-table-current-column))) (if (> col 0) (progn (skip-chars-backward "^|") (if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)")) (setq org-table-may-need-update t) (let* (... ... ... ... ... ...) (if ... nil ...) (goto-char pos))))))))
  org-table-justify-field-maybe("hello")
  (while (> ndown 0) (setq fields (org-split-string (org-trim (buffer-substring-no-properties (line-beginning-position) (line-end-position))) " *| *")) (if duration (setq fields (mapcar (function (lambda (x) (org-table-time-string-to-seconds x))) fields))) (if (eq numbers t) (setq fields (mapcar (function (lambda (x) (if (string-match "\\S-" x) (number-to-string ...) x))) fields))) (setq ndown (1- ndown)) (setq form (copy-sequence formula) lispp (and (> (length form) 2) (equal (substring form 0 2) "'("))) (if (and lispp literal) (setq lispp (quote literal))) (while (string-match "[@$]#" form) (setq form (replace-match (format "%d" (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) t t form))) (org-table--error-on-old-row-references form) (setq form (org-table-remote-reference-indirection form)) (while (string-match "\\<remote([ 	]*\\([^,)]+\\)[ 	]*,[ 	]*\\([^\n)]+\\))" form) (setq form (replace-match (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference ... keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate)))) t t form))) (while (and (string-match org-table-range-regexp form) (> (length (match-string 0 form)) 1)) (setq formrg (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-get-range (match-string 0 form) org-table-current-begin-pos n0)) (set-match-data save-match-data-internal (quote evaporate))))) (setq formrpl (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference (if duration ... formrg) keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate))))) (if (not (let ((save-match-data-internal (match-data))) (unwind-protect (progn (string-match ... formrpl)) (set-match-data save-match-data-internal (quote evaporate))))) (setq form (replace-match formrpl t t form)) (user-error "Spreadsheet error: invalid reference \"%s\"" form))) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)\\.\\.\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq form (replace-match (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference ... keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate)))) t t form))) (setq form0 form) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq n (+ (string-to-number (match-string 1 form)) (if (match-end 2) n0 0)) x (nth (1- (if (= n 0) n0 (max n 1))) fields) formrpl (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference x keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate))))) (if (or (not x) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (string-match ... formrpl)) (set-match-data save-match-data-internal (quote evaporate))))) (progn (user-error "Invalid field specifier \"%s\"" (match-string 0 form)))) (setq form (replace-match formrpl t t form))) (if lispp (setq ev (condition-case nil (eval (eval (read form))) (error "#ERROR")) ev (if (numberp ev) (number-to-string ev) ev) ev (if duration (org-table-time-seconds-to-string (string-to-number ev) duration-output-format) ev)) (setq form (replace-regexp-in-string org-ts-regexp-inactive "<\\1>" form)) (setq form (replace-regexp-in-string org-ts-regexp (function (lambda (ts) (let (...) (format-time-string ... ...)))) form t t)) (setq ev (if (and duration (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" form)) form (calc-eval (cons form org-tbl-calc-modes) (if (and (not keep-empty) numbers) (progn (quote num))))) ev (if duration (org-table-time-seconds-to-string (if (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" ev) (string-to-number (org-table-time-string-to-seconds ev)) (string-to-number ev)) duration-output-format) ev))) (if org-table-formula-debug (progn (let ((wcf (current-window-configuration))) (let* ((old-dir default-directory) (buf (save-current-buffer ... ...)) (standard-output buf)) (prog1 (progn (princ ...) (if ... ... ...)) (internal-temp-output-buffer-show buf))) (setq bw (get-buffer-window "*Substitution History*")) (org-fit-window-to-buffer bw) (if (and (called-interactively-p (quote any)) (not ndown)) nil (if (let (inhibit-redisplay) (y-or-n-p "Debugging Formula.  Continue to next? ")) nil (org-table-align) (user-error "Abort")) (delete-window bw) (message "") (set-window-configuration wcf))))) (if (consp ev) (progn (setq fmt nil ev "#ERROR"))) (org-table-justify-field-maybe (format org-table-formula-field-format (cond ((not (stringp ev)) ev) (fmt (format fmt (string-to-number ev))) (t (replace-regexp-in-string org-ts-regexp "[\\1]" ev))))) (if (and down (> ndown 0) (looking-at ".*\n[ 	]*|[^-]")) (call-interactively (quote org-return)) (setq ndown 0)))
  (let* (fields (ndown (if (integerp arg) arg 1)) (org-table-automatic-realign nil) (case-fold-search nil) (down (> ndown 1)) (formula (if (and equation suppress-store) equation (org-table-get-formula equation (equal arg (quote (4)))))) (n0 (org-table-current-column)) (org-tbl-calc-modes (copy-sequence org-calc-default-modes)) (numbers nil) (keep-empty nil) n form form0 formrpl formrg bw fmt x ev orig c lispp literal duration duration-output-format) (if (string-match ";" formula) (let ((tmp (org-split-string formula ";"))) (setq formula (car tmp) fmt (concat (cdr (assoc "%" org-table-local-parameters)) (nth 1 tmp))) (while (string-match "\\([pnfse]\\)\\(-?[0-9]+\\)" fmt) (setq c (string-to-char (match-string 1 fmt)) n (string-to-number (match-string 2 fmt))) (if (= c 112) (setq org-tbl-calc-modes (org-table--set-calc-mode (quote calc-internal-prec) n)) (setq org-tbl-calc-modes (org-table--set-calc-mode (quote calc-float-format) (list ... n)))) (setq fmt (replace-match "" t t fmt))) (if (string-match "[tTU]" fmt) (let ((ff (match-string 0 fmt))) (setq duration t numbers t duration-output-format (cond (... nil) (... org-table-duration-custom-format) (... ...)) fmt (replace-match "" t t fmt)))) (if (string-match "N" fmt) (setq numbers t fmt (replace-match "" t t fmt))) (if (string-match "L" fmt) (setq literal t fmt (replace-match "" t t fmt))) (if (string-match "E" fmt) (setq keep-empty t fmt (replace-match "" t t fmt))) (while (string-match "[DRFS]" fmt) (setq org-tbl-calc-modes (org-table--set-calc-mode (match-string 0 fmt))) (setq fmt (replace-match "" t t fmt))) (if (string-match "\\S-" fmt) nil (setq fmt nil)))) (if (and (not suppress-const) org-table-formula-use-constants) (progn (setq formula (org-table-formula-substitute-names formula)))) (setq orig (or (get-text-property 1 :orig-formula formula) "?")) (setq formula (org-table-formula-handle-first/last-rc formula)) (while (> ndown 0) (setq fields (org-split-string (org-trim (buffer-substring-no-properties (line-beginning-position) (line-end-position))) " *| *")) (if duration (setq fields (mapcar (function (lambda (x) (org-table-time-string-to-seconds x))) fields))) (if (eq numbers t) (setq fields (mapcar (function (lambda (x) (if ... ... x))) fields))) (setq ndown (1- ndown)) (setq form (copy-sequence formula) lispp (and (> (length form) 2) (equal (substring form 0 2) "'("))) (if (and lispp literal) (setq lispp (quote literal))) (while (string-match "[@$]#" form) (setq form (replace-match (format "%d" (let (...) (unwind-protect ... ...))) t t form))) (org-table--error-on-old-row-references form) (setq form (org-table-remote-reference-indirection form)) (while (string-match "\\<remote([ 	]*\\([^,)]+\\)[ 	]*,[ 	]*\\([^\n)]+\\))" form) (setq form (replace-match (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...))) t t form))) (while (and (string-match org-table-range-regexp form) (> (length (match-string 0 form)) 1)) (setq formrg (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-get-range ... org-table-current-begin-pos n0)) (set-match-data save-match-data-internal (quote evaporate))))) (setq formrpl (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference ... keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate))))) (if (not (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (setq form (replace-match formrpl t t form)) (user-error "Spreadsheet error: invalid reference \"%s\"" form))) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)\\.\\.\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq form (replace-match (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...))) t t form))) (setq form0 form) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq n (+ (string-to-number (match-string 1 form)) (if (match-end 2) n0 0)) x (nth (1- (if (= n 0) n0 (max n 1))) fields) formrpl (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-table-make-reference x keep-empty numbers lispp)) (set-match-data save-match-data-internal (quote evaporate))))) (if (or (not x) (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (progn (user-error "Invalid field specifier \"%s\"" (match-string 0 form)))) (setq form (replace-match formrpl t t form))) (if lispp (setq ev (condition-case nil (eval (eval (read form))) (error "#ERROR")) ev (if (numberp ev) (number-to-string ev) ev) ev (if duration (org-table-time-seconds-to-string (string-to-number ev) duration-output-format) ev)) (setq form (replace-regexp-in-string org-ts-regexp-inactive "<\\1>" form)) (setq form (replace-regexp-in-string org-ts-regexp (function (lambda (ts) (let ... ...))) form t t)) (setq ev (if (and duration (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" form)) form (calc-eval (cons form org-tbl-calc-modes) (if (and ... numbers) (progn ...)))) ev (if duration (org-table-time-seconds-to-string (if (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" ev) (string-to-number ...) (string-to-number ev)) duration-output-format) ev))) (if org-table-formula-debug (progn (let ((wcf (current-window-configuration))) (let* ((old-dir default-directory) (buf ...) (standard-output buf)) (prog1 (progn ... ...) (internal-temp-output-buffer-show buf))) (setq bw (get-buffer-window "*Substitution History*")) (org-fit-window-to-buffer bw) (if (and (called-interactively-p ...) (not ndown)) nil (if (let ... ...) nil (org-table-align) (user-error "Abort")) (delete-window bw) (message "") (set-window-configuration wcf))))) (if (consp ev) (progn (setq fmt nil ev "#ERROR"))) (org-table-justify-field-maybe (format org-table-formula-field-format (cond ((not (stringp ev)) ev) (fmt (format fmt (string-to-number ev))) (t (replace-regexp-in-string org-ts-regexp "[\\1]" ev))))) (if (and down (> ndown 0) (looking-at ".*\n[ 	]*|[^-]")) (call-interactively (quote org-return)) (setq ndown 0))) (and down (org-table-maybe-recalculate-line)) (or suppress-align (and org-table-may-need-update (org-table-align))))
  (if (equal arg (quote (16))) (let ((eq (org-table-current-field-formula))) (org-table-get-field nil eq) (org-table-align) (setq org-table-may-need-update t)) (let* (fields (ndown (if (integerp arg) arg 1)) (org-table-automatic-realign nil) (case-fold-search nil) (down (> ndown 1)) (formula (if (and equation suppress-store) equation (org-table-get-formula equation (equal arg (quote ...))))) (n0 (org-table-current-column)) (org-tbl-calc-modes (copy-sequence org-calc-default-modes)) (numbers nil) (keep-empty nil) n form form0 formrpl formrg bw fmt x ev orig c lispp literal duration duration-output-format) (if (string-match ";" formula) (let ((tmp (org-split-string formula ";"))) (setq formula (car tmp) fmt (concat (cdr (assoc "%" org-table-local-parameters)) (nth 1 tmp))) (while (string-match "\\([pnfse]\\)\\(-?[0-9]+\\)" fmt) (setq c (string-to-char (match-string 1 fmt)) n (string-to-number (match-string 2 fmt))) (if (= c 112) (setq org-tbl-calc-modes (org-table--set-calc-mode ... n)) (setq org-tbl-calc-modes (org-table--set-calc-mode ... ...))) (setq fmt (replace-match "" t t fmt))) (if (string-match "[tTU]" fmt) (let ((ff ...)) (setq duration t numbers t duration-output-format (cond ... ... ...) fmt (replace-match "" t t fmt)))) (if (string-match "N" fmt) (setq numbers t fmt (replace-match "" t t fmt))) (if (string-match "L" fmt) (setq literal t fmt (replace-match "" t t fmt))) (if (string-match "E" fmt) (setq keep-empty t fmt (replace-match "" t t fmt))) (while (string-match "[DRFS]" fmt) (setq org-tbl-calc-modes (org-table--set-calc-mode (match-string 0 fmt))) (setq fmt (replace-match "" t t fmt))) (if (string-match "\\S-" fmt) nil (setq fmt nil)))) (if (and (not suppress-const) org-table-formula-use-constants) (progn (setq formula (org-table-formula-substitute-names formula)))) (setq orig (or (get-text-property 1 :orig-formula formula) "?")) (setq formula (org-table-formula-handle-first/last-rc formula)) (while (> ndown 0) (setq fields (org-split-string (org-trim (buffer-substring-no-properties (line-beginning-position) (line-end-position))) " *| *")) (if duration (setq fields (mapcar (function (lambda ... ...)) fields))) (if (eq numbers t) (setq fields (mapcar (function (lambda ... ...)) fields))) (setq ndown (1- ndown)) (setq form (copy-sequence formula) lispp (and (> (length form) 2) (equal (substring form 0 2) "'("))) (if (and lispp literal) (setq lispp (quote literal))) (while (string-match "[@$]#" form) (setq form (replace-match (format "%d" (let ... ...)) t t form))) (org-table--error-on-old-row-references form) (setq form (org-table-remote-reference-indirection form)) (while (string-match "\\<remote([ 	]*\\([^,)]+\\)[ 	]*,[ 	]*\\([^\n)]+\\))" form) (setq form (replace-match (let (...) (unwind-protect ... ...)) t t form))) (while (and (string-match org-table-range-regexp form) (> (length (match-string 0 form)) 1)) (setq formrg (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (setq formrpl (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (if (not (let (...) (unwind-protect ... ...))) (setq form (replace-match formrpl t t form)) (user-error "Spreadsheet error: invalid reference \"%s\"" form))) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)\\.\\.\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq form (replace-match (let (...) (unwind-protect ... ...)) t t form))) (setq form0 form) (while (string-match "\\$\\(\\([-+]\\)?[0-9]+\\)" form) (setq n (+ (string-to-number (match-string 1 form)) (if (match-end 2) n0 0)) x (nth (1- (if ... n0 ...)) fields) formrpl (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (if (or (not x) (let (...) (unwind-protect ... ...))) (progn (user-error "Invalid field specifier \"%s\"" (match-string 0 form)))) (setq form (replace-match formrpl t t form))) (if lispp (setq ev (condition-case nil (eval (eval ...)) (error "#ERROR")) ev (if (numberp ev) (number-to-string ev) ev) ev (if duration (org-table-time-seconds-to-string (string-to-number ev) duration-output-format) ev)) (setq form (replace-regexp-in-string org-ts-regexp-inactive "<\\1>" form)) (setq form (replace-regexp-in-string org-ts-regexp (function (lambda ... ...)) form t t)) (setq ev (if (and duration (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" form)) form (calc-eval (cons form org-tbl-calc-modes) (if ... ...))) ev (if duration (org-table-time-seconds-to-string (if ... ... ...) duration-output-format) ev))) (if org-table-formula-debug (progn (let ((wcf ...)) (let* (... ... ...) (prog1 ... ...)) (setq bw (get-buffer-window "*Substitution History*")) (org-fit-window-to-buffer bw) (if (and ... ...) nil (if ... nil ... ...) (delete-window bw) (message "") (set-window-configuration wcf))))) (if (consp ev) (progn (setq fmt nil ev "#ERROR"))) (org-table-justify-field-maybe (format org-table-formula-field-format (cond ((not ...) ev) (fmt (format fmt ...)) (t (replace-regexp-in-string org-ts-regexp "[\\1]" ev))))) (if (and down (> ndown 0) (looking-at ".*\n[ 	]*|[^-]")) (call-interactively (quote org-return)) (setq ndown 0))) (and down (org-table-maybe-recalculate-line)) (or suppress-align (and org-table-may-need-update (org-table-align)))))
  org-table-eval-formula(nil "'(org-sbe hello_world)" noalign nocst nostore noanalysis)
  (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis)))
  (let ((entry (car --dolist-tail--))) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number (substring (car entry) 1)) nil (quote force)) (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis))) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number (substring (car entry) 1)) nil (quote force)) (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis))) (setq --dolist-tail-- (cdr --dolist-tail--))))
  (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number (substring (car entry) 1)) nil (quote force)) (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis))) (setq --dolist-tail-- (cdr --dolist-tail--)))))
  (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn (setq log-last-time (org-table-message-once-per-second log-last-time "Re-applying formulas to full table...(line %d)" cnt)))) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line (line-beginning-position)) (setq org-last-recalc-line (copy-marker (line-beginning-position)))) (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number (substring (car entry) 1)) nil (quote force)) (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis))) (setq --dolist-tail-- (cdr --dolist-tail--))))))
  (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn (setq log-last-time (org-table-message-once-per-second log-last-time "Re-applying formulas to full table...(line %d)" cnt)))) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line (line-beginning-position)) (setq org-last-recalc-line (copy-marker (line-beginning-position)))) (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number (substring ... 1)) nil (quote force)) (if (get-text-property (point) :org-untouchable) nil (org-table-eval-formula nil (cdr entry) (quote noalign) (quote nocst) (quote nostore) (quote noanalysis))) (setq --dolist-tail-- (cdr --dolist-tail--)))))))
  (progn (let ((--dolist-tail-- eqlist)) (while --dolist-tail-- (let ((eq (car --dolist-tail--))) (let* ((rhs (org-table-formula-substitute-names ...)) (old-lhs (car eq)) (lhs (org-table-formula-handle-first/last-rc ...))) (if (string-match-p "\\`\\$[0-9]+\\'" lhs) (setq eqlcol (cons ... eqlcol)) (setq eqlfield (cons ... eqlfield)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges (nreverse eqlfield))) (if all (progn (setq end (copy-marker (org-table-end))) (goto-char (setq beg org-table-current-begin-pos)) (cond ((re-search-forward org-table-calculate-mark-regexp end t) (setq line-re org-table-recalculate-regexp)) ((and (re-search-forward org-table-dataline-regexp end t) (re-search-forward org-table-hline-regexp end t) (re-search-forward org-table-dataline-regexp end t)) (setq beg (match-beginning 0))) (t nil))) (setq beg (line-beginning-position) end (copy-marker (line-beginning-position 2)))) (goto-char beg) (remove-text-properties beg end (quote (:org-untouchable t))) (let ((current-line (count-lines org-table-current-begin-pos (line-beginning-position))) seen-fields) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ((eq (car --dolist-tail--))) (let* ((name ...) (location ...) (eq-line ...) (reference ...)) (if (member reference seen-fields) (progn ...)) (setq seen-fields (cons reference seen-fields)) (if (or all ...) (progn ... ...))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) (goto-char beg) (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn (setq log-last-time (org-table-message-once-per-second log-last-time "Re-applying formulas to full table...(line %d)" cnt)))) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line (line-beginning-position)) (setq org-last-recalc-line (copy-marker (line-beginning-position)))) (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let ((entry ...)) (goto-char org-last-recalc-line) (org-table-goto-column (string-to-number ...) nil (quote force)) (if (get-text-property ... :org-untouchable) nil (org-table-eval-formula nil ... ... ... ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--))))))) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ((eq (car --dolist-tail--))) (let ((reference (car eq)) (formula (cdr eq))) (setq log-last-time (org-table-message-once-per-second (and all log-last-time) "Re-applying formula to field: %s" (car eq))) (org-table-goto-field reference (let (...) (function ...))) (org-table-eval-formula nil formula t t t t)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (set-marker end nil))
  (unwind-protect (progn (let ((--dolist-tail-- eqlist)) (while --dolist-tail-- (let ((eq (car --dolist-tail--))) (let* ((rhs ...) (old-lhs ...) (lhs ...)) (if (string-match-p "\\`\\$[0-9]+\\'" lhs) (setq eqlcol ...) (setq eqlfield ...))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges (nreverse eqlfield))) (if all (progn (setq end (copy-marker (org-table-end))) (goto-char (setq beg org-table-current-begin-pos)) (cond ((re-search-forward org-table-calculate-mark-regexp end t) (setq line-re org-table-recalculate-regexp)) ((and (re-search-forward org-table-dataline-regexp end t) (re-search-forward org-table-hline-regexp end t) (re-search-forward org-table-dataline-regexp end t)) (setq beg (match-beginning 0))) (t nil))) (setq beg (line-beginning-position) end (copy-marker (line-beginning-position 2)))) (goto-char beg) (remove-text-properties beg end (quote (:org-untouchable t))) (let ((current-line (count-lines org-table-current-begin-pos (line-beginning-position))) seen-fields) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ((eq ...)) (let* (... ... ... ...) (if ... ...) (setq seen-fields ...) (if ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))))) (goto-char beg) (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn (setq log-last-time (org-table-message-once-per-second log-last-time "Re-applying formulas to full table...(line %d)" cnt)))) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line (line-beginning-position)) (setq org-last-recalc-line (copy-marker (line-beginning-position)))) (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let (...) (goto-char org-last-recalc-line) (org-table-goto-column ... nil ...) (if ... nil ...) (setq --dolist-tail-- ...)))))) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ((eq (car --dolist-tail--))) (let ((reference ...) (formula ...)) (setq log-last-time (org-table-message-once-per-second ... "Re-applying formula to field: %s" ...)) (org-table-goto-field reference (let ... ...)) (org-table-eval-formula nil formula t t t t)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil))
  (let ((--line (copy-marker (line-beginning-position))) (--column (org-table-current-column))) (unwind-protect (progn (let ((--dolist-tail-- eqlist)) (while --dolist-tail-- (let ((eq ...)) (let* (... ... ...) (if ... ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges (nreverse eqlfield))) (if all (progn (setq end (copy-marker (org-table-end))) (goto-char (setq beg org-table-current-begin-pos)) (cond ((re-search-forward org-table-calculate-mark-regexp end t) (setq line-re org-table-recalculate-regexp)) ((and ... ... ...) (setq beg ...)) (t nil))) (setq beg (line-beginning-position) end (copy-marker (line-beginning-position 2)))) (goto-char beg) (remove-text-properties beg end (quote (:org-untouchable t))) (let ((current-line (count-lines org-table-current-begin-pos (line-beginning-position))) seen-fields) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let (...) (let* ... ... ... ...) (setq --dolist-tail-- ...))))) (goto-char beg) (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn (setq log-last-time ...))) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line (line-beginning-position)) (setq org-last-recalc-line (copy-marker ...))) (let ((--dolist-tail-- eqlcol)) (while --dolist-tail-- (let ... ... ... ... ...))))) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ((eq ...)) (let (... ...) (setq log-last-time ...) (org-table-goto-field reference ...) (org-table-eval-formula nil formula t t t t)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil)))
  (progn (let ((--line (copy-marker (line-beginning-position))) (--column (org-table-current-column))) (unwind-protect (progn (let ((--dolist-tail-- eqlist)) (while --dolist-tail-- (let (...) (let* ... ...) (setq --dolist-tail-- ...)))) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges (nreverse eqlfield))) (if all (progn (setq end (copy-marker ...)) (goto-char (setq beg org-table-current-begin-pos)) (cond (... ...) (... ...) (t nil))) (setq beg (line-beginning-position) end (copy-marker (line-beginning-position 2)))) (goto-char beg) (remove-text-properties beg end (quote (:org-untouchable t))) (let ((current-line (count-lines org-table-current-begin-pos ...)) seen-fields) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ... ... ...)))) (goto-char beg) (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" (org-table-get-field 1)) nil (setq cnt (1+ cnt)) (if all (progn ...)) (if (markerp org-last-recalc-line) (move-marker org-last-recalc-line ...) (setq org-last-recalc-line ...)) (let (...) (while --dolist-tail-- ...)))) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let (...) (let ... ... ... ...) (setq --dolist-tail-- ...)))) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil))))
  (unwind-protect (progn (let ((--line (copy-marker (line-beginning-position))) (--column (org-table-current-column))) (unwind-protect (progn (let ((--dolist-tail-- eqlist)) (while --dolist-tail-- (let ... ... ...))) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges (nreverse eqlfield))) (if all (progn (setq end ...) (goto-char ...) (cond ... ... ...)) (setq beg (line-beginning-position) end (copy-marker ...))) (goto-char beg) (remove-text-properties beg end (quote (:org-untouchable t))) (let ((current-line ...) seen-fields) (let (...) (while --dolist-tail-- ...))) (goto-char beg) (while (re-search-forward line-re end t) (if (string-match "\\` *[_^!$/] *\\'" ...) nil (setq cnt ...) (if all ...) (if ... ... ...) (let ... ...))) (let ((--dolist-tail-- eqlfield)) (while --dolist-tail-- (let ... ... ...))) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil)))) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil))
  (let ((--begin (copy-marker (org-table-begin))) (--end (copy-marker (org-table-end) t)) (--shrunk-columns (org-table--list-shrunk-columns))) (let ((--mpom --begin)) (save-excursion (if (markerp --mpom) (progn (set-buffer (marker-buffer --mpom)))) (save-excursion (save-restriction (widen) (goto-char (or --mpom (point))) (org-table-expand --begin --end))))) (unwind-protect (progn (let ((--line (copy-marker (line-beginning-position))) (--column (org-table-current-column))) (unwind-protect (progn (let (...) (while --dolist-tail-- ...)) (setq eqlcol (nreverse eqlcol)) (setq eqlfield (org-table-expand-lhs-ranges ...)) (if all (progn ... ... ...) (setq beg ... end ...)) (goto-char beg) (remove-text-properties beg end (quote ...)) (let (... seen-fields) (let ... ...)) (goto-char beg) (while (re-search-forward line-re end t) (if ... nil ... ... ... ...)) (let (...) (while --dolist-tail-- ...)) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil)))) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil)))
  (progn (let ((--begin (copy-marker (org-table-begin))) (--end (copy-marker (org-table-end) t)) (--shrunk-columns (org-table--list-shrunk-columns))) (let ((--mpom --begin)) (save-excursion (if (markerp --mpom) (progn (set-buffer (marker-buffer --mpom)))) (save-excursion (save-restriction (widen) (goto-char (or --mpom ...)) (org-table-expand --begin --end))))) (unwind-protect (progn (let ((--line (copy-marker ...)) (--column (org-table-current-column))) (unwind-protect (progn (let ... ...) (setq eqlcol ...) (setq eqlfield ...) (if all ... ...) (goto-char beg) (remove-text-properties beg end ...) (let ... ...) (goto-char beg) (while ... ...) (let ... ...) (set-marker end nil)) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil)))) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil))) (if noalign nil (if org-table-may-need-update (progn (org-table-align))) (if all (progn (org-table-message-once-per-second log-first-time "Re-applying formulas to %d lines... done" cnt)))) (org-table-message-once-per-second (and all log-first-time) "Re-applying formulas... done"))
  (if eqlist (progn (let ((--begin (copy-marker (org-table-begin))) (--end (copy-marker (org-table-end) t)) (--shrunk-columns (org-table--list-shrunk-columns))) (let ((--mpom --begin)) (save-excursion (if (markerp --mpom) (progn (set-buffer ...))) (save-excursion (save-restriction (widen) (goto-char ...) (org-table-expand --begin --end))))) (unwind-protect (progn (let ((--line ...) (--column ...)) (unwind-protect (progn ... ... ... ... ... ... ... ... ... ... ...) (goto-char --line) (org-table-goto-column --column) (set-marker --line nil)))) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil))) (if noalign nil (if org-table-may-need-update (progn (org-table-align))) (if all (progn (org-table-message-once-per-second log-first-time "Re-applying formulas to %d lines... done" cnt)))) (org-table-message-once-per-second (and all log-first-time) "Re-applying formulas... done")))
  (let* ((eqlist (sort (org-table-get-stored-formulas) (function (lambda (a b) (string< (car a) (car b)))))) (inhibit-redisplay (not debug-on-error)) (line-re org-table-dataline-regexp) (log-first-time (current-time)) (log-last-time log-first-time) (cnt 0) beg end eqlcol eqlfield) (if eqlist (progn (let ((--begin (copy-marker (org-table-begin))) (--end (copy-marker (org-table-end) t)) (--shrunk-columns (org-table--list-shrunk-columns))) (let ((--mpom --begin)) (save-excursion (if (markerp --mpom) (progn ...)) (save-excursion (save-restriction ... ... ...)))) (unwind-protect (progn (let (... ...) (unwind-protect ... ... ... ...))) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil))) (if noalign nil (if org-table-may-need-update (progn (org-table-align))) (if all (progn (org-table-message-once-per-second log-first-time "Re-applying formulas to %d lines... done" cnt)))) (org-table-message-once-per-second (and all log-first-time) "Re-applying formulas... done"))))
  (if (or (eq all (quote iterate)) (equal all (quote (16)))) (org-table-iterate) (org-table-analyze) (let* ((eqlist (sort (org-table-get-stored-formulas) (function (lambda (a b) (string< ... ...))))) (inhibit-redisplay (not debug-on-error)) (line-re org-table-dataline-regexp) (log-first-time (current-time)) (log-last-time log-first-time) (cnt 0) beg end eqlcol eqlfield) (if eqlist (progn (let ((--begin (copy-marker ...)) (--end (copy-marker ... t)) (--shrunk-columns (org-table--list-shrunk-columns))) (let ((--mpom --begin)) (save-excursion (if ... ...) (save-excursion ...))) (unwind-protect (progn (let ... ...)) (org-table--shrink-columns --shrunk-columns --begin --end) (set-marker --begin nil) (set-marker --end nil))) (if noalign nil (if org-table-may-need-update (progn (org-table-align))) (if all (progn (org-table-message-once-per-second log-first-time "Re-applying formulas to %d lines... done" cnt)))) (org-table-message-once-per-second (and all log-first-time) "Re-applying formulas... done")))))
  org-table-recalculate(t)
  funcall-interactively(org-table-recalculate t)
  call-interactively(org-table-recalculate)
  (let ((current-prefix-arg arg)) (call-interactively command))
  org-call-with-arg(org-table-recalculate t)
  (if (org-at-TBLFM-p) (progn (require (quote org-table)) (org-table-calc-current-TBLFM)) (goto-char (org-element-property :contents-begin context)) (org-call-with-arg (quote org-table-recalculate) (or arg t)) (orgtbl-send-table (quote maybe)))
  (save-excursion (if (org-at-TBLFM-p) (progn (require (quote org-table)) (org-table-calc-current-TBLFM)) (goto-char (org-element-property :contents-begin context)) (org-call-with-arg (quote org-table-recalculate) (or arg t)) (orgtbl-send-table (quote maybe))))
  (if (or (eq type (quote table)) (and (eq type (quote table-row)) (= (point) (org-element-property :end context)))) (save-excursion (if (org-at-TBLFM-p) (progn (require (quote org-table)) (org-table-calc-current-TBLFM)) (goto-char (org-element-property :contents-begin context)) (org-call-with-arg (quote org-table-recalculate) (or arg t)) (orgtbl-send-table (quote maybe)))) (org-table-maybe-eval-formula) (cond (arg (call-interactively (function org-table-recalculate))) ((org-table-maybe-recalculate-line)) (t (org-table-align))))
  (if (eq (org-element-property :type context) (quote table\.el)) (message "%s" (substitute-command-keys "\\<org-mode-map>Use `\\[org-edit-special]' to edit table.el tables")) (if (or (eq type (quote table)) (and (eq type (quote table-row)) (= (point) (org-element-property :end context)))) (save-excursion (if (org-at-TBLFM-p) (progn (require (quote org-table)) (org-table-calc-current-TBLFM)) (goto-char (org-element-property :contents-begin context)) (org-call-with-arg (quote org-table-recalculate) (or arg t)) (orgtbl-send-table (quote maybe)))) (org-table-maybe-eval-formula) (cond (arg (call-interactively (function org-table-recalculate))) ((org-table-maybe-recalculate-line)) (t (org-table-align)))))
  (let nil (if (eq (org-element-property :type context) (quote table\.el)) (message "%s" (substitute-command-keys "\\<org-mode-map>Use `\\[org-edit-special]' to edit table.el tables")) (if (or (eq type (quote table)) (and (eq type (quote table-row)) (= (point) (org-element-property :end context)))) (save-excursion (if (org-at-TBLFM-p) (progn (require (quote org-table)) (org-table-calc-current-TBLFM)) (goto-char (org-element-property :contents-begin context)) (org-call-with-arg (quote org-table-recalculate) (or arg t)) (orgtbl-send-table (quote maybe)))) (org-table-maybe-eval-formula) (cond (arg (call-interactively (function org-table-recalculate))) ((org-table-maybe-recalculate-line)) (t (org-table-align))))))
  (cond ((memq type (quote (src-block inline-src-block))) (let nil (if org-babel-no-eval-on-ctrl-c-ctrl-c nil (org-babel-eval-wipe-error-buffer) (org-babel-execute-src-block current-prefix-arg (org-babel-get-src-block-info nil context))))) ((org-match-line "[ 	]*$") (let nil (or (run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (user-error (substitute-command-keys "`\\[org-ctrl-c-ctrl-c]' can do nothing useful here"))))) ((memq type (quote (inline-babel-call babel-call))) (let nil (let ((info (org-babel-lob-get-info context))) (if info (progn (org-babel-execute-src-block nil info)))))) ((eq type (quote clock)) (let nil (org-clock-update-time-maybe))) ((eq type (quote dynamic-block)) (let nil (save-excursion (goto-char (org-element-property :post-affiliated context)) (org-update-dblock)))) ((eq type (quote footnote-definition)) (let nil (goto-char (org-element-property :post-affiliated context)) (call-interactively (quote org-footnote-action)))) ((eq type (quote footnote-reference)) (let nil (call-interactively (function org-footnote-action)))) ((memq type (quote (inlinetask headline))) (let nil (save-excursion (goto-char (org-element-property :begin context)) (call-interactively (function org-set-tags-command))))) ((eq type (quote item)) (let nil (let* ((box (org-element-property :checkbox context)) (struct (org-element-property :structure context)) (old-struct (copy-tree struct)) (parents (org-list-parents-alist struct)) (prevs (org-list-prevs-alist struct)) (orderedp (org-not-nil (org-entry-get nil "ORDERED")))) (org-list-set-checkbox (org-element-property :begin context) struct (cond ((equal arg ...) "[-]") ((and ... ...) "[ ]") ((or ... ...) nil) ((eq box ...) "[ ]") (t "[X]"))) (org-list-struct-fix-ind struct parents 2) (org-list-struct-fix-item-end struct) (org-list-struct-fix-bul struct prevs) (org-list-struct-fix-ind struct parents) (let ((block-item (org-list-struct-fix-box struct parents prevs orderedp))) (if (and box (equal struct old-struct)) (if (equal arg ...) (message "Checkboxes already reset") (user-error "Cannot toggle this checkbox: %s" ...)) (org-list-struct-apply-struct struct old-struct) (org-update-checkbox-count-maybe)) (if block-item (progn (message "Checkboxes were removed due to empty box at line %d" ...))))))) ((eq type (quote keyword)) (let nil (let ((org-inhibit-startup-visibility-stuff t) (org-startup-align-all-tables nil)) (if (boundp (quote org-table-coordinate-overlays)) (progn (mapc (function delete-overlay) org-table-coordinate-overlays) (setq org-table-coordinate-overlays nil))) (let* ((--invisible-types (quote ...)) (--markers\? (quote use-markers)) (--data (mapcar ... ...))) (unwind-protect (progn (org-mode-restart)) (save-excursion (save-restriction ... ... ...))))) (message "Local setup has been refreshed"))) ((eq type (quote plain-list)) (let nil (let* ((begin (org-element-property :contents-begin context)) (struct (org-element-property :structure context)) (old-struct (copy-tree struct)) (first-box (save-excursion (goto-char begin) (looking-at org-list-full-item-re) (match-string-no-properties 3))) (new-box (cond (... "[-]") (... ...) (... "[ ]") (t "[X]")))) (cond (arg (let (...) (while --dolist-tail-- ...))) ((and first-box (eq ... begin)) (org-list-set-checkbox begin struct new-box))) (if (equal (org-list-write-struct struct (org-list-parents-alist struct) old-struct) old-struct) (progn (message "Cannot update this checkbox"))) (org-update-checkbox-count-maybe)))) ((memq type (quote (node-property property-drawer))) (let nil (call-interactively (function org-property-action)))) ((eq type (quote radio-target)) (let nil (call-interactively (function org-update-radio-target-regexp)))) ((eq type (quote statistics-cookie)) (let nil (call-interactively (function org-update-statistics-cookies)))) ((memq type (quote (table-row table-cell table))) (let nil (if (eq (org-element-property :type context) (quote table\.el)) (message "%s" (substitute-command-keys "\\<org-mode-map>Use `\\[org-edit-special]' to edit table.el tables")) (if (or (eq type (quote table)) (and (eq type ...) (= ... ...))) (save-excursion (if (org-at-TBLFM-p) (progn ... ...) (goto-char ...) (org-call-with-arg ... ...) (orgtbl-send-table ...))) (org-table-maybe-eval-formula) (cond (arg (call-interactively ...)) ((org-table-maybe-recalculate-line)) (t (org-table-align))))))) ((eq type (quote timestamp)) (funcall pcase-0)) ((eq type (quote planning)) (cond ((org-at-timestamp-p (quote lax)) (funcall pcase-0)) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((null type) (cond ((org-at-heading-p) (let nil (call-interactively (function org-set-tags-command)))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))
  (let* ((pcase-2 (function (lambda nil (user-error (substitute-command-keys "`\\[org-ctrl-c-ctrl-c]' can do nothing useful here"))))) (pcase-1 (function (lambda nil))) (pcase-0 (function (lambda nil (org-timestamp-change 0 (quote day)))))) (cond ((memq type (quote (src-block inline-src-block))) (let nil (if org-babel-no-eval-on-ctrl-c-ctrl-c nil (org-babel-eval-wipe-error-buffer) (org-babel-execute-src-block current-prefix-arg (org-babel-get-src-block-info nil context))))) ((org-match-line "[ 	]*$") (let nil (or (run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (user-error (substitute-command-keys "`\\[org-ctrl-c-ctrl-c]' can do nothing useful here"))))) ((memq type (quote (inline-babel-call babel-call))) (let nil (let ((info (org-babel-lob-get-info context))) (if info (progn (org-babel-execute-src-block nil info)))))) ((eq type (quote clock)) (let nil (org-clock-update-time-maybe))) ((eq type (quote dynamic-block)) (let nil (save-excursion (goto-char (org-element-property :post-affiliated context)) (org-update-dblock)))) ((eq type (quote footnote-definition)) (let nil (goto-char (org-element-property :post-affiliated context)) (call-interactively (quote org-footnote-action)))) ((eq type (quote footnote-reference)) (let nil (call-interactively (function org-footnote-action)))) ((memq type (quote (inlinetask headline))) (let nil (save-excursion (goto-char (org-element-property :begin context)) (call-interactively (function org-set-tags-command))))) ((eq type (quote item)) (let nil (let* ((box (org-element-property :checkbox context)) (struct (org-element-property :structure context)) (old-struct (copy-tree struct)) (parents (org-list-parents-alist struct)) (prevs (org-list-prevs-alist struct)) (orderedp (org-not-nil ...))) (org-list-set-checkbox (org-element-property :begin context) struct (cond (... "[-]") (... "[ ]") (... nil) (... "[ ]") (t "[X]"))) (org-list-struct-fix-ind struct parents 2) (org-list-struct-fix-item-end struct) (org-list-struct-fix-bul struct prevs) (org-list-struct-fix-ind struct parents) (let ((block-item ...)) (if (and box ...) (if ... ... ...) (org-list-struct-apply-struct struct old-struct) (org-update-checkbox-count-maybe)) (if block-item (progn ...)))))) ((eq type (quote keyword)) (let nil (let ((org-inhibit-startup-visibility-stuff t) (org-startup-align-all-tables nil)) (if (boundp (quote org-table-coordinate-overlays)) (progn (mapc ... org-table-coordinate-overlays) (setq org-table-coordinate-overlays nil))) (let* ((--invisible-types ...) (--markers\? ...) (--data ...)) (unwind-protect (progn ...) (save-excursion ...)))) (message "Local setup has been refreshed"))) ((eq type (quote plain-list)) (let nil (let* ((begin (org-element-property :contents-begin context)) (struct (org-element-property :structure context)) (old-struct (copy-tree struct)) (first-box (save-excursion ... ... ...)) (new-box (cond ... ... ... ...))) (cond (arg (let ... ...)) ((and first-box ...) (org-list-set-checkbox begin struct new-box))) (if (equal (org-list-write-struct struct ... old-struct) old-struct) (progn (message "Cannot update this checkbox"))) (org-update-checkbox-count-maybe)))) ((memq type (quote (node-property property-drawer))) (let nil (call-interactively (function org-property-action)))) ((eq type (quote radio-target)) (let nil (call-interactively (function org-update-radio-target-regexp)))) ((eq type (quote statistics-cookie)) (let nil (call-interactively (function org-update-statistics-cookies)))) ((memq type (quote (table-row table-cell table))) (let nil (if (eq (org-element-property :type context) (quote table\.el)) (message "%s" (substitute-command-keys "\\<org-mode-map>Use `\\[org-edit-special]' to edit table.el tables")) (if (or (eq type ...) (and ... ...)) (save-excursion (if ... ... ... ... ...)) (org-table-maybe-eval-formula) (cond (arg ...) (...) (t ...)))))) ((eq type (quote timestamp)) (funcall pcase-0)) ((eq type (quote planning)) (cond ((org-at-timestamp-p (quote lax)) (funcall pcase-0)) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((null type) (cond ((org-at-heading-p) (let nil (call-interactively (function org-set-tags-command)))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2))))
  (let* ((context (org-element-lineage (org-element-context) (quote (babel-call clock dynamic-block footnote-definition footnote-reference inline-babel-call inline-src-block inlinetask item keyword node-property paragraph plain-list planning property-drawer radio-target src-block statistics-cookie table table-cell table-row timestamp)) t)) (type (org-element-type context))) (if (eq type (quote paragraph)) (progn (let ((parent (org-element-property :parent context))) (if (and (eq (org-element-type parent) (quote item)) (= (line-beginning-position) (org-element-property :begin parent))) (progn (setq context parent) (setq type (quote item))))))) (let* ((pcase-2 (function (lambda nil (user-error (substitute-command-keys "`\\[org-ctrl-c-ctrl-c]' can do nothing useful here"))))) (pcase-1 (function (lambda nil))) (pcase-0 (function (lambda nil (org-timestamp-change 0 (quote day)))))) (cond ((memq type (quote (src-block inline-src-block))) (let nil (if org-babel-no-eval-on-ctrl-c-ctrl-c nil (org-babel-eval-wipe-error-buffer) (org-babel-execute-src-block current-prefix-arg (org-babel-get-src-block-info nil context))))) ((org-match-line "[ 	]*$") (let nil (or (run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (user-error (substitute-command-keys "`\\[org-ctrl-c-ctrl-c]' can do nothing useful here"))))) ((memq type (quote (inline-babel-call babel-call))) (let nil (let ((info ...)) (if info (progn ...))))) ((eq type (quote clock)) (let nil (org-clock-update-time-maybe))) ((eq type (quote dynamic-block)) (let nil (save-excursion (goto-char (org-element-property :post-affiliated context)) (org-update-dblock)))) ((eq type (quote footnote-definition)) (let nil (goto-char (org-element-property :post-affiliated context)) (call-interactively (quote org-footnote-action)))) ((eq type (quote footnote-reference)) (let nil (call-interactively (function org-footnote-action)))) ((memq type (quote (inlinetask headline))) (let nil (save-excursion (goto-char (org-element-property :begin context)) (call-interactively (function org-set-tags-command))))) ((eq type (quote item)) (let nil (let* ((box ...) (struct ...) (old-struct ...) (parents ...) (prevs ...) (orderedp ...)) (org-list-set-checkbox (org-element-property :begin context) struct (cond ... ... ... ... ...)) (org-list-struct-fix-ind struct parents 2) (org-list-struct-fix-item-end struct) (org-list-struct-fix-bul struct prevs) (org-list-struct-fix-ind struct parents) (let (...) (if ... ... ... ...) (if block-item ...))))) ((eq type (quote keyword)) (let nil (let ((org-inhibit-startup-visibility-stuff t) (org-startup-align-all-tables nil)) (if (boundp ...) (progn ... ...)) (let* (... ... ...) (unwind-protect ... ...))) (message "Local setup has been refreshed"))) ((eq type (quote plain-list)) (let nil (let* ((begin ...) (struct ...) (old-struct ...) (first-box ...) (new-box ...)) (cond (arg ...) (... ...)) (if (equal ... old-struct) (progn ...)) (org-update-checkbox-count-maybe)))) ((memq type (quote (node-property property-drawer))) (let nil (call-interactively (function org-property-action)))) ((eq type (quote radio-target)) (let nil (call-interactively (function org-update-radio-target-regexp)))) ((eq type (quote statistics-cookie)) (let nil (call-interactively (function org-update-statistics-cookies)))) ((memq type (quote (table-row table-cell table))) (let nil (if (eq (org-element-property :type context) (quote table\.el)) (message "%s" (substitute-command-keys "\\<org-mode-map>Use `\\[org-edit-special]' to edit table.el tables")) (if (or ... ...) (save-excursion ...) (org-table-maybe-eval-formula) (cond ... ... ...))))) ((eq type (quote timestamp)) (funcall pcase-0)) ((eq type (quote planning)) (cond ((org-at-timestamp-p (quote lax)) (funcall pcase-0)) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((null type) (cond ((org-at-heading-p) (let nil (call-interactively ...))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))))
  (cond ((or (and (boundp (quote org-clock-overlays)) org-clock-overlays) org-occur-highlights) (if (boundp (quote org-clock-overlays)) (progn (org-clock-remove-overlays))) (org-remove-occur-highlights) (message "Temporary highlights/overlays removed from current buffer")) ((and (local-variable-p (quote org-finish-function)) (fboundp org-finish-function)) (funcall org-finish-function)) ((org-babel-hash-at-point)) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-hook))) (t (let* ((context (org-element-lineage (org-element-context) (quote (babel-call clock dynamic-block footnote-definition footnote-reference inline-babel-call inline-src-block inlinetask item keyword node-property paragraph plain-list planning property-drawer radio-target src-block statistics-cookie table table-cell table-row timestamp)) t)) (type (org-element-type context))) (if (eq type (quote paragraph)) (progn (let ((parent ...)) (if (and ... ...) (progn ... ...))))) (let* ((pcase-2 (function (lambda nil ...))) (pcase-1 (function (lambda nil))) (pcase-0 (function (lambda nil ...)))) (cond ((memq type (quote ...)) (let nil (if org-babel-no-eval-on-ctrl-c-ctrl-c nil ... ...))) ((org-match-line "[ 	]*$") (let nil (or ... ...))) ((memq type (quote ...)) (let nil (let ... ...))) ((eq type (quote clock)) (let nil (org-clock-update-time-maybe))) ((eq type (quote dynamic-block)) (let nil (save-excursion ... ...))) ((eq type (quote footnote-definition)) (let nil (goto-char ...) (call-interactively ...))) ((eq type (quote footnote-reference)) (let nil (call-interactively ...))) ((memq type (quote ...)) (let nil (save-excursion ... ...))) ((eq type (quote item)) (let nil (let* ... ... ... ... ... ... ...))) ((eq type (quote keyword)) (let nil (let ... ... ...) (message "Local setup has been refreshed"))) ((eq type (quote plain-list)) (let nil (let* ... ... ... ...))) ((memq type (quote ...)) (let nil (call-interactively ...))) ((eq type (quote radio-target)) (let nil (call-interactively ...))) ((eq type (quote statistics-cookie)) (let nil (call-interactively ...))) ((memq type (quote ...)) (let nil (if ... ... ...))) ((eq type (quote timestamp)) (funcall pcase-0)) ((eq type (quote planning)) (cond (... ...) (... ...) (t ...))) ((null type) (cond (... ...) (... ...) (t ...))) ((run-hook-with-args-until-success (quote org-ctrl-c-ctrl-c-final-hook)) (funcall pcase-1)) (t (funcall pcase-2)))))))
  org-ctrl-c-ctrl-c(nil)
  funcall-interactively(org-ctrl-c-ctrl-c nil)
  call-interactively(org-ctrl-c-ctrl-c nil nil)
  command-execute(org-ctrl-c-ctrl-c)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Bug: error in org-table-justify-field-maybe - in conjunction with org-sbe [9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)]
  2020-02-29 13:31 Bug: error in org-table-justify-field-maybe - in conjunction with org-sbe [9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)] Lester Longley
@ 2020-09-05 13:20 ` Bastien
  0 siblings, 0 replies; 2+ messages in thread
From: Bastien @ 2020-09-05 13:20 UTC (permalink / raw)
  To: Lester Longley; +Cc: emacs-orgmode

Hi Lester,

Lester Longley <lester@ieee.org> writes:

> I am encountering an error when using this .org code:

Thanks a lot for the detailed report.

I prevented the error from occurring in maint (114d50982).

Best,

-- 
 Bastien


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-09-05 13:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-29 13:31 Bug: error in org-table-justify-field-maybe - in conjunction with org-sbe [9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)] Lester Longley
2020-09-05 13:20 ` Bastien

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).