From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Org-mode version 6.32trans and 6.21b; Strange interaction between whitespace-mode and cust. org-ellipsis Date: Mon, 14 Dec 2009 17:27:57 +0100 Message-ID: <05105BC1-7F54-4439-BAAA-5065ACFC44C3@gmail.com> References: <4B16B9B5.5030508@os.inf.tu-dresden.de> <50ED3D70-FE6A-4903-BACC-9EC7D021EC22@gmail.com> <4B182EDB.3070209@os.inf.tu-dresden.de> <6A083B8A-17A3-40C1-9503-CE07FF660F7D@gmail.com> <4B192DB9.6070407@os.inf.tu-dresden.de> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=WINDOWS-1252; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NKEb4-0007zz-5U for emacs-orgmode@gnu.org; Mon, 14 Dec 2009 12:20:34 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NKEay-0007tu-9u for emacs-orgmode@gnu.org; Mon, 14 Dec 2009 12:20:32 -0500 Received: from [199.232.76.173] (port=44993 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NKEax-0007tR-TW for emacs-orgmode@gnu.org; Mon, 14 Dec 2009 12:20:27 -0500 Received: from ey-out-1920.google.com ([74.125.78.146]:23703) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NKEax-0000h5-Lm for emacs-orgmode@gnu.org; Mon, 14 Dec 2009 12:20:27 -0500 Received: by ey-out-1920.google.com with SMTP id 4so906300eyg.34 for ; Mon, 14 Dec 2009 09:20:27 -0800 (PST) In-Reply-To: <4B192DB9.6070407@os.inf.tu-dresden.de> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Martin Pohlack Cc: emacs-orgmode@gnu.org Hi Martin, i can follow your arguments and would like to improve this. What I do not understand yet is this: I was under the impression that normally, there is only a single display table in Emacs, and that is the global one and every buffer will use it. So it would seem to me that whitespace-mode would normally *make* a local table in order to put its changes in there. However, that does not seem to be the case here. Can you see why? - Carsten On Dec 4, 2009, at 4:41 PM, Martin Pohlack wrote: > Carsten Dominik wrote: >> On Dec 3, 2009, at 10:34 PM, Martin Pohlack wrote: >> >>> Carsten Dominik wrote: >>>> Hi Martin, this looks to me like a bug in whitespace.el, why does =20= >>>> it >>>> override the display table org-mode is using? >>> Hmm, my understanding is that each buffer can have its own display >>> table, buffer-display-table. whitespace-mode has to modify this =20 >>> table >>> (or install an own one) if it wants to do buffer-local =20 >>> modifications. >>> So I think it modifies org-mode's table but doesn't override it. >>> >>> My irritation is that by doing so, it does modifies some global =20 >>> state >>> that effects other buffers. >>> >>> A short look into org.el shows that org-display-table is never made >>> buffer local, so this data structure is shared across all org-mode >>> buffers? >> >> Yes, this is the idea, and it seems only logical to me. So why >> do you want different settings in different Org buffers for >> whitespace? So far I am unconvinced that creating a new >> table in each buffer with the right thing to do. > > Ok, I have three argument to support this. > > 1. Let me start by describing a helper and how I use it. This is a > snippet from my init.el: > > ----8<---------------------------------------------------------->8---- > ;;; > ;;; whitespace stuff > ;;; > (when (require 'whitespace nil t) > (require 'column-marker) > > (defvar cycle-whitespace-modes-state 0 > "whitespace mode states: > 0 -> no whitespace stuff, > 1 -> highlighting of stray whitespace, 72 & 80 column lines > 2 -> ws highlighting and identification for tabs and spaces (=BB, =20= > =B7)") > (make-variable-buffer-local 'cycle-whitespace-modes-state) > > (defun my-cycle-whitespace-modes (&optional state) > (interactive) > (if state > (setq cycle-whitespace-modes-state state) > (setq cycle-whitespace-modes-state > (mod (1+ cycle-whitespace-modes-state) 3))) > (case cycle-whitespace-modes-state > (0 > (whitespace-mode 0) > (column-marker-1 -2) > (column-marker-2 -2) > (column-marker-3 -2)) > (1 > (whitespace-mode 0) > (whitespace-mode 1) > (column-marker-1 72) > (column-marker-2 80)) > (otherwise > (whitespace-mode 0) > (whitespace-mode 1) > (whitespace-toggle-options (list 'tab-mark 'space-mark)) > (column-marker-1 72) > (column-marker-2 80)))) > > (global-set-key [f10] 'my-cycle-whitespace-modes) > > (defun my-whitespace-modes-none () (my-cycle-whitespace-modes 0)) > (defun my-whitespace-modes-some () (my-cycle-whitespace-modes 1)) > (defun my-whitespace-modes-full () (my-cycle-whitespace-modes 2)) > > (add-hook 'c-mode-common-hook 'my-whitespace-modes-some) > ;=85 > ) > ----8<---------------------------------------------------------->8---- > > I usually have whitespace mode active in a medium warning level > (my-whitespace-modes-some), which show whitespace at end of line etc. > > Sometimes, I want to see all spaces and tabs in a single buffer > explicitly, e.g. for aligning stuff manually or debugging things > (my-whitespace-modes-full). > > At other times, I want to deactivate all whitespace highlighting > (my-whitespace-modes-none), e.g., when dealing with long lines or when > crafting some ASCII drawings. > > I make, all of these decision per buffer. > > > 2. Whitespace-mode is usually buffer local. Having it modify other > buffers is irritating. If global effects are desired there is the > variable whitespace-global-modes > > > 3. (whitespace-toggle-options =85) is documented to modify the local > buffer only. > > > Org's global display table de-localizes all of whitespace-mode's local > functionality. > > Cheers, > Martin - Carsten