diff options
-rw-r--r-- | src/elisp/urweb-mode.el | 14 | ||||
-rw-r--r-- | src/elisp/urweb-move.el | 14 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/elisp/urweb-mode.el b/src/elisp/urweb-mode.el index f8dbc0e3..8c016e3d 100644 --- a/src/elisp/urweb-mode.el +++ b/src/elisp/urweb-mode.el @@ -503,14 +503,18 @@ If anyone has a good algorithm for this..." (urweb-seek-back) (beginning-of-line) (while (and (not done) (search-forward "<" start-pos t)) - (if (looking-at "/") - (if (search-forward ">" start-pos t) + (cond + ((or (looking-at " ") (looking-at "=")) + nil) + ((looking-at "/") + (if (re-search-forward "[^\\sw]>" start-pos t) (when (> depth 0) (decf depth)) - (setq done t)) - (if (search-forward ">" start-pos t) + (setq done t))) + (t + (if (re-search-forward "[^\\sw]>" start-pos t) (if (not (save-excursion (backward-char 2) (looking-at "/"))) (incf depth)) - (setq done t)))) + (setq done t))))) (and (not done) (> depth 0))))) (defun urweb-tag-matching-indent () diff --git a/src/elisp/urweb-move.el b/src/elisp/urweb-move.el index 5e4e6824..55c6bce6 100644 --- a/src/elisp/urweb-move.el +++ b/src/elisp/urweb-move.el @@ -240,16 +240,20 @@ This assumes that we are `looking-at' the OP." (let ((depth 0) (done nil)) (while (and (not done) (search-backward ">" nil t)) - (if (save-excursion (backward-char 1) (looking-at "/")) - (when (not (search-backward "<" nil t)) - (setq done t)) - (if (search-backward "<" nil t) + (cond + ((save-excursion (backward-char 1) (looking-at " ")) + nil) + ((save-excursion (backward-char 1) (looking-at "/")) + (when (not (re-search-backward "<[^ =]" nil t)) + (setq done t))) + (t + (if (re-search-backward "<[^ =]" nil t) (if (looking-at "</") (incf depth) (if (= depth 0) (setq done t) (decf depth))) - (setq done t)))))) + (setq done t))))))) (defun urweb-backward-sexp (prec) "Move one sexp backward if possible, or one char else. |