branch: externals/objed commit c07df28b6d75c44ac2fce070d6b68bfe52c03c8f Author: Clemens Radermacher <clem...@posteo.net> Commit: Clemens Radermacher <clem...@posteo.net>
Rewrite align section getter function --- objed-objects.el | 35 ++++++++++++++++++---------- test/tests/emacs-lisp-mode/expansion/block_2 | 2 +- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/objed-objects.el b/objed-objects.el index 683e52c..0a02ad2 100644 --- a/objed-objects.el +++ b/objed-objects.el @@ -1554,19 +1554,30 @@ comments." (nth 4 sp)) begin))) - -(defun objed--get-align-section () - "Get region bounds of current align section." +(defvar align-region-separate) +(defvar align-mode-rules-list) +(defvar align-rules-list) +(defvar align-exclude-rules-list) +(defvar align-mode-exclude-rules-list) +(declare-function align-region "ext:align") +(defun objed--get-align-sections () + "Get region bounds of align sections." (require 'align) - (let ((olddef (symbol-function 'align-region))) - (cl-letf (((symbol-function 'align-region) - (lambda (beg end &rest args) - (if (and beg end) - (throw 'region (cons beg end)) - (apply olddef beg end - args))))) - (catch 'region - (align nil nil))))) + (let ((separator + (or (if (and (symbolp align-region-separate) + (boundp align-region-separate)) + (symbol-value align-region-separate) + align-region-separate) + 'entire)) + (regions ())) + (align-region nil nil separator + (or align-mode-rules-list align-rules-list) + (or align-mode-exclude-rules-list align-exclude-rules-list) + (lambda (beg end mode) + (when (consp mode) + (push (cons beg end) + regions)))) + regions)) ;; * Object definitions diff --git a/test/tests/emacs-lisp-mode/expansion/block_2 b/test/tests/emacs-lisp-mode/expansion/block_2 index accd044..48cb69b 100644 --- a/test/tests/emacs-lisp-mode/expansion/block_2 +++ b/test/tests/emacs-lisp-mode/expansion/block_2 @@ -17,6 +17,6 @@ h ;; More on same level ;; Some text -<;; and |more text +|<;; and more text >