187 |
(error "`fast-lock' was written for long file name systems")) |
(error "`fast-lock' was written for long file name systems")) |
188 |
|
|
189 |
(eval-when-compile |
(eval-when-compile |
190 |
;; |
;; |
191 |
;; We don't do this at the top-level as we only use non-autoloaded macros. |
;; We don't do this at the top-level as we only use non-autoloaded macros. |
192 |
(require 'cl) |
(require 'cl) |
193 |
;; |
;; |
194 |
;; We use this to preserve or protect things when modifying text properties. |
;; We use this to preserve or protect things when modifying text properties. |
195 |
(defmacro save-buffer-state (varlist &rest body) |
(defmacro save-buffer-state (varlist &rest body) |
196 |
"Bind variables according to VARLIST and eval BODY restoring buffer state." |
"Bind variables according to VARLIST and eval BODY restoring buffer state." |
197 |
(` (let* ((,@ (append varlist |
`(let* (,@(append varlist |
198 |
'((modified (buffer-modified-p)) (buffer-undo-list t) |
'((modified (buffer-modified-p)) (buffer-undo-list t) |
199 |
(inhibit-read-only t) (inhibit-point-motion-hooks t) |
(inhibit-read-only t) (inhibit-point-motion-hooks t) |
200 |
before-change-functions after-change-functions |
before-change-functions after-change-functions |
201 |
deactivate-mark buffer-file-name buffer-file-truename)))) |
deactivate-mark buffer-file-name buffer-file-truename))) |
202 |
(,@ body) |
,@body |
203 |
(when (and (not modified) (buffer-modified-p)) |
(when (and (not modified) (buffer-modified-p)) |
204 |
(set-buffer-modified-p nil))))) |
(set-buffer-modified-p nil)))) |
205 |
(put 'save-buffer-state 'lisp-indent-function 1) |
(put 'save-buffer-state 'lisp-indent-function 1) |
206 |
;; |
;; |
207 |
;; We use this to verify that a face should be saved. |
;; We use this to verify that a face should be saved. |
208 |
(defmacro fast-lock-save-facep (face) |
(defmacro fast-lock-save-facep (face) |
209 |
"Return non-nil if FACE is one of `fast-lock-save-faces'." |
"Return non-nil if FACE is one of `fast-lock-save-faces'." |
210 |
(` (or (null fast-lock-save-faces) |
`(or (null fast-lock-save-faces) |
211 |
(if (symbolp (, face)) |
(if (symbolp ,face) |
212 |
(memq (, face) fast-lock-save-faces) |
(memq ,face fast-lock-save-faces) |
213 |
(let ((faces (, face))) |
(let ((faces ,face)) |
214 |
(while (unless (memq (car faces) fast-lock-save-faces) |
(while (unless (memq (car faces) fast-lock-save-faces) |
215 |
(setq faces (cdr faces)))) |
(setq faces (cdr faces)))) |
216 |
faces))))) |
faces)))) |
217 |
;; |
;; |
218 |
;; We use this for compatibility with a future Emacs. |
;; We use this for compatibility with a future Emacs. |
219 |
(or (fboundp 'with-temp-message) |
(or (fboundp 'with-temp-message) |
220 |
(defmacro with-temp-message (message &rest body) |
(defmacro with-temp-message (message &rest body) |
221 |
(` (let ((temp-message (, message)) current-message) |
`(let ((temp-message ,message) current-message) |
222 |
(unwind-protect |
(unwind-protect |
223 |
(progn |
(progn |
224 |
(when temp-message |
(when temp-message |
225 |
(setq current-message (current-message)) |
(setq current-message (current-message)) |
226 |
(message temp-message)) |
(message temp-message)) |
227 |
(,@ body)) |
,@body) |
228 |
(when temp-message |
(when temp-message |
229 |
(message current-message))))))) |
(message current-message)))))) |
230 |
;; |
;; |
231 |
;; We use this for compatibility with a future Emacs. |
;; We use this for compatibility with a future Emacs. |
232 |
(or (fboundp 'defcustom) |
(or (fboundp 'defcustom) |
233 |
(defmacro defcustom (symbol value doc &rest args) |
(defmacro defcustom (symbol value doc &rest args) |
234 |
(` (defvar (, symbol) (, value) (, doc)))))) |
`(defvar ,symbol ,value ,doc)))) |
235 |
|
|
236 |
;(defun fast-lock-submit-bug-report () |
;(defun fast-lock-submit-bug-report () |
237 |
; "Submit via mail a bug report on fast-lock.el." |
; "Submit via mail a bug report on fast-lock.el." |