;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\207" [require cl-lib font-lock mmm-compat mmm-utils mmm-auto mmm-vars] 2) #@99 Return the highest-priority MMM Mode overlay at POS. See `mmm-included-p' for the values of TYPE. (defalias 'mmm-overlay-at #[(&optional pos type) "\302 \"@\207" [pos type mmm-overlays-at] 3 (#$ . 248)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put mmm-overlay-at speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@112 Return a list of the MMM overlays at POS, in decreasing priority. See `mmm-included-p' for the values of TYPE. (defalias 'mmm-overlays-at #[(&optional pos type) "\204`\301\302\303\304Se]Td^\"\"!\207" [pos mmm-sort-overlays cl-remove-if-not #[(ovl) "\303\304\"\205\f\305 \n#\207" [ovl pos type overlay-get mmm mmm-included-p] 4] overlays-in] 7 (#$ . 600)]) #@751 Return true if the overlay OVL contains POS. If OVL strictly contains POS, always return true. If OVL starts or ends at POS, return true or false based on the value of TYPE, which should be one of nil, `beg', `end', `none', or `all'. * If TYPE is nil, return true for an overlay starting at POS only if it is beg-sticky, and for one ending at POS only if it is end-sticky. * If TYPE is `beg', return true for any overlay starting at POS but false for any ending at POS. * If TYPE is `end', return true for any overlay ending at POS but false for any starting at POS. * If TYPE is `all', return true for any overlay starting or ending at POS. * If TYPE is `none' (or any other value), return false for any overlay starting or ending at POS. (defalias 'mmm-included-p #[(ovl pos &optional type) "\305!\306!\211 U\2036 U\2036\f\307=\203(\310\311\"\205\205\310\312\"\202\205\f\313=\2032\307\202\205\314\202\205\n U\203W\f\307=\203I\310\311\"\202\205\f\315>\203S\314\202\205\307\202\205 U\203x\f\307=\203j\310\312\"\202\205\f\316>\203t\314\202\205\307\202\205 V\205\205\n W\205\205\314*\207" [ovl end beg pos type overlay-start overlay-end nil overlay-get beg-sticky end-sticky none t (beg all) (end all)] 4 (#$ . 972)]) #@158 Return all MMM overlays containing the region START to STOP. The overlays are returned in order of decreasing priority. No attention is paid to stickiness. (defalias 'mmm-overlays-containing #[(start stop) "\302\303\304\305e] d^\"\"!\207" [start stop mmm-sort-overlays cl-remove-if-not #[(ovl) "\303\304\"\205\305! X\205\306!\nY\207" [ovl start stop overlay-get mmm overlay-start overlay-end] 3] overlays-in] 7 (#$ . 2238)]) #@158 Return all MMM overlays entirely contained in START to STOP. The overlays are returned in order of decreasing priority. No attention is paid to stickiness. (defalias 'mmm-overlays-contained-in #[(start stop) "\302\303\304\305e] d^\"\"!\207" [start stop mmm-sort-overlays cl-remove-if-not #[(ovl) "\303\304\"\205\305! Y\205\306!\nX\207" [ovl start stop overlay-get mmm overlay-start overlay-end] 3] overlays-in] 7 (#$ . 2679)]) #@159 Return all MMM overlays overlapping the region START to STOP. The overlays are returned in order of decreasing priority. No attention is paid to stickiness. (defalias 'mmm-overlays-overlapping #[(start stop) "\302\303\304\305e] d^\"\"!\207" [start stop mmm-sort-overlays cl-remove-if-not #[(ovl) "\301\302\"\207" [ovl overlay-get mmm] 3] overlays-in] 7 (#$ . 3122)]) #@59 Sort OVERLAYS in order of decreasing priority or nesting. (defalias 'mmm-sort-overlays #[(overlays) "\301\302!\303\"\207" [overlays sort copy-sequence #[(x y) "\304\305\"\304 \305\"\211\204\n\203 \206\306\n\206\306V\202'\307!\307 !V*\207" [x y prio-y prio-x overlay-get priority 0 overlay-start] 5]] 3 (#$ . 3498)]) #@128 What submode region overlay we think we are currently in. May be out of date; call `mmm-update-current-submode' to correct it. (defvar mmm-current-overlay nil (#$ . 3835)) (make-variable-buffer-local 'mmm-current-overlay) #@99 What submode region overlay we were in just before this one. Set by `mmm-update-current-submode'. (defvar mmm-previous-overlay nil (#$ . 4063)) (make-variable-buffer-local 'mmm-previous-overlay) #@113 What submode we think we are currently in. May be out of date; call `mmm-update-current-submode' to correct it. (defvar mmm-current-submode nil (#$ . 4265)) (make-variable-buffer-local 'mmm-current-submode) #@84 What submode we were in just before this one. Set by `mmm-update-current-submode'. (defvar mmm-previous-submode nil (#$ . 4478)) (make-variable-buffer-local 'mmm-previous-submode) #@202 Update current and previous position variables to POS, or point. Return non-nil if the current region changed. Also deletes overlays that ought to evaporate because their delimiters have disappeared. (defalias 'mmm-update-current-submode #[(&optional pos) "\304\305\306\307\310!\"\"\210\311\310 \"@*\211 =?\205)\312\n\205%\313\n\314\"\n\"\210\315)\207" [pos type ovl mmm-current-overlay mapc delete-overlay cl-remove-if #[(ovl) "\301\302\"\303=?\206\304\301\303\"!\207" [ovl overlay-get mmm-evap front overlay-buffer] 4] mmm-overlays-at nil mmm-set-current-pair overlay-get mmm-mode t] 7 (#$ . 4665)]) #@99 Set the current submode to MODE, the current overlay to OVL and update the saved previous values. (defalias 'mmm-set-current-pair #[(mode ovl) "\n\f \211\207" [mmm-current-overlay mmm-previous-overlay mmm-current-submode mmm-previous-submode mode ovl] 2 (#$ . 5286)]) #@96 Return the submode at POS (or point), or NIL if none. See `mmm-included-p' for values of TYPE. (defalias 'mmm-submode-at #[(&optional pos type) " \303 \"@*\211\205\304\n\305\")\207" [pos type ovl mmm-overlays-at overlay-get mmm-mode] 4 (#$ . 5565)]) #@430 Return non-nil if the front delimiter of OVL matches as it should. Sets the match data to the front delimiter, if it is a regexp. Otherwise, calls it as a function with point at the beginning of the front delimiter overlay (i.e. where the front delimiter ought to start) and one argument being the region overlay. The function should return non-nil if the front delimiter matches correctly, and set the match data appropriately. (defalias 'mmm-match-front #[(ovl) "\303\302\"\211\205 \303 \304\"\211\205'\212\305 !b\210\n;\203#\306\n!\202&\n!)*\207" [ovl front-ovl front overlay-get match overlay-start looking-at] 4 (#$ . 5829)]) #@425 Return non-nil if the back delimiter of OVL matches as it should. Sets the match data to the back delimiter, if it is a regexp. Otherwise, calls it as a function with point at the beginning of the back delimiter overlay (i.e. where the back delimiter ought to start) and one argument being the region overlay. The function should return non-nil if the back delimiter matches correctly, and set the match data appropriately. (defalias 'mmm-match-back #[(ovl) "\303\302\"\211\205 \303 \304\"\211\205'\212\305 !b\210\n;\203#\306\n!\202&\n!)*\207" [ovl back-ovl back overlay-get match overlay-start looking-at] 4 (#$ . 6475)]) #@65 Return the position at which the front delimiter of OVL starts. (defalias 'mmm-front-start #[(ovl) "\302\301\"\211\203\303 !\203\304 !\202\304!)\207" [ovl front overlay-get overlay-buffer overlay-start] 4 (#$ . 7112)]) #@62 Return the position at which the back delimiter of OVL ends. (defalias 'mmm-back-end #[(ovl) "\302\301\"\211\203\303 !\203\304 !\202\304!)\207" [ovl back overlay-get overlay-buffer overlay-end] 4 (#$ . 7346)]) #@306 Check if the region between BEG and END is valid for SUBMODE. This region must be entirely contained within zero or more existing submode regions, none of which start or end inside it, and it must be a valid child of the highest-priority of those regions, if any. Signals errors, returns `t' if no error. (defalias 'mmm-valid-submode-region #[(submode beg end) "\305\306 \"\307 \"\"\211\203\310\311\n\"\210)\312\300\"\211\203*\f =\203*\310\313 C\"\210)\314\207" [beg end violators parent-mode submode cl-set-difference mmm-overlays-overlapping mmm-overlays-containing signal mmm-subregion-invalid-placement mmm-submode-at mmm-subregion-invalid-parent t] 6 (#$ . 7572)]) #@2971 Make a submode region from BEG to END of SUBMODE. BEG and END are buffer positions or markers with BEG <= END (although see EVAPORATION below). SUBMODE is a major mode function or a valid argument to `mmm-modename->function'. FACE is a valid display face. FRONT and BACK specify the positions of the front and back delimiters for this region, if any. If FRONT is a buffer position or marker, the front delimiter runs from it to BEG. FRONT can also be a two-element list (FRONT-BEG FRONT-END) specifying the exact position of the front delimiter. One must have FRONT-BEG < FRONT-END <= BEG. Similarly, BACK may be a buffer position or marker, in which case the back delimiter runs from END to BACK. BACK can also be a two-element list (BACK-BEG BACK-END) specifying the exact position, in which case we must have END <= BACK-BEG < BACK-END. EVAPORATION specifies under what conditions this submode region should disappear. * If `nil', the region never disappears. This can cause serious problems when using cut-and-paste and is not recommended. * If the value is t, the region disappears whenever it has zero length. This is recommended for manually created regions used for temporary editing convenience. * If the value is `front', the region will disappear whenever the text in its front delimiter disappears, that is, whenever the overlay which marks its front delimiter has zero width. The default value is `front'. However, if the parameter FRONT is nil, then this makes no sense, so the default becomes `t'. Note that if EVAPORATION is `t', then an error is signalled if BEG = END. MATCH-FRONT (resp. MATCH-BACK) is a regexp or function to match the correct delimiters, see `mmm-match-front' (resp. `mmm-match-back'). It is ignored if FRONT (resp. BACK) is nil. At present these are not used much. DELIMITER-MODE specifies the major mode to use for delimiter regions. A `nil' value means they remain in the primary mode. FACE, FRONT-FACE, and BACK-FACE, are faces to use for the region, the front delimiter, and the back delimiter, respectively, under high decoration (see `mmm-submode-decoration-level'). BEG-STICKY and END-STICKY determine whether the front and back of the region, respectively, are sticky with respect to new insertion. The default is yes. NAME is a string giving the "name" of this submode region. Submode regions with the same name are considered part of the same code fragment and formatted accordingly. DISPLAY-NAME is a string to display in the mode line when point is in this submode region. If nil or not given, the name associated with SUBMODE is used. In delimiter regions, "--" is shown. CREATION-HOOK should be a function to run after the region is created, with point at the start of the new region. (fn SUBMODE BEG END &key FACE FRONT BACK (EVAPORATION \='front) DELIMITER-MODE FRONT-FACE BACK-FACE DISPLAY-NAME (MATCH-FRONT "") (MATCH-BACK "") (BEG-STICKY t) (END-STICKY t) NAME CREATION-HOOK) (defalias 'mmm-make-region #[(submode beg end &rest #1=#:--cl-rest--) "\306\307\"A@\306\310\"A@\306\311\"A@\306\312\"\206\313A@\306\314\"A@\306\315\"A@3\306\316\"A@4\306\317\"A@5\306\320\"\206G\321A@6\306\322\"\206S\323A@7\306\324\"\206_\325A@8\306\326\"\206k\327A@9\306\330\"A@:\306\331\"A@;<<\203\262<@\332>\203\231A@\203\250\334\211<\202\204\335\336<@\"\210\202\202)\f\337=\203\301=>W\202\306=>X\204\322\340\341=>D\"\210\n\203\367\n<\204\340\n=D\n@\nA@W\203\362\nA@=X\204\367\340\341\n\"\210 \203 <\204> D @ A@W\203> @X\204\340\341 \"\210\342?!?\343?=>#\210\344 \210?\2037\345?!\210\n\204C\f\302=\203C\337\346?=>: 89\f\337=5& @\347@\350\f#\210\n\203\221\346 \n@\nA@\3343\334\211\337\351\337&\nA\347@\302A#\210\347A\352@#\210\347A\3536#\210) \203\301\346 @ A@\3344\334\211\337\351\337&\nB\347@\303B#\210\347B\352@#\210\347B\3537#\210)\212\214\354 C\355\216\356@!\203\326\356@!b\210\357?@\"\210\360?@\"\210\361?!\210;\203\362; \210,\362 \210@.\207" [#1# face front back evaporation delimiter-mode plist-member :face :front :back :evaporation (nil front) :delimiter-mode :front-face :back-face :display-name :match-front (nil #2="") :match-back (nil #2#) :beg-sticky (nil t) :end-sticky (nil t) :name :creation-hook (:face :front :back :evaporation :delimiter-mode :front-face :back-face :display-name :match-front :match-back :beg-sticky :end-sticky :name :creation-hook :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:face :front :back :evaporation :delimiter-mode :front-face :back-face :display-name :match-front :match-back :beg-sticky :end-sticky :name :creation-hook)" t signal mmm-subregion-invalid-placement mmm-modename->function mmm-valid-submode-region mmm-mode-on mmm-update-mode-info mmm-make-overlay overlay-put mmm-evap "--" region match match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] overlay-start mmm-set-current-pair mmm-set-local-variables mmm-run-submode-hook mmm-update-submode-region front-face back-face display-name match-front match-back beg-sticky end-sticky name creation-hook #3=#:--cl-keys-- beg end submode region-ovl front-ovl back-ovl save-match-data-internal] 12 (#$ . 8259)]) #@97 Internal function to make submode overlays. Does not handle delimiters. Use `mmm-make-region'. (defalias 'mmm-make-overlay #[(submode beg end name face beg-sticky end-sticky evap &optional display-name delim) "\306 \307\n? %\310\311\312\313 D\314\205\315\316\317\307D\320\321 D\322 \236A!BBD\323D\324D\302\nD\303 DD\325\326 #D\257\"BB\"\210\f)\207" [beg end beg-sticky end-sticky ovl submode make-overlay nil mapc #[(pair) "\302 @ A@#\207" [ovl pair overlay-put] 4] (mmm t) mmm-mode append ((delim t)) mmm-local-variables font-lock-cache-state font-lock-cache-position make-marker copy-tree name display-name face mmm-get-face delim mmm-region-saved-locals-defaults mmm-evaporate-property evap] 17 (#$ . 13572)]) (defalias 'mmm-get-face #[(face submode &optional delim) "\304U\203\305\207\306U\203 \203 \207\n\203\307\207 \205\310\207" [mmm-submode-decoration-level face delim submode 0 nil 2 mmm-delimiter-face mmm-default-submode-face] 2]) #@115 Clears all MMM overlays overlapping START and STOP. If STRICT, only clear those entirely included in that region. (defalias 'mmm-clear-overlays #[(&optional start stop strict) "\303\304\203\305 \206\fe\n\206d\"\202!\306 \206e\n\206 d\"\"\210\307 \207" [strict start stop mapc delete-overlay mmm-overlays-contained-in mmm-overlays-overlapping mmm-update-submode-region] 5 (#$ . 14556)]) #@456 Save the global-saved and buffer-saved variables for MODE. Global saving is done on properties of the symbol MODE and buffer saving in `mmm-buffer-saved-locals'. This function must be called for both the dominant mode and all submodes, in each file. Region-saved variables are initialized from `mmm-region-saved-locals-defaults', 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. (defalias 'mmm-update-mode-info #[(mode &optional force) " \236\n\236\306\211\211\211?\205&\307N\205&\205&?\205\275\310p\311!\"\312 \313\306 !\"#\314\216r#q\210$>\203O\"\n \210\315\316!\203z\317\320%#\210\317\321&#\210\317\322\323\324!\205q#\210\317\325'#\210\326\327!\326\330!\326\331!\317\332(#\210.\317\307#\210\203\244 \241\210\202\252 B B\203\266\f\241\202\275\fB\nB\211.\207" [mode mmm-buffer-saved-locals mmm-region-saved-locals-defaults buffer-file-truename region-vars buffer-vars nil mmm-local-variables make-indirect-buffer generate-new-buffer-name buffer-file-name t #[nil "\301!\207" [temp-buffer kill-buffer] 2] featurep font-lock put mmm-font-lock-mode mmm-fontify-region-function mmm-syntax-propertize-function boundp syntax-propertize-function mmm-indent-line-function mmm-get-locals global buffer region mmm-mode-name global-vars region-entry buffer-entry force mmm-temp-buffer-name font-lock-support-mode mmm-in-temp-buffer filename temp-buffer mmm-set-file-name-for-modes font-lock-mode font-lock-fontify-region-function indent-line-function mode-name] 6 (#$ . 14959)]) #@200 Update all MMM properties correctly for the current position. This function and those it calls do the actual work of setting the different keymaps, syntax tables, local variables, etc. for submodes. (defalias 'mmm-update-submode-region #[nil "\306 \205l\307 \"\210\n\206 \206 \310\f \"\210\310\f\311\"\210\310 \312\"\210\313 !\210\314 \"\210\315 !\210*\316 \210\203D\317\320\"\202F\321\211\205k@\3221` 0\210\202a\210A\211\204O\321*\207" [mmm-previous-submode mmm-previous-overlay mmm-current-submode mmm-primary-mode old-mode new-mode mmm-update-current-submode mmm-save-changed-local-variables mmm-run-constructed-hook "exit" "enter" mmm-update-mode-info mmm-set-local-variables mmm-enable-font-lock mmm-set-mode-line overlay-get entry-hook nil (error) mmm-current-overlay mmm-primary-mode-entry-hook func --dolist-tail--] 4 (#$ . 16585)]) (defalias 'mmm-add-hooks #[nil "\301\302\303\304\305$\210\205\301\306\307\304\305$\210\301\310\311\304\305$\207" [mmm-parse-when-idle add-hook post-command-hook mmm-update-submode-region nil t pre-command-hook mmm-mode-reset-timer after-change-functions mmm-mode-edit] 5]) (defalias 'mmm-remove-hooks #[nil "\300\301\302\303#\210\300\304\305\303#\210\300\306\307\303#\207" [remove-hook post-command-hook mmm-update-submode-region t pre-command-hook mmm-mode-reset-timer after-change-functions mmm-mode-edit] 4]) #@177 Filter `mmm-save-local-variables' to match TYPE and MODE. Return a list (VAR ...). In some cases, VAR will be a cons cell (GETTER . SETTER) -- see `mmm-save-local-variables'. (defalias 'mmm-get-local-variables-list #[(type mode) "\301\302\"\207" [mmm-save-local-variables mmm-mapcan #[(element) ":\203A\203A@\203A@ =\202 \303=\205X:\203HAA\203H\3048\305=\204H\306\3048!\203@\3048 \202I\n\3048\235\202I\305\205X:\203V@\202WC\207" [element type mode global 2 t functionp] 3]] 3 (#$ . 17985)]) #@182 Get the local variables and values for TYPE from this buffer. Return ((VAR VALUE) ...). In some cases, VAR will be of the form (GETTER . SETTER) -- see `mmm-save-local-variables'. (defalias 'mmm-get-locals #[(type) "\302\303\304 \"\"\207" [type major-mode mmm-mapcan #[(var) ":\203\f\211@ DC\207\301!\205\211JDC\207" [var boundp] 2] mmm-get-local-variables-list] 5 (#$ . 18516)]) #@73 Get the value of the local variable VAR saved for MODE and OVL, if any. (defalias 'mmm-get-saved-local #[(mode ovl var) "\303 \n\"\236A@\207" [var ovl mode mmm-get-saved-local-variables] 4 (#$ . 18911)]) #@136 Set all the local variables saved for MODE and OVL. Looks up global, buffer and region saves. When MODE is nil, just the region ones. (defalias 'mmm-set-local-variables #[(mode ovl) "\302\303\304 \"\"\207" [mode ovl mapcar #[(var) "@:\203@AA@!\207\301@!\210@A@L\207" [var make-local-variable] 2] mmm-get-saved-local-variables] 5 (#$ . 19123)]) (defalias 'mmm-diff-local-variables #[(mode ovl) "\303\304\305\306 \n\"\"\210)\207" [res mode ovl nil mapc #[(var) "@:\203 @@ \202@J\211A@\232?\205'\303\304@ A@$\nB\211)\207" [var current-value res message "var: %s, current: %s, saved: %s"] 6] mmm-get-saved-local-variables] 5]) (defalias 'mmm-get-saved-local-variables #[(mode ovl) "\304\305N \236A\n\203\306\n\305\"\202 #\207" [mode mmm-buffer-saved-locals ovl mmm-region-saved-locals-for-dominant append mmm-local-variables overlay-get] 6]) #@168 Save by-buffer and by-region variables for MODE and OVL. Called when we move to a new submode region, with MODE and OVL the region and mode for the previous position. (defalias 'mmm-save-changed-local-variables #[(mode ovl) "\206 \n\236A \203\306 \307\"\202\f\310\n \311  \"\210\311 \n\"+\207" [mode mmm-primary-mode mmm-buffer-saved-locals ovl mmm-region-saved-locals-for-dominant set-local-value overlay-get mmm-local-variables #[(var) "A@:\203@@ \202@J\240\207" [var] 2] mapc region-vars buffer-vars] 4 (#$ . 19998)]) #@66 Clear all buffer- and region-saved variables for current buffer. (defalias 'mmm-clear-local-variables #[nil "\303\211\303\211\207" [mmm-buffer-saved-locals mmm-region-saved-locals-defaults mmm-region-saved-locals-for-dominant nil] 3 (#$ . 20545)]) #@64 Turn on font lock if it is not already on and MODE enables it. (defalias 'mmm-enable-font-lock #[(mode) "\302!\210 ?\205\303N\205\301\304!\207" [mode font-lock-mode mmm-update-mode-info mmm-font-lock-mode 1] 2 (#$ . 20802)]) #@57 Turn on font lock if any mode in the buffer enables it. (defalias 'mmm-update-font-lock-buffer #[nil "\301\302\303\304\305ed\"\"B\"\203\306\307!\207\306\310!\207" [mmm-primary-mode cl-some #[(mode) "\301N\207" [mode mmm-font-lock-mode] 2] mapcar #[(ovl) "\301\302\"\207" [ovl overlay-get mmm-mode] 3] mmm-overlays-overlapping font-lock-mode 1 0] 8 (#$ . 21039)]) #@62 Re-fontify from START to STOP, or entire buffer, if enabled. (defalias 'mmm-refontify-maybe #[(&optional start stop) "\205+\303\304!\203\304 \n\"\210\305 \n\"\207 \204\n\203)\306 \206\"e\n\206'd\"\207\307 \207" [font-lock-mode start stop fboundp font-lock-flush font-lock-ensure font-lock-fontify-region font-lock-fontify-buffer] 3 (#$ . 21413)]) #@126 Return a list of all submode-change positions from START to STOP. The list is sorted in order of increasing buffer position. (defalias 'mmm-submode-changes-in #[(start stop) "\304\305\306\307\310 \"\"!\311\"\211\203\n@W\203\nB\303\n! @V\203, C\241\210)\n)\207" [start stop changes last sort cl-remove-duplicates mmm-mapcan #[(ovl) "\301!\302!D\207" [ovl overlay-start overlay-end] 3] mmm-overlays-overlapping <] 8 (#$ . 21776)]) #@138 Return a list of regions of the form (MODE BEG END OVL) whose disjoint union covers the region from START to STOP, including delimiters. (defalias 'mmm-regions-in #[(start stop) " V\205\303\304\305 \"\"\306\n\307\"\310\241\210\n)\207" [stop start regions cl-maplist #[(pos-list) "A\205%@\305\306\n \"@*\211\203\307 \310\"\202\f@A@ F)\207" [pos-list type pos ovl mmm-primary-mode beg mmm-overlays-at overlay-get mmm-mode] 5] mmm-submode-changes-in last 2 nil] 5 (#$ . 22227)]) #@176 Return a list of lists of the form (MODE . REGIONS) where REGIONS is a list of elements of the form (BEG END OVL). The disjoint union all of the REGIONS covers START to STOP. (defalias 'mmm-regions-alist #[(start stop) "\304 \"\305\306\307 \"\210\310\311\n\"*\207" [start stop alist regions mmm-regions-in nil mapc #[(region) "@A\306 \"\211\203\f\211\n AB\241)\202# \nCB B\211+\207" [region mode elem alist kv #1=#:v assoc] 4] mapcar #[(kv) "@A\237B\207" [kv] 2]] 3 (#$ . 22727)]) #@65 Fontify from START to STOP keeping track of submodes correctly. (defalias 'mmm-fontify-region #[(start stop &optional loudly) " \306\216\f\203\307\310\311 \"\210\312 \"\210\313\314\315 \"\"\210+\f\205&\307\316!\207" [mmm-current-submode mmm-current-overlay saved-ovl saved-mode loudly start #[nil "\303 \"\210\304\206 \n \"\207" [saved-mode saved-ovl mmm-primary-mode mmm-set-current-pair mmm-set-local-variables] 3] message "Fontifying %s with submode regions..." buffer-name mmm-save-changed-local-variables mapc #[(elt) "@\303N\205\304@A \n$\207" [elt start stop mmm-font-lock-mode mmm-fontify-region-list] 5] mmm-regions-alist nil stop] 5 (#$ . 23230)]) #@111 Fontify REGIONS, each like (BEG END), in mode MODE. START and STOP are the boundaries of the area to fontify. (defalias 'mmm-fontify-region-list #[(mode regions start stop) "\212\304N\305\306\307 \"+\207" [mode font-lock-extend-region-functions func regions mmm-fontify-region-function nil mapc #[(reg) "\211G\306U\203 \211A\242\202\307\310\311 GD\" \211A\242 \242\nb\210\312 \f\"\210\313 =?\2054 \"\210\214\314\315\211\f\203Q >\204Q\n }\210\n] ^\315#\210,\316\",\207" [reg #1=#:--cl-rest-- beg end ovl mode 3 signal wrong-number-of-arguments (beg end ovl) mmm-set-current-pair mmm-set-local-variables t nil mmm-save-changed-local-variables mmm-previous-submode mmm-current-overlay syntax-ppss-cache syntax-ppss-last font-lock-dont-widen mmm-c-derived-modes func start stop mmm-current-submode] 5]] 3 (#$ . 23912)]) #@185 List of functions to call after applying `syntax-table' text properties to a submode region. It is passed four arguments: the region overlay, the submode and the bounds of the region. (defvar mmm-after-syntax-propertize-functions nil (#$ . 24774)) #@191 Composite function that applies `syntax-table' text properties. It iterates over all submode regions between START and STOP and calls each respective submode's `syntax-propertize-function'. (defalias 'mmm-syntax-propertize-function #[(start stop) " \306 \"\210\307\216\310\311\312\f \"\"+\207" [mmm-current-submode mmm-current-overlay saved-ovl saved-mode start stop mmm-save-changed-local-variables #[nil "\303 \"\210\304\206 \n \"\207" [saved-mode saved-ovl mmm-primary-mode mmm-set-current-pair mmm-set-local-variables] 3] mapc #[(elt) "@\211\306NA@\3078\3108\311\211 b\210\312 \"\210\313 \"\210\214\2037\314!\315!}\210\n\203C\n \f\"\210\202Q\203Q\311\316 \f\"\210)\317\320 \f%.\207" [elt mode func beg end ovl mmm-syntax-propertize-function 2 3 nil mmm-set-current-pair mmm-set-local-variables overlay-start overlay-end font-lock-fontify-syntactic-keywords-region run-hook-with-args mmm-after-syntax-propertize-functions syntax-ppss-cache syntax-ppss-last mmm-current-overlay font-lock-syntactic-keywords syntax-propertize-function] 7] mmm-regions-in] 5 (#$ . 25029)]) #@233 The function to call to indent a line. This will be the value of `indent-line-function' for the whole buffer. It's supposed to delegate to the appropriate submode's indentation function. See `mmm-indent-line' as the starting point. (defvar mmm-indent-line-function 'mmm-indent-line (#$ . 26150)) #@219 An indent function which works on some modes where `mmm-indent-line' doesn't. Works like `mmm-indent-line', but narrows the buffer before indenting to appease modes which rely on constructs like (point-min) to indent. (defalias 'mmm-indent-line-narrowed #[nil "\212\304 \210\305 \210\203\306!`V\203 \202\n\307N\203.\214\310!\306!}\210 )\2020 *\207" [mmm-current-overlay mmm-current-submode mmm-primary-mode indent-function back-to-indentation mmm-update-submode-region overlay-end mmm-indent-line-function overlay-start] 3 (#$ . 26453) nil]) (defalias 'mmm-indent-line #[nil "\212\303 \210\304 \210\203\305!`V\203 \202\n\306N) \207" [mmm-current-overlay mmm-current-submode mmm-primary-mode back-to-indentation mmm-update-submode-region overlay-end mmm-indent-line-function] 2 nil nil]) (provide 'mmm-region)