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))))))