[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 406e120 330/433: Merge pull request #19 from dgutov/font-l
From: |
Dmitry Gutov |
Subject: |
[elpa] master 406e120 330/433: Merge pull request #19 from dgutov/font-lock |
Date: |
Thu, 15 Mar 2018 19:44:29 -0400 (EDT) |
branch: master
commit 406e120d8900b83c35e4229fb2a157c2c68c3b23
Merge: 9674355 a27d7af
Author: Steve Purcell <address@hidden>
Commit: Steve Purcell <address@hidden>
Merge pull request #19 from dgutov/font-lock
Allow toggling whitespace-mode
---
mmm-compat.el | 29 ++-------------
mmm-region.el | 111 ++++++++++++++++++++--------------------------------------
mmm-utils.el | 4 +--
mmm-vars.el | 20 +++++++++--
4 files changed, 59 insertions(+), 105 deletions(-)
diff --git a/mmm-compat.el b/mmm-compat.el
index ce9e736..01842fd 100644
--- a/mmm-compat.el
+++ b/mmm-compat.el
@@ -156,38 +156,15 @@ This makes `@' in skeletons act approximately like it
does in FSF."
;;{{{ Make Temp Buffers (XEmacs)
(defmacro mmm-make-temp-buffer (buffer name)
- "Return a buffer called NAME including the text of BUFFER.
+ "Return a buffer with name based on NAME including the text of BUFFER.
This text should not be modified."
(if (fboundp 'make-indirect-buffer)
- `(make-indirect-buffer ,buffer ,name)
+ `(make-indirect-buffer ,buffer (generate-new-buffer-name ,name))
`(save-excursion
- (set-buffer (get-buffer-create ,name))
+ (set-buffer (generate-new-buffer ,name))
(insert-buffer ,buffer)
(current-buffer))))
-;;}}}
-;;{{{ Font Lock Available (Emacs w/o X)
-
-(defvar mmm-font-lock-available-p (or window-system mmm-xemacs)
- "Whether font-locking is available.
-Emacs 19 and 20 only provide font-lock with a window system in use.")
-
-;;}}}
-;;{{{ Font Lock Defaults (XEmacs)
-
-(defmacro mmm-set-font-lock-defaults ()
- "Set font-lock defaults without trying to turn font-lock on.
-In XEmacs, `font-lock-set-defaults' calls `font-lock-set-defaults-1'
-to do the real work but then `turn-on-font-lock', which in turn calls
-`font-lock-mode', which unsets the defaults if running in a hidden
-buffer \(name begins with a space). So in XEmacs, we just call
-`font-lock-set-defaults-1' directly."
- (if mmm-xemacs
- `(font-lock-set-defaults-1)
- `(font-lock-set-defaults)))
-
-;;}}}
-
(provide 'mmm-compat)
;;; mmm-compat.el ends here
diff --git a/mmm-region.el b/mmm-region.el
index 69b62ea..4c04515 100644
--- a/mmm-region.el
+++ b/mmm-region.el
@@ -495,69 +495,36 @@ which is set here as well. See
`mmm-save-local-variables'. If FORCE
is non-nil, don't quit if the info is already there."
(let ((buffer-entry (assq mode mmm-buffer-saved-locals))
(region-entry (assq mode mmm-region-saved-locals-defaults))
- global-vars buffer-vars region-vars
- ;; kludge for XEmacs 20
- (html-helper-build-new-buffer nil))
+ global-vars buffer-vars region-vars)
(unless (and (not force)
(get mode 'mmm-local-variables)
buffer-entry
region-entry)
- (save-excursion
- (let ((filename (buffer-file-name)))
- ;; On errors, the temporary buffers don't get deleted, so here
- ;; we get rid of any old ones that may be hanging around.
- (when (buffer-live-p (get-buffer mmm-temp-buffer-name))
- (with-current-buffer (get-buffer mmm-temp-buffer-name)
- (set-buffer-modified-p nil)
- (kill-buffer (current-buffer))))
- ;; Now make a new temporary buffer.
- (set-buffer (mmm-make-temp-buffer (current-buffer)
- mmm-temp-buffer-name))
- ;; Handle stupid modes that need the file name set
- (if (memq mode mmm-set-file-name-for-modes)
- (setq buffer-file-name filename)))
- (funcall mode)
- (when (featurep 'font-lock)
- ;; XEmacs doesn't have global-font-lock-mode (or rather, it
- ;; has nothing but global-font-lock-mode).
- (when (or mmm-xemacs
- ;; Code copied from font-lock.el to detect when font-lock
- ;; should be on via global-font-lock-mode.
- (and (or font-lock-defaults
- (and (boundp 'font-lock-defaults-alist)
- (assq major-mode font-lock-defaults-alist))
- (assq major-mode font-lock-keywords-alist))
- (or (eq font-lock-global-modes t)
- (if (eq (car-safe font-lock-global-modes) 'not)
- (not (memq major-mode
- (cdr font-lock-global-modes)))
- (memq major-mode font-lock-global-modes)))))
- ;; Don't actually fontify in the temp buffer, but note
- ;; that we should fontify when we use this mode.
- (put mode 'mmm-font-lock-mode t))
- ;; Get the font-lock variables
- (when mmm-font-lock-available-p
- ;; To fool `font-lock-add-keywords'
- (let ((font-lock-mode t))
- (mmm-set-font-lock-defaults)))
- ;; These can't be in the local variables list, because we
- ;; replace their actual values, but we want to use their
- ;; original values elsewhere.
- (unless (and mmm-xemacs (= emacs-major-version 20))
- ;; XEmacs 20 doesn't have this variable. This effectively
- ;; prevents the MMM font-lock support from working, but we
- ;; just ignore it and go on, to prevent an error message.
- (put mode 'mmm-fontify-region-function
- font-lock-fontify-region-function))
- (put mode 'mmm-beginning-of-syntax-function
- font-lock-beginning-of-syntax-function))
- ;; Get variables
- (setq global-vars (mmm-get-locals 'global)
- buffer-vars (mmm-get-locals 'buffer)
- region-vars (mmm-get-locals 'region))
- (put mode 'mmm-mode-name mode-name)
- (set-buffer-modified-p nil)
- (kill-buffer (current-buffer)))
+ (let ((temp-buffer (mmm-make-temp-buffer (current-buffer)
+ mmm-temp-buffer-name))
+ (mmm-in-temp-buffer t))
+ (unwind-protect
+ (with-current-buffer temp-buffer
+ ;; Handle stupid modes that need the file name set.
+ (when (memq mode mmm-set-file-name-for-modes)
+ (setq buffer-file-name filename))
+ (funcall mode)
+ (when (featurep 'font-lock)
+ (put mode 'mmm-font-lock-mode font-lock-mode)
+ ;; These can't be in the local variables list, because we
+ ;; replace their actual values, but we want to use their
+ ;; original values elsewhere.
+ (put mode 'mmm-fontify-region-function
+ font-lock-fontify-region-function)
+ (put mode 'mmm-beginning-of-syntax-function
+ font-lock-beginning-of-syntax-function))
+ ;; Get variables
+ (setq global-vars (mmm-get-locals 'global)
+ buffer-vars (mmm-get-locals 'buffer)
+ region-vars (mmm-get-locals 'region))
+ (put mode 'mmm-mode-name mode-name))
+ (set-buffer-modified-p nil)
+ (kill-buffer temp-buffer)))
(put mode 'mmm-local-variables global-vars)
(if buffer-entry
(setcdr buffer-entry buffer-vars)
@@ -692,23 +659,21 @@ region and mode for the previous position."
(defun mmm-enable-font-lock (mode)
"Turn on font lock if it is not already on and MODE enables it."
(mmm-update-mode-info mode)
- (and mmm-font-lock-available-p
- (not font-lock-mode)
+ (and (not font-lock-mode)
(get mode 'mmm-font-lock-mode)
(font-lock-mode 1)))
(defun mmm-update-font-lock-buffer ()
- "Turn on font lock iff any mode in the buffer enables it."
- (when mmm-font-lock-available-p
- (if (some #'(lambda (mode)
- (get mode 'mmm-font-lock-mode))
- (cons mmm-primary-mode
- (mapcar #'(lambda (ovl)
- (overlay-get ovl 'mmm-mode))
- (mmm-overlays-overlapping
- (point-min) (point-max)))))
- (font-lock-mode 1)
- (font-lock-mode 0))))
+ "Turn on font lock if any mode in the buffer enables it."
+ (if (some #'(lambda (mode)
+ (get mode 'mmm-font-lock-mode))
+ (cons mmm-primary-mode
+ (mapcar #'(lambda (ovl)
+ (overlay-get ovl 'mmm-mode))
+ (mmm-overlays-overlapping
+ (point-min) (point-max)))))
+ (font-lock-mode 1)
+ (font-lock-mode 0)))
(defun mmm-refontify-maybe (&optional start stop)
"Re-fontify from START to STOP, or entire buffer, if enabled."
@@ -793,7 +758,7 @@ of the REGIONS covers START to STOP."
(goto-char (or saved-pos (point-min)))
(mmm-set-current-submode saved-mode)
;; This looks for the current overlay at point to set region locals.
- (mmm-set-local-variables saved-mode))))
+ (mmm-set-local-variables (or saved-mode mmm-primary-mode)))))
(when loudly (message nil)))
(defun mmm-fontify-region-list (mode regions)
diff --git a/mmm-utils.el b/mmm-utils.el
index 98abdb8..dffbd73 100644
--- a/mmm-utils.el
+++ b/mmm-utils.el
@@ -46,9 +46,7 @@ means not hidden, not a minibuffer, not in batch mode, and
not in of
(window-minibuffer-p (selected-window))
(memq major-mode mmm-never-modes)
noninteractive
- ;; Unnecessary as now hidden
-;;; (equal (buffer-name) mmm-temp-buffer-name)
- )
+ mmm-in-temp-buffer)
,@body))
;;;(def-edebug-spec mmm-valid-buffer t)
diff --git a/mmm-vars.el b/mmm-vars.el
index 7cddacd..8b8ea0a 100644
--- a/mmm-vars.el
+++ b/mmm-vars.el
@@ -123,7 +123,9 @@
'(mode-popup-menu
(((lambda () current-menubar) . set-buffer-menubar))
))
- font-lock-keywords
+ (font-lock-keywords buffer)
+ font-lock-set-defaults
+ font-lock-major-mode
font-lock-keywords-only
font-lock-keywords-case-fold-search
font-lock-syntax-table
@@ -291,6 +293,13 @@
((current-local-map . use-local-map) buffer)
paragraph-separate
paragraph-start
+ (whitespace-active-style buffer)
+ (whitespace-display-table buffer)
+ (whitespace-display-table-was-local buffer)
+ (whitespace-font-lock buffer)
+ (whitespace-font-lock-mode buffer)
+ (whitespace-font-lock-keywords buffer)
+ (whitespace-mode buffer)
)
"Which local variables to save for major mode regions.
Each element has the form \(VARIABLE [TYPE [MODES]]), causing VARIABLE
@@ -1028,8 +1037,13 @@ The CLASSES are all made private, i.e. non-user-visible."
;;}}}
;;{{{ Temp Buffer Name
-(defvar mmm-temp-buffer-name " *mmm-temp*"
- "Name for temporary buffers created by MMM Mode.")
+(defvar mmm-temp-buffer-name "mmm-temp-buffer"
+ "Name for temporary buffers created by MMM Mode.
+Using non-special name, so that font-lock-mode will be enabled
+automatically when appropriate, and will set all related vars.")
+
+(defvar mmm-in-temp-buffer nil
+ "Bound to t when working in the temp buffer.")
;;}}}
;;{{{ Interactive History
- [elpa] master 004a618 370/433: Fix #23, (continued)
- [elpa] master 004a618 370/433: Fix #23, Dmitry Gutov, 2018/03/15
- [elpa] master 53524db 389/433: Remove version.texi from the repo, Dmitry Gutov, 2018/03/15
- [elpa] master 2c9532b 326/433: Simplify mmm-update-mode-info, Dmitry Gutov, 2018/03/15
- [elpa] master e767fa2 265/433: Added script and documentation for installing from CVS, Dmitry Gutov, 2018/03/15
- [elpa] master 7965887 279/433: Fix error in mmm-mode when Emacs 23 immediately evaporates zero-width submode regions, Dmitry Gutov, 2018/03/15
- [elpa] master 7da80fb 422/433: Add cl-lib package dependency, Dmitry Gutov, 2018/03/15
- [elpa] master cd66bdd 316/433: Improve mmm-erb usage instructions, Dmitry Gutov, 2018/03/15
- [elpa] master 2e06d3d 356/433: Remove the useless CVS $Id tags, Dmitry Gutov, 2018/03/15
- [elpa] master 68fe94d 274/433: (mmm-ify): Change defaults for front-delim and, Dmitry Gutov, 2018/03/15
- [elpa] master 28d51d2 312/433: Note availability of Melpa packages, Dmitry Gutov, 2018/03/15
- [elpa] master 406e120 330/433: Merge pull request #19 from dgutov/font-lock,
Dmitry Gutov <=
- [elpa] master 509660a 354/433: Merge pull request #22 from purcell/indentation, Dmitry Gutov, 2018/03/15
- [elpa] master e583767 284/433: Provide more sensible face defaults for dark and light backgrounds, Dmitry Gutov, 2018/03/15
- [elpa] master c28501c 387/433: Don't use syntax-begin-function, Dmitry Gutov, 2018/03/15
- [elpa] master 141bbee 352/433: Remove regexp-opt's legacy stuff, Dmitry Gutov, 2018/03/15
- [elpa] master ff4c564 344/433: * mmm-noweb.el: Add the FIXME note., Dmitry Gutov, 2018/03/15
- [elpa] master 5c152e0 334/433: Merge pull request #20 from dgutov/overlays, Dmitry Gutov, 2018/03/15
- [elpa] master 16907a3 368/433: Delete .cvsignore, move almost everything to .gitignore, Dmitry Gutov, 2018/03/15
- [elpa] master df0d56b 406/433: Fix regression from the previous commit, Dmitry Gutov, 2018/03/15
- [elpa] master 50764ae 269/433: Fixed back recognition of output regions., Dmitry Gutov, 2018/03/15
- [elpa] master cb905bd 431/433: Add copyright blurbs to the test files, Dmitry Gutov, 2018/03/15