From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Pohlack Subject: Re: Org-mode version 6.32trans and 6.21b; Strange interaction between whitespace-mode and cust. org-ellipsis Date: Fri, 04 Dec 2009 16:41:45 +0100 Message-ID: <4B192DB9.6070407@os.inf.tu-dresden.de> 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> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NGaI8-0005r1-50 for emacs-orgmode@gnu.org; Fri, 04 Dec 2009 10:41:56 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NGaI3-0005lA-AS for emacs-orgmode@gnu.org; Fri, 04 Dec 2009 10:41:55 -0500 Received: from [199.232.76.173] (port=53004 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NGaI3-0005ky-3H for emacs-orgmode@gnu.org; Fri, 04 Dec 2009 10:41:51 -0500 Received: from os.inf.tu-dresden.de ([141.76.48.99]:50814) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NGaI2-0006C9-1n for emacs-orgmode@gnu.org; Fri, 04 Dec 2009 10:41:50 -0500 In-Reply-To: <6A083B8A-17A3-40C1-9503-CE07FF660F7D@gmail.com> 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: Carsten Dominik Cc: emacs-orgmode@gnu.org 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 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 table >> (or install an own one) if it wants to do buffer-local 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 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 (», ·)") (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) ;… ) ----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 …) is documented to modify the local buffer only. Org's global display table de-localizes all of whitespace-mode's local functionality. Cheers, Martin