branch: externals/objed commit aca0c7a7677f6ff7987d917212139de32b115f94 Author: Clemens Radermacher <clem...@posteo.net> Commit: Clemens Radermacher <clem...@posteo.net>
Add error object --- objed-objects.el | 45 +++++++++++++++++++++++++++++++++++++++++++++ objed.el | 1 + 2 files changed, 46 insertions(+) diff --git a/objed-objects.el b/objed-objects.el index 8e4a9b0..5200488 100644 --- a/objed-objects.el +++ b/objed-objects.el @@ -2576,6 +2576,51 @@ non-nil the indentation block can contain empty lines." (objed--what-face))) (forward-char -1))) +(defvar flycheck-mode) +(defvar flymake-mode) +(declare-function flycheck-overlays-at "ext:flycheck") +(declare-function flycheck-next-error "ext:flycheck") +(declare-function flycheck-previous-error "ext:flycheck") +(declare-function flymake--overlays "ext:flymake") +(declare-function flymake-goto-next-error "ext:flymake") +(declare-function flymake-goto-prev-error "ext:flymake") +(defun objed--get-error-bounds () + "Return linter error at point." + (cond ((bound-and-true-p flycheck-mode) + (let ((ov (car (flycheck-overlays-at (point))))) + (when ov + (cons (overlay-start ov) + (overlay-end ov))))) + (flymake-mode + (let ((ov (car (flymake--overlays :beg (point))))) + (when ov + (cons (overlay-start ov) + (overlay-end ov))))))) + +(defun objed--next-error () + "Goto next linter error." + (cond ((bound-and-true-p flycheck-mode) + (flycheck-next-error)) + (flymake-mode + (flymake-goto-next-error)))) + +(defun objed--previous-error () + "Goto previous linter error." + (cond (flycheck-mode + (flycheck-previous-error)) + (flymake-mode + (flymake-goto-prev-error)))) + + +(objed-define-object nil error + :get-obj + (objed--get-error-bounds) + ;; TODO: search for next same face as current... + :try-next + (objed--next-error) + :try-prev + (objed--previous-error)) + (declare-function org-mark-element "ext:org") diff --git a/objed.el b/objed.el index c7bb3a8..d0e982b 100644 --- a/objed.el +++ b/objed.el @@ -986,6 +986,7 @@ To define new operations see `objed-define-op'.") (define-key map "d" 'objed-defun-object) (define-key map "s" 'objed-string-object) (define-key map ";" 'objed-comment-object) + (define-key map "e" 'objed-error-object) (define-key map "=" 'objed-face-object) (define-key map "%" 'objed-contents-object)