branch: master
commit 93cd2cfc15a3cc5eae3b25cd92f08a9f6dc361a5
Author: Adam <[email protected]>
Commit: Adam <[email protected]>

    Add function for narrowed indentation
    
    Sometimes, modes rely on functions like (point-min) or overstep their region
    when attempting to indent a line. This can cause issues like
    https://github.com/AdamNiederer/vue-mode/issues/50
    
    This function narrows the buffer before indenting, preventing any issues 
which
    might arise from reliance on having one's own buffer.
    
    This doesn't change any defaults, but I figured some other mmm-mode 
derivatives
    could make use of this function.
---
 mmm-region.el | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/mmm-region.el b/mmm-region.el
index 6567b31..5b6bec1 100644
--- a/mmm-region.el
+++ b/mmm-region.el
@@ -871,6 +871,18 @@ 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.")
 
+(defun mmm-indent-line-narrowed ()
+  "An indent function which works on modes which don't play well with mmm-mode.
+Calls `mmm-indent-line' internally, but narrows the buffer before indenting to
+appease modes which rely on constructs like (point-min) to indent."
+  (interactive)
+  (if mmm-current-overlay
+      (save-restriction
+        (narrow-to-region (overlay-start mmm-current-overlay)
+                          (overlay-end mmm-current-overlay))
+        (mmm-indent-line))
+    (mmm-indent-line)))
+
 (defun mmm-indent-line ()
   (interactive)
   (funcall

Reply via email to