|
@@ -3927,13 +3927,13 @@ With prefix ARG, apply the new formulas to the table."
|
|
|
(defvar org-show-positions nil)
|
|
|
|
|
|
(defun org-table-show-reference (&optional local)
|
|
|
- "Show the location/value of the $ expression at point."
|
|
|
+ "Show the location/value of the $ expression at point.
|
|
|
+When LOCAL is non-nil, show references for the table at point."
|
|
|
(interactive)
|
|
|
(org-table-remove-rectangle-highlight)
|
|
|
(when local (org-table-analyze))
|
|
|
(catch 'exit
|
|
|
(let ((pos (if local (point) org-pos))
|
|
|
- (table-start (if local org-table-current-begin-pos (org-table-begin)))
|
|
|
(face2 'highlight)
|
|
|
(org-inhibit-highlight-removal t)
|
|
|
(win (selected-window))
|
|
@@ -3986,73 +3986,75 @@ With prefix ARG, apply the new formulas to the table."
|
|
|
(marker-buffer pos)))))
|
|
|
(goto-char pos)
|
|
|
(org-table-force-dataline)
|
|
|
- (when dest
|
|
|
- (setq name (substring dest 1))
|
|
|
+ (let ((table-start
|
|
|
+ (if local org-table-current-begin-pos (org-table-begin))))
|
|
|
+ (when dest
|
|
|
+ (setq name (substring dest 1))
|
|
|
+ (cond
|
|
|
+ ((org-string-match-p "\\`\\$[a-zA-Z][a-zA-Z0-9]*" dest)
|
|
|
+ (org-table-goto-field dest))
|
|
|
+ ((org-string-match-p "\\`@\\([1-9][0-9]*\\)\\$\\([1-9][0-9]*\\)\\'"
|
|
|
+ dest)
|
|
|
+ (org-table-goto-field dest))
|
|
|
+ (t (org-table-goto-column (string-to-number name))))
|
|
|
+ (move-marker pos (point))
|
|
|
+ (org-table-highlight-rectangle nil nil face2))
|
|
|
(cond
|
|
|
- ((org-string-match-p "\\`\\$[a-zA-Z][a-zA-Z0-9]*" dest)
|
|
|
- (org-table-goto-field dest))
|
|
|
- ((org-string-match-p "\\`@\\([1-9][0-9]*\\)\\$\\([1-9][0-9]*\\)\\'"
|
|
|
- dest)
|
|
|
- (org-table-goto-field dest))
|
|
|
- (t (org-table-goto-column (string-to-number name))))
|
|
|
- (move-marker pos (point))
|
|
|
- (org-table-highlight-rectangle nil nil face2))
|
|
|
- (cond
|
|
|
- ((equal dest match))
|
|
|
- ((not match))
|
|
|
- ((eq what 'range)
|
|
|
- (ignore-errors (org-table-get-range match table-start nil 'highlight)))
|
|
|
- ((setq e (assoc var org-table-named-field-locations))
|
|
|
- (org-table-goto-field var)
|
|
|
- (org-table-highlight-rectangle)
|
|
|
- (message "Named field, column %d of line %d" (nth 2 e) (nth 1 e)))
|
|
|
- ((setq e (assoc var org-table-column-names))
|
|
|
- (org-table-goto-column (string-to-number (cdr e)))
|
|
|
- (org-table-highlight-rectangle)
|
|
|
- (goto-char table-start)
|
|
|
- (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|")
|
|
|
- (org-table-end) t)
|
|
|
- (progn
|
|
|
- (goto-char (match-beginning 1))
|
|
|
- (org-table-highlight-rectangle)
|
|
|
- (message "Named column (column %s)" (cdr e)))
|
|
|
- (user-error "Column name not found")))
|
|
|
- ((eq what 'column)
|
|
|
- ;; Column number.
|
|
|
- (org-table-goto-column (string-to-number (substring match 1)))
|
|
|
- (org-table-highlight-rectangle)
|
|
|
- (message "Column %s" (substring match 1)))
|
|
|
- ((setq e (assoc var org-table-local-parameters))
|
|
|
- (goto-char table-start)
|
|
|
- (if (re-search-forward (concat "^[ \t]*| *\\$ *.*?| *\\(" var "=\\)") nil t)
|
|
|
- (progn
|
|
|
- (goto-char (match-beginning 1))
|
|
|
- (org-table-highlight-rectangle)
|
|
|
- (message "Local parameter."))
|
|
|
- (user-error "Parameter not found")))
|
|
|
- ((not var) (user-error "No reference at point"))
|
|
|
- ((setq e (assoc var org-table-formula-constants-local))
|
|
|
- (message "Local Constant: $%s=%s in #+CONSTANTS line."
|
|
|
- var (cdr e)))
|
|
|
- ((setq e (assoc var org-table-formula-constants))
|
|
|
- (message "Constant: $%s=%s in `org-table-formula-constants'."
|
|
|
- var (cdr e)))
|
|
|
- ((setq e (and (fboundp 'constants-get) (constants-get var)))
|
|
|
- (message "Constant: $%s=%s, from `constants.el'%s."
|
|
|
- var e (format " (%s units)" constants-unit-system)))
|
|
|
- (t (user-error "Undefined name $%s" var)))
|
|
|
- (goto-char pos)
|
|
|
- (when (and org-show-positions
|
|
|
- (not (memq this-command '(org-table-fedit-scroll
|
|
|
- org-table-fedit-scroll-down))))
|
|
|
- (push pos org-show-positions)
|
|
|
- (push table-start org-show-positions)
|
|
|
- (let ((min (apply 'min org-show-positions))
|
|
|
- (max (apply 'max org-show-positions)))
|
|
|
- (set-window-start (selected-window) min)
|
|
|
- (goto-char max)
|
|
|
- (or (pos-visible-in-window-p max)
|
|
|
- (set-window-start (selected-window) max))))
|
|
|
+ ((equal dest match))
|
|
|
+ ((not match))
|
|
|
+ ((eq what 'range)
|
|
|
+ (ignore-errors (org-table-get-range match table-start nil 'highlight)))
|
|
|
+ ((setq e (assoc var org-table-named-field-locations))
|
|
|
+ (org-table-goto-field var)
|
|
|
+ (org-table-highlight-rectangle)
|
|
|
+ (message "Named field, column %d of line %d" (nth 2 e) (nth 1 e)))
|
|
|
+ ((setq e (assoc var org-table-column-names))
|
|
|
+ (org-table-goto-column (string-to-number (cdr e)))
|
|
|
+ (org-table-highlight-rectangle)
|
|
|
+ (goto-char table-start)
|
|
|
+ (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|")
|
|
|
+ (org-table-end) t)
|
|
|
+ (progn
|
|
|
+ (goto-char (match-beginning 1))
|
|
|
+ (org-table-highlight-rectangle)
|
|
|
+ (message "Named column (column %s)" (cdr e)))
|
|
|
+ (user-error "Column name not found")))
|
|
|
+ ((eq what 'column)
|
|
|
+ ;; Column number.
|
|
|
+ (org-table-goto-column (string-to-number (substring match 1)))
|
|
|
+ (org-table-highlight-rectangle)
|
|
|
+ (message "Column %s" (substring match 1)))
|
|
|
+ ((setq e (assoc var org-table-local-parameters))
|
|
|
+ (goto-char table-start)
|
|
|
+ (if (re-search-forward (concat "^[ \t]*| *\\$ *.*?| *\\(" var "=\\)") nil t)
|
|
|
+ (progn
|
|
|
+ (goto-char (match-beginning 1))
|
|
|
+ (org-table-highlight-rectangle)
|
|
|
+ (message "Local parameter."))
|
|
|
+ (user-error "Parameter not found")))
|
|
|
+ ((not var) (user-error "No reference at point"))
|
|
|
+ ((setq e (assoc var org-table-formula-constants-local))
|
|
|
+ (message "Local Constant: $%s=%s in #+CONSTANTS line."
|
|
|
+ var (cdr e)))
|
|
|
+ ((setq e (assoc var org-table-formula-constants))
|
|
|
+ (message "Constant: $%s=%s in `org-table-formula-constants'."
|
|
|
+ var (cdr e)))
|
|
|
+ ((setq e (and (fboundp 'constants-get) (constants-get var)))
|
|
|
+ (message "Constant: $%s=%s, from `constants.el'%s."
|
|
|
+ var e (format " (%s units)" constants-unit-system)))
|
|
|
+ (t (user-error "Undefined name $%s" var)))
|
|
|
+ (goto-char pos)
|
|
|
+ (when (and org-show-positions
|
|
|
+ (not (memq this-command '(org-table-fedit-scroll
|
|
|
+ org-table-fedit-scroll-down))))
|
|
|
+ (push pos org-show-positions)
|
|
|
+ (push table-start org-show-positions)
|
|
|
+ (let ((min (apply 'min org-show-positions))
|
|
|
+ (max (apply 'max org-show-positions)))
|
|
|
+ (set-window-start (selected-window) min)
|
|
|
+ (goto-char max)
|
|
|
+ (or (pos-visible-in-window-p max)
|
|
|
+ (set-window-start (selected-window) max)))))
|
|
|
(select-window win))))
|
|
|
|
|
|
(defun org-table-force-dataline ()
|