emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/objed aca0c7a 133/166: Add error object


From: Clemens Radermacher
Subject: [elpa] externals/objed aca0c7a 133/166: Add error object
Date: Sun, 29 Dec 2019 08:21:14 -0500 (EST)

branch: externals/objed
commit aca0c7a7677f6ff7987d917212139de32b115f94
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>

    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)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]