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 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode