From 350691164bc1053446261e8d239bed032fe59c10 Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Thu, 27 Aug 2009 10:24:09 +0200 Subject: [PATCH] Avoid calling `goto-line' from lisp programs --- lisp/ChangeLog | 34 ++++++++++++++++++++++++++++ lisp/org-agenda.el | 8 +++---- lisp/org-colview-xemacs.el | 4 ++-- lisp/org-colview.el | 6 ++--- lisp/org-exp.el | 2 +- lisp/org-list.el | 4 ++-- lisp/org-macs.el | 8 ++++++- lisp/org-src.el | 10 ++++----- lisp/org-table.el | 56 +++++++++++++++++++++++----------------------- lisp/org.el | 6 ++--- 10 files changed, 89 insertions(+), 49 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b23fa5366..30e9937e7 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,36 @@ 2009-08-27 Carsten Dominik + * org-macs.el (org-goto-line): New defsubst. + + * org.el (org-open-file, org-change-tag-in-region) + (org-fast-tag-show-exit): Don't use `goto-line'. + + * org-table.el (org-table-align, org-table-insert-column) + (org-table-delete-column, org-table-move-column) + (org-table-sort-lines, org-table-copy-region) + (org-table-paste-rectangle, org-table-wrap-region) + (org-table-get-specials, org-table-rotate-recalc-marks) + (org-table-get-range, org-table-recalculate) + (org-table-edit-formulas, org-table-fedit-convert-buffer) + (org-table-show-reference, org-table-highlight-rectangle): Don't + use `goto-line'. + + * org-src.el (org-edit-src-code, org-edit-fixed-width-region) + (org-edit-src-exit): Don't use `goto-line'. + + * org-macs.el (org-preserve-lc): Don't use `goto-line'. + + * org-list.el (org-renumber-ordered-list, org-fix-bullet-type): + Don't use `goto-line'. + + * org-exp.el (org-export-number-lines): Don't use `goto-line'. + + * org-colview.el (org-columns, org-columns-redo) + (org-agenda-columns): Don't use `goto-line'. + + * org-colview-xemacs.el (org-columns, org-agenda-columns): Don't + use `goto-line'. + * org-agenda.el (org-agenda-mode): Force visual line motion off. (org-agenda-add-entry-text-maxlines): Improve docstring. (org-agenda-start-with-entry-text-mode): New option. @@ -19,6 +50,9 @@ (org-agenda-entry-text-mode): New command. (org-agenda-set-mode-name): Add entry text mode to the mode line string. + (org-agenda-undo, org-agenda-get-restriction-and-command) + (org-agenda-get-some-entry-text, org-agenda-redo): Don't use + `goto-line'. 2009-08-26 Bernt Hansen (tiny change) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 56face829..0600e71f3 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -1610,7 +1610,7 @@ that have been changed along." (not (car pending-undo-list))) (pop pending-undo-list)) (undo-more 1)))))) - (goto-line line) + (org-goto-line line) (message "`%s' undone (buffer %s)" cmd (buffer-name rembuf)))) (defun org-verify-change-for-undo (l1 l2) @@ -1820,7 +1820,7 @@ s Search for keywords C Configure custom agenda commands (while t (setq custom1 custom) (when (eq rmheader t) - (goto-line 1) + (org-goto-line 1) (re-search-forward ":" nil t) (delete-region (match-end 0) (point-at-eol)) (forward-char 1) @@ -2331,7 +2331,7 @@ This will ignore drawers etc, just get the text." (goto-char (point-max)) (when (> (org-current-line) n-lines) - (goto-line (1+ n-lines)) + (org-goto-line (1+ n-lines)) (backward-char 1)) (setq txt (buffer-substring (point-min) (point))))))))) txt)) @@ -4839,7 +4839,7 @@ When this is the global TODO list, a prefix argument will be interpreted." (put 'org-agenda-filter :preset-filter preset) (and (or filter preset) (org-agenda-filter-apply filter)) (and cols (interactive-p) (org-agenda-columns)) - (goto-line line) + (org-goto-line line) (recenter window-line))) diff --git a/lisp/org-colview-xemacs.el b/lisp/org-colview-xemacs.el index abde16569..20880f48a 100644 --- a/lisp/org-colview-xemacs.el +++ b/lisp/org-colview-xemacs.el @@ -876,7 +876,7 @@ around it." truncate-lines)) (setq truncate-lines t) (mapc (lambda (x) - (goto-line (car x)) + (org-goto-line (car x)) (org-columns-display-here (cdr x))) cache))))) @@ -1515,7 +1515,7 @@ and tailing newline characters." (org-set-local 'org-columns-current-maxwidths maxwidths) (org-columns-display-here-title) (mapc (lambda (x) - (goto-line (car x)) + (org-goto-line (car x)) (org-columns-display-here (cdr x))) cache) (when org-agenda-columns-show-summaries diff --git a/lisp/org-colview.el b/lisp/org-colview.el index 3a8505ce2..2195d4b39 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -694,7 +694,7 @@ around it." truncate-lines)) (setq truncate-lines t) (mapc (lambda (x) - (goto-line (car x)) + (org-goto-line (car x)) (org-columns-display-here (cdr x))) cache))))) @@ -959,7 +959,7 @@ Don't set this, this is meant for dynamic scoping.") (call-interactively 'org-columns) (org-agenda-redo) (call-interactively 'org-agenda-columns))) - (goto-line line) + (org-goto-line line) (move-to-column col)) (message "Recomputing columns...done")) @@ -1303,7 +1303,7 @@ and tailing newline characters." (org-bound-and-true-p flyspell-mode)) (flyspell-mode 0)) (mapc (lambda (x) - (goto-line (car x)) + (org-goto-line (car x)) (org-columns-display-here (cdr x))) cache) (when org-agenda-columns-show-summaries diff --git a/lisp/org-exp.el b/lisp/org-exp.el index 32cf5f25e..149418a8a 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -2413,7 +2413,7 @@ INDENT was the original indentation of the block." "\\)\\)")) ref) - (goto-line (1+ skip1)) + (org-goto-line (1+ skip1)) (while (and (re-search-forward "^" nil t) (not (eobp)) (< n nmax)) (if number (insert (format fm (incf n))) diff --git a/lisp/org-list.el b/lisp/org-list.el index 84f3eabad..ea83c4b9e 100644 --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -836,7 +836,7 @@ with something like \"1.\" or \"2)\"." (goto-char (match-beginning 2)) (insert (setq new (format fmt (setq n (1+ n))))) (org-shift-item-indentation (- (length new) (length old)))))) - (goto-line line) + (org-goto-line line) (org-move-to-column col))) (defun org-fix-bullet-type (&optional force-bullet) @@ -874,7 +874,7 @@ Also, fix the indentation." (setq oldbullet (match-string 0)) (unless (equal bullet oldbullet) (replace-match bullet)) (org-shift-item-indentation (- (length bullet) (length oldbullet)))))) - (goto-line line) + (org-goto-line line) (org-move-to-column col) (if (string-match "[0-9]" bullet) (org-renumber-ordered-list 1)))) diff --git a/lisp/org-macs.el b/lisp/org-macs.el index 2672269b7..c1b013e3e 100644 --- a/lisp/org-macs.el +++ b/lisp/org-macs.el @@ -71,7 +71,7 @@ Also, do not record undo information." (_col (current-column))) (unwind-protect (progn ,@body) - (goto-line _line) + (org-goto-line _line) (org-move-to-column _col)))) (defmacro org-without-partial-completion (&rest body) @@ -219,6 +219,12 @@ we turn off invisibility temporarily. Use this in a `let' form." ;; works also in narrowed buffer, because we start at 1, not point-min (+ (if (bolp) 1 0) (count-lines 1 (point))))) +(defsubst org-goto-line (N) + (save-restriction + (widen) + (goto-char (point-min)) + (forward-line (1- N)))) + (defsubst org-current-line-string (&optional to-here) (buffer-substring (point-at-bol) (if to-here (point) (point-at-eol)))) diff --git a/lisp/org-src.el b/lisp/org-src.el index 0cde71c2d..e1a538294 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -176,7 +176,7 @@ the edited version." begline (save-excursion (goto-char beg) (org-current-line))) (unless (functionp lang-f) (error "No such language mode: %s" lang-f)) - (goto-line line) + (org-goto-line line) (if (and (setq buffer (org-edit-src-find-buffer beg end)) (y-or-n-p "Return to existing edit buffer? [n] will revert changes: ")) (switch-to-buffer buffer) @@ -213,7 +213,7 @@ the edited version." (goto-char (point-min)) (while (re-search-forward "^," nil t) (replace-match ""))) - (goto-line (1+ (- line begline))) + (org-goto-line (1+ (- line begline))) (org-set-local 'org-edit-src-beg-marker beg) (org-set-local 'org-edit-src-end-marker end) (org-set-local 'org-edit-src-overlay ovl) @@ -275,7 +275,7 @@ the fragment in the Org-mode buffer." (if (re-search-forward "^[ \t]*[^: \t]" nil 'move) (setq end1 (1- (match-beginning 0))) (setq end1 (point)))) - (goto-line line)) + (org-goto-line line)) (setq beg (move-marker beg beg1) end (move-marker end end1) code (buffer-substring-no-properties beg end) @@ -316,7 +316,7 @@ the fragment in the Org-mode buffer." (goto-char (point-min)) (while (re-search-forward "^[ \t]*: ?" nil t) (replace-match "")) - (goto-line (1+ (- line begline))) + (org-goto-line (1+ (- line begline))) (org-src-mode) (org-set-local 'org-edit-src-beg-marker beg) (org-set-local 'org-edit-src-end-marker end) @@ -465,7 +465,7 @@ the language, a switch telling of the content should be in a single line." (delete-region beg end) (insert code) (goto-char beg) - (goto-line (1- (+ (org-current-line) line))) + (org-goto-line (1- (+ (org-current-line) line))) (move-marker beg nil) (move-marker end nil))) diff --git a/lisp/org-table.el b/lisp/org-table.el index d93c26e7f..264a9d103 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -739,9 +739,9 @@ When nil, simply write \"#ERROR\" in corrupted fields.") (goto-char org-table-aligned-begin-marker) (while (org-hide-wide-columns org-table-aligned-end-marker))) ;; Try to move to the old location - (goto-line winstartline) + (org-goto-line winstartline) (setq winstart (point-at-bol)) - (goto-line linepos) + (org-goto-line linepos) (set-window-start (selected-window) winstart 'noforce) (org-table-goto-column colpos) (and org-table-overlay-coordinates (org-table-overlay-coordinates)) @@ -1127,7 +1127,7 @@ However, when FORCE is non-nil, create new columns if necessary." (insert "| ")) (beginning-of-line 2)) (move-marker end nil) - (goto-line linepos) + (org-goto-line linepos) (org-table-goto-column colpos) (org-table-align) (org-table-fix-formulas "$" nil (1- col) 1) @@ -1174,7 +1174,7 @@ However, when FORCE is non-nil, create new columns if necessary." (replace-match "|"))) (beginning-of-line 2)) (move-marker end nil) - (goto-line linepos) + (org-goto-line linepos) (org-table-goto-column colpos) (org-table-align) (org-table-fix-formulas "$" (list (cons (number-to-string col) "INVALID")) @@ -1218,7 +1218,7 @@ However, when FORCE is non-nil, create new columns if necessary." (replace-match "|\\2|\\1|"))) (beginning-of-line 2)) (move-marker end nil) - (goto-line linepos) + (org-goto-line linepos) (org-table-goto-column colpos) (org-table-align) (org-table-fix-formulas @@ -1424,7 +1424,7 @@ should be done in reverse order." (move-marker beg nil) (move-marker end nil) (insert (mapconcat 'cdr lns "\n") "\n") - (goto-line thisline) + (org-goto-line thisline) (org-table-goto-column thiscol) (message "%d lines sorted, based on column %d" (length lns) column))) @@ -1462,7 +1462,7 @@ with `org-table-paste-rectangle'." (while t (catch 'nextline (if (> l1 l2) (throw 'exit t)) - (goto-line l1) + (org-goto-line l1) (if (org-at-table-hline-p) (throw 'nextline (setq l1 (1+ l1)))) (setq cols nil ic1 c1 ic2 c2) (while (< ic1 (1+ ic2)) @@ -1500,7 +1500,7 @@ lines." (org-table-get-field nil field) (setq c (1+ c))) (beginning-of-line 2)) - (goto-line line) + (org-goto-line line) (org-table-goto-column col) (org-table-align))) @@ -1590,7 +1590,7 @@ blank, and the content is appended to the field above." (setq org-table-clip (mapcar 'list (org-wrap (mapconcat 'car org-table-clip " ") nil nlines))) - (goto-line cline) + (org-goto-line cline) (org-table-goto-column ccol) (org-table-paste-rectangle)) ;; No region, split the current field at point @@ -1994,7 +1994,7 @@ For all numbers larger than LIMIT, shift them by DELTA." last-dline (car dlines) org-table-dlines (apply 'vector (cons nil (nreverse dlines))) org-table-hlines (apply 'vector (cons nil (nreverse hlines)))) - (goto-line last-dline) + (org-goto-line last-dline) (let* ((l last-dline) (fields (org-split-string (buffer-substring (point-at-bol) (point-at-eol)) @@ -2070,7 +2070,7 @@ of the new mark." (if (and newchar (not forcenew)) (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'" newchar)) - (if l1 (goto-line l1)) + (if l1 (org-goto-line l1)) (save-excursion (beginning-of-line 1) (unless (looking-at org-table-dataline-regexp) @@ -2091,13 +2091,13 @@ of the new mark." " # "))) (if (and l1 l2) (progn - (goto-line l1) + (org-goto-line l1) (while (progn (beginning-of-line 2) (not (= (org-current-line) l2))) (and (looking-at org-table-dataline-regexp) (org-table-get-field 1 (concat " " new " ")))) - (goto-line l1))) + (org-goto-line l1))) (if (not (= epos (point-at-eol))) (org-table-align)) - (goto-line l) + (org-goto-line l) (and (interactive-p) (message "%s" (cdr (assoc new org-recalc-marks)))))) (defun org-table-maybe-recalculate-line () @@ -2360,7 +2360,7 @@ HIGHLIGHT means, just highlight the range." (if (or (not rangep) (and (= r1 r2) (= c1 c2))) ;; just one field (progn - (goto-line r1) + (org-goto-line r1) (while (not (looking-at org-table-dataline-regexp)) (beginning-of-line 2)) (prog1 (org-trim (org-table-get-field c1)) @@ -2369,12 +2369,12 @@ HIGHLIGHT means, just highlight the range." ;; First sort the numbers to get a regular ractangle (if (< r2 r1) (setq tmp r1 r1 r2 r2 tmp)) (if (< c2 c1) (setq tmp c1 c1 c2 c2 tmp)) - (goto-line r1) + (org-goto-line r1) (while (not (looking-at org-table-dataline-regexp)) (beginning-of-line 2)) (org-table-goto-column c1) (setq beg (point)) - (goto-line r2) + (org-goto-line r2) (while (not (looking-at org-table-dataline-regexp)) (beginning-of-line 0)) (org-table-goto-column c2) @@ -2550,7 +2550,7 @@ known that the table will be realigned a little later anyway." (string-to-number (match-string 2 name))))) (when (and a (or all (equal (nth 1 a) thisline))) (message "Re-applying formula to field: %s" name) - (goto-line (nth 1 a)) + (org-goto-line (nth 1 a)) (org-table-goto-column (nth 2 a)) (push (append a (list (cdr eq))) eqlname1) (org-table-put-field-property :org-untouchable t))) @@ -2566,7 +2566,7 @@ known that the table will be realigned a little later anyway." (setq org-last-recalc-line (org-current-line)) (setq eql eqlnum) (while (setq entry (pop eql)) - (goto-line org-last-recalc-line) + (org-goto-line org-last-recalc-line) (org-table-goto-column (string-to-number (car entry)) nil 'force) (unless (get-text-property (point) :org-untouchable) (org-table-eval-formula nil (cdr entry) @@ -2575,12 +2575,12 @@ known that the table will be realigned a little later anyway." ;; Now evaluate the field formulas (while (setq eq (pop eqlname1)) (message "Re-applying formula to field: %s" (car eq)) - (goto-line (nth 1 eq)) + (org-goto-line (nth 1 eq)) (org-table-goto-column (nth 2 eq)) (org-table-eval-formula nil (nth 3 eq) 'noalign 'nocst 'nostore 'noanalysis)) - (goto-line thisline) + (org-goto-line thisline) (org-table-goto-column thiscol) (remove-text-properties (point-min) (point-max) '(org-untouchable t)) (or noalign (and org-table-may-need-update (org-table-align)) @@ -2588,7 +2588,7 @@ known that the table will be realigned a little later anyway." ;; back to initial position (message "Re-applying formulas...done") - (goto-line thisline) + (org-goto-line thisline) (org-table-goto-column thiscol) (or noalign (and org-table-may-need-update (org-table-align)) (and all (message "Re-applying formulas...done")))))) @@ -2744,7 +2744,7 @@ Parameters get priority." (insert s)) (if (eq org-table-use-standard-references t) (org-table-fedit-toggle-ref-type)) - (goto-line startline) + (org-goto-line startline) (message "Edit formulas and finish with `C-c C-c'. See menu for more commands."))) (defun org-table-fedit-post-command () @@ -2839,7 +2839,7 @@ For example: 28 -> AB." (insert (funcall function (buffer-substring (point) (point-at-eol)))) (delete-region (point) (point-at-eol)) (or (eobp) (forward-char 1))) - (goto-line line))) + (org-goto-line line))) (defun org-table-fedit-toggle-ref-type () "Convert all references in the buffer from B3 to @3$2 and back." @@ -3080,12 +3080,12 @@ With prefix ARG, apply the new formulas to the table." (cond ((string-match "^\\$[a-zA-Z][a-zA-Z0-9]*" dest) (setq e (assoc name org-table-named-field-locations)) - (goto-line (nth 1 e)) + (org-goto-line (nth 1 e)) (org-table-goto-column (nth 2 e))) ((string-match "^@\\([0-9]+\\)\\$\\([0-9]+\\)" dest) (let ((l (string-to-number (match-string 1 dest))) (c (string-to-number (match-string 2 dest)))) - (goto-line (aref org-table-dlines l)) + (org-goto-line (aref org-table-dlines l)) (org-table-goto-column c))) (t (org-table-goto-column (string-to-number name)))) (move-marker pos (point)) @@ -3099,7 +3099,7 @@ With prefix ARG, apply the new formulas to the table." (org-table-get-range match nil nil 'highlight)) (error nil))) ((setq e (assoc var org-table-named-field-locations)) - (goto-line (nth 1 e)) + (org-goto-line (nth 1 e)) (org-table-goto-column (nth 2 e)) (org-table-highlight-rectangle (point) (point)) (message "Named field, column %d of line %d" (nth 2 e) (nth 1 e))) @@ -3224,7 +3224,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line." (setq l2 (org-current-line) c2 (org-table-current-column)) (if (> c1 c2) (setq tmp c1 c1 c2 c2 tmp)) - (goto-line l1) + (org-goto-line l1) (beginning-of-line 1) (loop for line from l1 to l2 do (when (looking-at org-table-dataline-regexp) diff --git a/lisp/org.el b/lisp/org.el index 6e0d54238..befc26a02 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -8429,7 +8429,7 @@ If the file does not exist, an error is thrown." (eq cmd 'emacs)) (funcall (cdr (assq 'file org-link-frame-setup)) file) (widen) - (if line (goto-line line) + (if line (org-goto-line line) (if search (org-link-search search)))) ((consp cmd) (let ((file (convert-standard-filename file))) @@ -11168,7 +11168,7 @@ This works in the agenda, and also in an org-mode buffer." (goto-char beg) (setq l1 (org-current-line)) (loop for l from l1 to l2 do - (goto-line l) + (org-goto-line l) (setq m (get-text-property (point) 'org-hd-marker)) (when (or (and (org-mode-p) (org-on-heading-p)) (and agendap m)) @@ -11219,7 +11219,7 @@ This works in the agenda, and also in an org-mode buffer." (defun org-fast-tag-show-exit (flag) (save-excursion - (goto-line 3) + (org-goto-line 3) (if (re-search-forward "[ \t]+Next change exits" (point-at-eol) t) (replace-match "")) (when flag -- 2.11.4.GIT