diff options
Diffstat (limited to 'contrib/mmm/mmm-compat.el')
-rw-r--r-- | contrib/mmm/mmm-compat.el | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/contrib/mmm/mmm-compat.el b/contrib/mmm/mmm-compat.el deleted file mode 100644 index 096233c6..00000000 --- a/contrib/mmm/mmm-compat.el +++ /dev/null @@ -1,194 +0,0 @@ -;;; mmm-compat.el --- MMM Hacks for compatibility with other Emacsen - -;; Copyright (C) 2000 by Michael Abraham Shulman - -;; Author: Michael Abraham Shulman <viritrilbia@users.sourceforge.net> -;; Version: $Id$ - -;;{{{ GPL - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;}}} - -;;; Commentary: - -;; This file provides a number of hacks that are necessary for MMM -;; Mode to function in different Emacsen. MMM Mode is designed for -;; FSF Emacs 20 and 21, but these hacks usually enable it to work -;; almost perfectly in Emacs 19 and XEmacs 20 or 21. - -;;; Code: - -(require 'cl) - -;;{{{ Emacsen Detection - -(defvar mmm-xemacs (featurep 'xemacs) - "Whether we are running XEmacs.") - -;;}}} -;;{{{ Keywords (Emacs 19) - -;; Emacs 19 doesn't automatically set keyword variables to themselves. -;; We shouldn't have to do any more than these, since CL automatically -;; defines all keywords used for function arguments. -(defvar mmm-keywords-used - '(:group :regexp :region :function :insert :classes :private) - "List of extra keywords used by MMM Mode.") - -(dolist (keyword mmm-keywords-used) - (set keyword keyword)) - -;;}}} -;;{{{ Customization (Emacs 19) - -(condition-case () - (require 'custom) - (error nil)) - -(unless (and (featurep 'custom) - (fboundp 'custom-declare-variable)) - (defmacro defgroup (&rest args) - nil) - ;; da: backquote syntax updated, so not Emacs <19.29 compatible - (defmacro defface (var values doc &rest args) - `(make-face (quote ,var))) - (defmacro defcustom (var value doc &rest args) - `(defvar ,var ,value ,doc))) - -;;}}} -;;{{{ Regexp-Opt (Emacs 19) - -(condition-case () - (require 'regexp-opt) - (error nil)) - -(unless (and (featurep 'regexp-opt) - (fboundp 'regexp-opt)) - ;; No regexp-opt; create one - (defun regexp-opt (strings &optional paren) - (concat (if paren "\\(" "") - (mapconcat 'regexp-quote strings "\\|") - (if paren "\\)" "")))) - -;;}}} -;;{{{ Regexp-Opt (XEmacs) - -(defmacro mmm-regexp-opt (strings paren) - "Act like FSF Emacs' `regexp-opt', whichever Emacs we're in. -XEmacs' `regexp-opt' requires an extra parameter to do grouping." - (if (featurep 'xemacs) - `(regexp-opt ,strings ,paren t) - `(regexp-opt ,strings ,paren))) - -;;}}} -;;{{{ Overlays (XEmacs) - -;; The main thing we use from FSF Emacs that XEmacs doesn't support -;; are overlays. XEmacs uses extents instead, but comes with a package -;; to emulate overlays. -(when mmm-xemacs - ;; This does almost everything we need. - (require 'overlay)) - -;; We also use a couple "special" overlay properties which have -;; different names for XEmacs extents. -(defvar mmm-evaporate-property - (if (featurep 'xemacs) 'detachable 'evaporate) - "The name of the overlay property controlling evaporation.") - -;; We don't use this any more, since its behavior is different in FSF -;; and XEmacs: in the one it replaces the buffer's local map, but in -;; the other it gets stacked on top of it. Instead we just set the -;; buffer's local map temporarily. -;;;(defvar mmm-keymap-property -;;; (if (featurep 'xemacs) 'keymap 'local-map) -;;; "The name of the overlay property controlling keymaps.") - -;;}}} -;;{{{ Keymaps and Events (XEmacs) - -;; In XEmacs, keymaps are a primitive type, while in FSF Emacs, they -;; are a list whose car is the symbol `keymap'. Among other things, -;; this means that they handle default bindings differently. -(defmacro mmm-set-keymap-default (keymap binding) - (if (featurep 'xemacs) - `(set-keymap-default-binding ,keymap ,binding) - `(define-key ,keymap [t] ,binding))) - -;; In XEmacs, events are a primitive type, while in FSF Emacs, they -;; are represented by characters or vectors. We treat them as vectors. -;; We can use `event-modifiers' in both Emacsen to extract the -;; modifiers, but the function to extract the basic key is different. -(defmacro mmm-event-key (event) - (if (featurep 'xemacs) - `(event-key ,event) - `(event-basic-type ,event))) - -;;}}} -;;{{{ Skeleton (XEmacs) - -;; XEmacs' `skeleton' package doesn't provide `@' to record positions. -(defvar skeleton-positions ()) -(defun mmm-fixup-skeleton () - "Add `@' to `skeleton-further-elements' if XEmacs and not there. -This makes `@' in skeletons act approximately like it does in FSF." - (and (featurep 'xemacs) - (defvar skeleton-further-elements ()) - (not (assoc '@ skeleton-further-elements)) - (add-to-list 'skeleton-further-elements - '(@ ''(push (point) skeleton-positions))))) - -;;}}} -;;{{{ Make Temp Buffers (XEmacs) - -(defmacro mmm-make-temp-buffer (buffer name) - "Return a buffer called NAME including the text of BUFFER. -This text should not be modified." - (if (fboundp 'make-indirect-buffer) - `(make-indirect-buffer ,buffer ,name) - `(save-excursion - (set-buffer (get-buffer-create ,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
\ No newline at end of file |