Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
c44d4581
Commit
c44d4581
authored
Sep 30, 2014
by
Stefan Monnier
Browse files
* lisp/ses.el (ses-setup): Don't assume modifying the iteration var of
dotimes affects the iteration. Fixes: debbugs:18191
parent
fe0a52e6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
37 deletions
+39
-37
lisp/ChangeLog
lisp/ChangeLog
+5
-0
lisp/ses.el
lisp/ses.el
+34
-37
No files found.
lisp/ChangeLog
View file @
c44d4581
2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
* ses.el (ses-setup): Don't assume modifying the iteration var of
dotimes affects the iteration (bug#18191).
2014-09-30 Vincent Belaïche <vincentb1@users.sourceforge.net>
* ses.el (ses-calculate-cell): bind row and col dynamically to
...
...
lisp/ses.el
View file @
c44d4581
...
...
@@ -1870,45 +1870,42 @@ Narrows the buffer to show only the print area. Gives it `read-only' and
`intangible' properties. Sets up highlighting for current cell."
(interactive)
(let ((end (point-min))
(inhibit-read-only t)
(inhibit-point-motion-hooks t)
(was-modified (buffer-modified-p))
pos sym)
(ses-goto-data 0 0) ; Include marker between print-area and data-area.
(set-text-properties (point) (point-max) nil) ; Delete garbage props.
(mapc 'delete-overlay (overlays-in (point-min) (point-max)))
;; The print area is read-only (except for our special commands) and uses a
;; special keymap.
(put-text-property (point-min) (1- (point)) 'read-only 'ses)
(put-text-property (point-min) (1- (point)) 'keymap 'ses-mode-print-map)
;; For the beginning of the buffer, we want the read-only and keymap
;; attributes to be inherited from the first character.
(put-text-property (point-min) (1+ (point-min)) 'front-sticky t)
;; Create intangible properties, which also indicate which cell the text
;; came from.
(dotimes-with-progress-reporter (row ses--numrows) "Finding cells..."
(dotimes (col ses--numcols)
(setq pos end
sym (ses-cell-symbol row col))
;; Include skipped cells following this one.
(while (and (< col (1- ses--numcols))
(eq (ses-cell-value row (1+ col)) '*skip*))
(setq end (+ end (ses-col-width col) 1)
col (1+ col)))
(setq end (save-excursion
(goto-char pos)
(move-to-column (+ (current-column) (- end pos)
(ses-col-width col)))
(if (eolp)
(+ end (ses-col-width col) 1)
(forward-char)
(point))))
(put-text-property pos end 'intangible sym)))
;; Adding these properties did not actually alter the text.
(unless was-modified
(restore-buffer-modified-p nil)
(buffer-disable-undo)
(buffer-enable-undo)))
(with-silent-modifications
(ses-goto-data 0 0) ; Include marker between print-area and data-area.
(set-text-properties (point) (point-max) nil) ; Delete garbage props.
(mapc 'delete-overlay (overlays-in (point-min) (point-max)))
;; The print area is read-only (except for our special commands) and
;; uses a special keymap.
(put-text-property (point-min) (1- (point)) 'read-only 'ses)
(put-text-property (point-min) (1- (point)) 'keymap 'ses-mode-print-map)
;; For the beginning of the buffer, we want the read-only and keymap
;; attributes to be inherited from the first character.
(put-text-property (point-min) (1+ (point-min)) 'front-sticky t)
;; Create intangible properties, which also indicate which cell the text
;; came from.
(dotimes-with-progress-reporter (row ses--numrows) "Finding cells..."
(dotimes (col ses--numcols)
(setq pos end
sym (ses-cell-symbol row col))
(unless (eq (symbol-value sym) '*skip*)
;; Include skipped cells following this one.
(while (and (< col (1- ses--numcols))
(eq (ses-cell-value row (1+ col)) '*skip*))
(setq end (+ end (ses-col-width col) 1)
;; Beware: Modifying the iteration variable of `dotimes'
;; may or may not affect the iteration!
col (1+ col)))
(setq end (save-excursion
(goto-char pos)
(move-to-column (+ (current-column) (- end pos)
(ses-col-width col)))
(if (eolp)
(+ end (ses-col-width col) 1)
(forward-char)
(point))))
(put-text-property pos end 'intangible sym))))))
;; Create the underlining overlay. It's impossible for (point) to be 2,
;; because column A must be at least 1 column wide.
(setq ses--curcell-overlay (make-overlay (1+ (point-min)) (1+ (point-min))))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment