From: Tak Ota <Takaaki.Ota@am.sony.com>
Subject: Re: slow bibtex menu access
Date: Mon, 14 Mar 2005 09:15:05 -0800 (PST) [thread overview]
Message-ID: <20050314.091505.191467501.Takaaki.Ota@am.sony.com> (raw)
In-Reply-To: <20050308.145651.210464538.Takaaki.Ota@am.sony.com>
[-- Attachment #1: Type: Text/Plain, Size: 3324 bytes --]
If there is no objection to this patch could someone check it in
please. Thank you.
-Tak
Tue, 8 Mar 2005 14:56:51 -0800: "Ota, Takaaki" <Takaaki.Ota@us-ti-xims-1.am.sony.com> wrote:
> Stefan kindly informed me that table.el was slowing down menu
> operation considerably depending on buffer contents. The attached
> patch corrects this problem. Thanks Stefan.
>
> -Tak
>
> 2005-03-08 Takaaki Ota <Takaaki.Ota@am.sony.com>
>
> * textmodes/table.el (table--line-column-position): New idiom.
> (table--row-column-insertion-point-p): New function to test
> validity of row and column insertion operation at a location.
> (table-global-menu, table-cell-menu): Use above functions for
> deterministic test operation.
> (table--editable-cell-p): Behave in deterministic fashion.
>
>
> Sat, 5 Mar 2005 13:27:00 -0800: "Stefan Monnier"
> <monnier@iro.umontreal.ca> wrote:
>
> > The following message is a courtesy copy of an article
> > that has been posted to gnu.emacs.help as well.
> >
> > > Thank you, I'd forgotten that (haven't done it in a long time). So I
> > found
> > > the problem, and it was table.el. I had (require 'table) and
> (require
> > > 'emacs-wiki-table) (the latter requires table.el) in a few places. I
> > have
> > > no idea where and how table.el is causing the problem, but would it
> be
> > > possible to turn it off (I guess a hook might do it) while in
> bibtex?
> > > Tables are not needed in bibtex anyway.
> >
> > Setting debug-on-quit and hitting C-g while the menu is being built
> > indicates that the time is actually spent in table--find-row-column.
> >
> > Looking some more at the table.el code, it seems there is a minor
> > logic-thinko bug in it. Can you try the patch below (it's against the
> > Emacs-CVS version of table.el, so you may have to apply the patch by
> > hand).
> >
> > Tak, is my reasoning correct that `table--probe-cell' should return
> > non-nil
> > iff we're inside a table?
> >
> >
> > Stefan
> >
> >
> > --- orig/lisp/textmodes/table.el
> > +++ mod/lisp/textmodes/table.el
> > @@ -1025,13 +1025,13 @@
> > :help "Insert a text based table at point"]
> > ["Row" table-insert-row
> > :active (and (not buffer-read-only)
> > - (or (table--probe-cell)
> > + (and (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)
> > + (and (table--probe-cell)
> > (save-excursion
> > (table--find-row-column 'column t))))
> > :help "Insert column(s) of cells in table"])
> > @@ -1077,13 +1077,13 @@
> > ("Insert"
> > ["Row" table-insert-row
> > :active (and (not buffer-read-only)
> > - (or (table--probe-cell)
> > + (and (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)
> > + (and (table--probe-cell)
> > (save-excursion
> > (table--find-row-column 'column t))))
> > :help "Insert column(s) of cells in table"])
[-- Attachment #2: table.el.patch --]
[-- Type: Text/Plain, Size: 4477 bytes --]
*** ../../../../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 <Takaaki.Ota@am.sony.com>
;; 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 <Takaaki.Ota@am.sony.com>
;; 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.
[-- Attachment #3: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
next prev parent reply other threads:[~2005-03-14 17:15 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.2117.1109641717.32256.help-gnu-emacs@gnu.org>
2005-03-01 12:19 ` slow bibtex menu access Roland Winkler
2005-03-01 14:06 ` Sebastian Luque
2005-03-01 14:31 ` Sebastian Luque
[not found] ` <mailman.2167.1109686744.32256.help-gnu-emacs@gnu.org>
2005-03-01 14:44 ` Roland.Winkler
2005-03-01 16:36 ` Sebastian Luque
[not found] ` <mailman.2198.1109696777.32256.help-gnu-emacs@gnu.org>
2005-03-01 22:13 ` Jochen Küpper
2005-03-02 13:08 ` Stefan Monnier
2005-03-02 19:47 ` Sebastian Luque
[not found] ` <mailman.2371.1109793933.32256.help-gnu-emacs@gnu.org>
2005-03-03 4:04 ` Chong Yidong
2005-03-03 16:18 ` Sebastian Luque
[not found] ` <mailman.2485.1109868847.32256.help-gnu-emacs@gnu.org>
2005-03-05 21:27 ` Stefan Monnier
2005-03-08 22:56 ` Tak Ota
2005-03-14 17:15 ` Tak Ota [this message]
2005-03-18 22:07 ` Tak Ota
2005-03-01 1:25 Sebastian Luque
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050314.091505.191467501.Takaaki.Ota@am.sony.com \
--to=takaaki.ota@am.sony.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.