*** ../../../../d/pub/emacs/pure/emacs-21.3.50/lisp/textmodes/table.el Wed Feb 9 07:50:36 2005 --- table.el Tue Mar 8 11:15:27 2005 *************** *** 5,11 **** ;; Keywords: wp, convenience ;; Author: Takaaki Ota ;; Created: Sat Jul 08 2000 13:28:45 (PST) ! ;; Revised: Tue Jun 01 2004 11:36:39 (PDT) ;; This file is part of GNU Emacs. --- 5,11 ---- ;; Keywords: wp, convenience ;; Author: Takaaki Ota ;; Created: Sat Jul 08 2000 13:28:45 (PST) ! ;; Revised: Tue Mar 08 2005 11:15:27 (PST) ;; This file is part of GNU Emacs. *************** *** 1024,1039 **** :active (and (not buffer-read-only) (not (table--probe-cell))) :help "Insert a text based table at point"] ["Row" table-insert-row ! :active (and (not buffer-read-only) ! (or (table--probe-cell) ! (save-excursion ! (table--find-row-column nil t)))) :help "Insert row(s) of cells in table"] ["Column" table-insert-column ! :active (and (not buffer-read-only) ! (or (table--probe-cell) ! (save-excursion ! (table--find-row-column 'column t)))) :help "Insert column(s) of cells in table"]) "----" ("Recognize" --- 1024,1033 ---- :active (and (not buffer-read-only) (not (table--probe-cell))) :help "Insert a text based table at point"] ["Row" table-insert-row ! :active (table--row-column-insertion-point-p) :help "Insert row(s) of cells in table"] ["Column" table-insert-column ! :active (table--row-column-insertion-point-p 'column) :help "Insert column(s) of cells in table"]) "----" ("Recognize" *************** *** 1076,1091 **** '("Table" ("Insert" ["Row" table-insert-row ! :active (and (not buffer-read-only) ! (or (table--probe-cell) ! (save-excursion ! (table--find-row-column nil t)))) :help "Insert row(s) of cells in table"] ["Column" table-insert-column ! :active (and (not buffer-read-only) ! (or (table--probe-cell) ! (save-excursion ! (table--find-row-column 'column t)))) :help "Insert column(s) of cells in table"]) ("Delete" ["Row" table-delete-row --- 1070,1079 ---- '("Table" ("Insert" ["Row" table-insert-row ! :active (table--row-column-insertion-point-p) :help "Insert row(s) of cells in table"] ["Column" table-insert-column ! :active (table--row-column-insertion-point-p 'column) :help "Insert column(s) of cells in table"]) ("Delete" ["Row" table-delete-row *************** *** 4698,4703 **** --- 4686,4715 ---- (setq multiplier (1- multiplier))) ret-str)) + (defun table--line-column-position (line column) + "Return the location of LINE forward at COLUMN." + (save-excursion + (forward-line line) + (move-to-column column) + (point))) + + (defun table--row-column-insertion-point-p (&optional columnp) + "Return non nil if it makes sense to insert a row or a column at point." + (and (not buffer-read-only) + (or (get-text-property (point) 'table-cell) + (let ((column (current-column))) + (if columnp + (or (text-property-any (line-beginning-position 0) + (table--line-column-position -1 column) + 'table-cell t) + (text-property-any (line-beginning-position) (point) 'table-cell t) + (text-property-any (line-beginning-position 2) + (table--line-column-position 1 column) + 'table-cell t)) + (text-property-any (table--line-column-position -2 column) + (table--line-column-position -2 (+ 2 column)) + 'table-cell t)))))) + (defun table--find-row-column (&optional columnp no-error) "Search table and return a cell coordinate list of row or column." (let ((current-coordinate (table--get-coordinate))) *************** *** 5136,5142 **** (defun table--editable-cell-p (&optional abort-on-error) (and (not buffer-read-only) ! (table--probe-cell abort-on-error))) (defun table--probe-cell (&optional abort-on-error) "Probes a table cell around the point. --- 5148,5154 ---- (defun table--editable-cell-p (&optional abort-on-error) (and (not buffer-read-only) ! (get-text-property (point) 'table-cell))) (defun table--probe-cell (&optional abort-on-error) "Probes a table cell around the point.