Function: *table--cell-delete-char
*table--cell-delete-char is an interactive and byte-compiled function
defined in table.el.gz.
Signature
(*table--cell-delete-char N)
Documentation
Table cell version of delete-char.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/table.el.gz
(defun *table--cell-delete-char (n)
"Table cell version of `delete-char'."
(interactive "*p")
(let ((overwrite overwrite-mode))
(table-with-cache-buffer
(if (and overwrite (< n 0))
(progn
(while (not (zerop n))
(let ((coordinate (table--get-coordinate)))
(if (zerop (car coordinate))
(unless (zerop (cdr coordinate))
(table--goto-coordinate (cons (1- table-cell-info-width) (1- (cdr coordinate))))
(unless (eolp)
(delete-char 1)))
(delete-char -1)
(insert ?\s)
(forward-char -1)))
(setq n (1+ n)))
(setq table-inhibit-auto-fill-paragraph t))
(let ((coordinate (table--get-coordinate))
(end-marker (copy-marker (+ (point) n)))
(deleted))
(if (or (< end-marker (point-min))
(> end-marker (point-max))) nil
(table--remove-eol-spaces (point-min) (point-max))
(setq deleted (buffer-substring (point) end-marker))
(delete-char n)
;; in fixed width mode when two lines are concatenated
;; remove continuation character if there is one.
(and table-fixed-width-mode
(string-match "^\n" deleted)
(equal (char-before) table-word-continuation-char)
(delete-char -2))
;; see if the point is placed at the right tip of the previous
;; blank line, if so get rid of the preceding blanks.
(if (and (not (bolp))
(/= (cdr coordinate) (cdr (table--get-coordinate)))
(let ((end (point)))
(save-excursion
(beginning-of-line)
(re-search-forward "\\s +" end t)
(= (point) end))))
(replace-match ""))
;; do not fill the paragraph if the point is already at the end
;; of this paragraph and is following a blank character
;; (otherwise the filling squeezes the preceding blanks)
(if (and (looking-at "\\s *$")
(or (bobp)
(save-excursion
(backward-char)
(looking-at "\\s "))))
(setq table-inhibit-auto-fill-paragraph t))
)
(set-marker end-marker nil))))))