From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=) Newsgroups: gmane.emacs.devel Subject: Re: Spreadsheet display mode Date: Fri, 23 Nov 2007 13:03:48 +0100 Message-ID: References: <64bfe3d50711221703n6a2aa803refcae006b68a022a@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1195819470 3720 80.91.229.12 (23 Nov 2007 12:04:30 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 23 Nov 2007 12:04:30 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Nov 23 13:04:37 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IvXGt-0004Lv-QU for ged-emacs-devel@m.gmane.org; Fri, 23 Nov 2007 13:04:36 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IvXGf-00006d-6d for ged-emacs-devel@m.gmane.org; Fri, 23 Nov 2007 07:04:21 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IvXGb-0008Uk-33 for emacs-devel@gnu.org; Fri, 23 Nov 2007 07:04:17 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IvXGY-0008R1-II for emacs-devel@gnu.org; Fri, 23 Nov 2007 07:04:15 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IvXGY-0008Qq-FJ for emacs-devel@gnu.org; Fri, 23 Nov 2007 07:04:14 -0500 Original-Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1IvXGY-0003SA-4y for emacs-devel@gnu.org; Fri, 23 Nov 2007 07:04:14 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1IvXGR-0006hS-5F for emacs-devel@gnu.org; Fri, 23 Nov 2007 12:04:07 +0000 Original-Received: from remote1.student.chalmers.se ([129.16.29.79]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 23 Nov 2007 12:04:07 +0000 Original-Received: from bojohan+news by remote1.student.chalmers.se with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 23 Nov 2007 12:04:07 +0000 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 39 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: remote1.student.chalmers.se Mail-Copies-To: never User-Agent: Gnus/5.110007 (No Gnus v0.7) Emacs/23.0.50 (gnu/linux) Cancel-Lock: sha1:ci5S71tqNfXwz3l004ie8QZNLiY= X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:83945 Archived-At: "David O'Toole" writes: > I did have a version that supported embedding an interactive > spreadsheet UI into random buffers as a minor mode, using display > properties. You can't put point inside the text, but it can still > receive mouse clicks and keyboard events, so I could just draw a fake > cursor (with an overlay) and map keystrokes to commands that move the > fake cursor. The illusion was pretty good. `cursor' Normally, the cursor is displayed at the end of any overlay and text property strings present at the current window position. You can place the cursor on any desired character of these strings by giving that character a non-`nil' CURSOR text property. (setq foo-map (let ((map (make-sparse-keymap))) (define-key map [down-mouse-1] 'foo) map)) (defun foo (e) (interactive "e") (let* ((x (posn-string (event-start e))) (str (car x)) (pos (cdr x))) (mouse-set-point e) (remove-text-properties 0 (length str) '(cursor nil) str) (put-text-property pos (1+ pos) 'cursor t str) ;; `redisplay' doesn't work!! (force-mode-line-update))) (insert (propertize "$" 'display (propertize "123456" 'keymap foo-map))) ;; Click to place point -- Johan Bockgård