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

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

[elpa] externals/org ed53355 2/2: lint: Reorder file


From: ELPA Syncer
Subject: [elpa] externals/org ed53355 2/2: lint: Reorder file
Date: Wed, 1 Dec 2021 10:57:23 -0500 (EST)

branch: externals/org
commit ed5335545e03bdc4e1d3dad84c7b9b0e91117ef2
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    lint: Reorder file
    
    Checkers definition are last because this is the part usually expanded.
---
 lisp/org-lint.el | 376 +++++++++++++++++++++++++++----------------------------
 1 file changed, 188 insertions(+), 188 deletions(-)

diff --git a/lisp/org-lint.el b/lisp/org-lint.el
index 6e03cec..dd0759b 100644
--- a/lisp/org-lint.el
+++ b/lisp/org-lint.el
@@ -154,6 +154,194 @@ checker.  Currently, two properties are supported:
                           org-lint--checkers))))
 
 
+;;; Reports UI
+
+(defvar org-lint--report-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map tabulated-list-mode-map)
+    (define-key map (kbd "RET") 'org-lint--jump-to-source)
+    (define-key map (kbd "TAB") 'org-lint--show-source)
+    (define-key map (kbd "C-j") 'org-lint--show-source)
+    (define-key map (kbd "h") 'org-lint--hide-checker)
+    (define-key map (kbd "i") 'org-lint--ignore-checker)
+    map)
+  "Local keymap for `org-lint--report-mode' buffers.")
+
+(define-derived-mode org-lint--report-mode tabulated-list-mode "OrgLint"
+  "Major mode used to display reports emitted during linting.
+\\{org-lint--report-mode-map}"
+  (setf tabulated-list-format
+       `[("Line" 6
+          (lambda (a b)
+            (< (string-to-number (aref (cadr a) 0))
+               (string-to-number (aref (cadr b) 0))))
+          :right-align t)
+         ("Trust" 5 t)
+         ("Warning" 0 t)])
+  (tabulated-list-init-header))
+
+(defun org-lint--generate-reports (buffer checkers)
+  "Generate linting report for BUFFER.
+
+CHECKERS is the list of checkers used.
+
+Return an alist (ID [LINE TRUST DESCRIPTION CHECKER]), suitable
+for `tabulated-list-printer'."
+  (with-current-buffer buffer
+    (save-excursion
+      (goto-char (point-min))
+      (let ((ast (org-element-parse-buffer))
+           (id 0)
+           (last-line 1)
+           (last-pos 1))
+       ;; Insert unique ID for each report.  Replace buffer positions
+       ;; with line numbers.
+       (mapcar
+        (lambda (report)
+          (list
+           (cl-incf id)
+           (apply #'vector
+                  (cons
+                   (progn
+                     (goto-char (car report))
+                     (beginning-of-line)
+                     (prog1 (number-to-string
+                             (cl-incf last-line
+                                      (count-lines last-pos (point))))
+                       (setf last-pos (point))))
+                   (cdr report)))))
+        ;; Insert trust level in generated reports.  Also sort them
+        ;; by buffer position in order to optimize lines computation.
+        (sort (cl-mapcan
+               (lambda (c)
+                 (let ((trust (symbol-name (org-lint-checker-trust c))))
+                   (mapcar
+                    (lambda (report)
+                      (list (car report) trust (nth 1 report) c))
+                    (save-excursion
+                      (funcall (org-lint-checker-function c)
+                               ast)))))
+               checkers)
+              #'car-less-than-car))))))
+
+(defvar-local org-lint--source-buffer nil
+  "Source buffer associated to current report buffer.")
+
+(defvar-local org-lint--local-checkers nil
+  "List of checkers used to build current report.")
+
+(defun org-lint--refresh-reports ()
+  (setq tabulated-list-entries
+       (org-lint--generate-reports org-lint--source-buffer
+                                   org-lint--local-checkers))
+  (tabulated-list-print))
+
+(defun org-lint--current-line ()
+  "Return current report line, as a number."
+  (string-to-number (aref (tabulated-list-get-entry) 0)))
+
+(defun org-lint--current-checker (&optional entry)
+  "Return current report checker.
+When optional argument ENTRY is non-nil, use this entry instead
+of current one."
+  (aref (if entry (nth 1 entry) (tabulated-list-get-entry)) 3))
+
+(defun org-lint--display-reports (source checkers)
+  "Display linting reports for buffer SOURCE.
+CHECKERS is the list of checkers used."
+  (let ((buffer (get-buffer-create "*Org Lint*")))
+    (with-current-buffer buffer
+      (org-lint--report-mode)
+      (setf org-lint--source-buffer source)
+      (setf org-lint--local-checkers checkers)
+      (org-lint--refresh-reports)
+      (add-hook 'tabulated-list-revert-hook #'org-lint--refresh-reports nil t))
+    (pop-to-buffer buffer)))
+
+(defun org-lint--jump-to-source ()
+  "Move to source line that generated the report at point."
+  (interactive)
+  (let ((l (org-lint--current-line)))
+    (switch-to-buffer-other-window org-lint--source-buffer)
+    (org-goto-line l)
+    (org-show-set-visibility 'local)
+    (recenter)))
+
+(defun org-lint--show-source ()
+  "Show source line that generated the report at point."
+  (interactive)
+  (let ((buffer (current-buffer)))
+    (org-lint--jump-to-source)
+    (switch-to-buffer-other-window buffer)))
+
+(defun org-lint--hide-checker ()
+  "Hide all reports from checker that generated the report at point."
+  (interactive)
+  (let ((c (org-lint--current-checker)))
+    (setf tabulated-list-entries
+         (cl-remove-if (lambda (e) (equal c (org-lint--current-checker e)))
+                       tabulated-list-entries))
+    (tabulated-list-print)))
+
+(defun org-lint--ignore-checker ()
+  "Ignore all reports from checker that generated the report at point.
+Checker will also be ignored in all subsequent reports."
+  (interactive)
+  (setf org-lint--local-checkers
+       (remove (org-lint--current-checker) org-lint--local-checkers))
+  (org-lint--hide-checker))
+
+
+;;; Main function
+
+;;;###autoload
+(defun org-lint (&optional arg)
+  "Check current Org buffer for syntax mistakes.
+
+By default, run all checkers.  With a `\\[universal-argument]' prefix ARG, \
+select one
+category of checkers only.  With a `\\[universal-argument] \
+\\[universal-argument]' prefix, run one precise
+checker by its name.
+
+ARG can also be a list of checker names, as symbols, to run."
+  (interactive "P")
+  (unless (derived-mode-p 'org-mode) (user-error "Not in an Org buffer"))
+  (when (called-interactively-p 'any)
+    (message "Org linting process starting..."))
+  (let ((checkers
+        (pcase arg
+          (`nil org-lint--checkers)
+          (`(4)
+           (let ((category
+                  (completing-read
+                   "Checker category: "
+                   (mapcar #'org-lint-checker-categories org-lint--checkers)
+                   nil t)))
+             (cl-remove-if-not
+              (lambda (c)
+                (assoc-string (org-lint-checker-categories c) category))
+              org-lint--checkers)))
+          (`(16)
+           (list
+            (let ((name (completing-read
+                         "Checker name: "
+                         (mapcar #'org-lint-checker-name org-lint--checkers)
+                         nil t)))
+              (catch 'exit
+                (dolist (c org-lint--checkers)
+                  (when (string= (org-lint-checker-name c) name)
+                    (throw 'exit c)))))))
+          ((pred consp)
+           (cl-remove-if-not (lambda (c) (memq (org-lint-checker-name c) arg))
+                             org-lint--checkers))
+          (_ (user-error "Invalid argument `%S' for `org-lint'" arg)))))
+    (if (not (called-interactively-p 'any))
+       (org-lint--generate-reports (current-buffer) checkers)
+      (org-lint--display-reports (current-buffer) checkers)
+      (message "Org linting process completed"))))
+
+
 ;;; Checker functions
 
 (defun org-lint--collect-duplicates
@@ -1251,194 +1439,6 @@ Use \"export %s\" instead"
   #'org-lint-incomplete-citation
   :categories '(cite) :trust 'low)
 
-
-;;; Reports UI
-
-(defvar org-lint--report-mode-map
-  (let ((map (make-sparse-keymap)))
-    (set-keymap-parent map tabulated-list-mode-map)
-    (define-key map (kbd "RET") 'org-lint--jump-to-source)
-    (define-key map (kbd "TAB") 'org-lint--show-source)
-    (define-key map (kbd "C-j") 'org-lint--show-source)
-    (define-key map (kbd "h") 'org-lint--hide-checker)
-    (define-key map (kbd "i") 'org-lint--ignore-checker)
-    map)
-  "Local keymap for `org-lint--report-mode' buffers.")
-
-(define-derived-mode org-lint--report-mode tabulated-list-mode "OrgLint"
-  "Major mode used to display reports emitted during linting.
-\\{org-lint--report-mode-map}"
-  (setf tabulated-list-format
-       `[("Line" 6
-          (lambda (a b)
-            (< (string-to-number (aref (cadr a) 0))
-               (string-to-number (aref (cadr b) 0))))
-          :right-align t)
-         ("Trust" 5 t)
-         ("Warning" 0 t)])
-  (tabulated-list-init-header))
-
-(defun org-lint--generate-reports (buffer checkers)
-  "Generate linting report for BUFFER.
-
-CHECKERS is the list of checkers used.
-
-Return an alist (ID [LINE TRUST DESCRIPTION CHECKER]), suitable
-for `tabulated-list-printer'."
-  (with-current-buffer buffer
-    (save-excursion
-      (goto-char (point-min))
-      (let ((ast (org-element-parse-buffer))
-           (id 0)
-           (last-line 1)
-           (last-pos 1))
-       ;; Insert unique ID for each report.  Replace buffer positions
-       ;; with line numbers.
-       (mapcar
-        (lambda (report)
-          (list
-           (cl-incf id)
-           (apply #'vector
-                  (cons
-                   (progn
-                     (goto-char (car report))
-                     (beginning-of-line)
-                     (prog1 (number-to-string
-                             (cl-incf last-line
-                                      (count-lines last-pos (point))))
-                       (setf last-pos (point))))
-                   (cdr report)))))
-        ;; Insert trust level in generated reports.  Also sort them
-        ;; by buffer position in order to optimize lines computation.
-        (sort (cl-mapcan
-               (lambda (c)
-                 (let ((trust (symbol-name (org-lint-checker-trust c))))
-                   (mapcar
-                    (lambda (report)
-                      (list (car report) trust (nth 1 report) c))
-                    (save-excursion
-                      (funcall (org-lint-checker-function c)
-                               ast)))))
-               checkers)
-              #'car-less-than-car))))))
-
-(defvar-local org-lint--source-buffer nil
-  "Source buffer associated to current report buffer.")
-
-(defvar-local org-lint--local-checkers nil
-  "List of checkers used to build current report.")
-
-(defun org-lint--refresh-reports ()
-  (setq tabulated-list-entries
-       (org-lint--generate-reports org-lint--source-buffer
-                                   org-lint--local-checkers))
-  (tabulated-list-print))
-
-(defun org-lint--current-line ()
-  "Return current report line, as a number."
-  (string-to-number (aref (tabulated-list-get-entry) 0)))
-
-(defun org-lint--current-checker (&optional entry)
-  "Return current report checker.
-When optional argument ENTRY is non-nil, use this entry instead
-of current one."
-  (aref (if entry (nth 1 entry) (tabulated-list-get-entry)) 3))
-
-(defun org-lint--display-reports (source checkers)
-  "Display linting reports for buffer SOURCE.
-CHECKERS is the list of checkers used."
-  (let ((buffer (get-buffer-create "*Org Lint*")))
-    (with-current-buffer buffer
-      (org-lint--report-mode)
-      (setf org-lint--source-buffer source)
-      (setf org-lint--local-checkers checkers)
-      (org-lint--refresh-reports)
-      (add-hook 'tabulated-list-revert-hook #'org-lint--refresh-reports nil t))
-    (pop-to-buffer buffer)))
-
-(defun org-lint--jump-to-source ()
-  "Move to source line that generated the report at point."
-  (interactive)
-  (let ((l (org-lint--current-line)))
-    (switch-to-buffer-other-window org-lint--source-buffer)
-    (org-goto-line l)
-    (org-show-set-visibility 'local)
-    (recenter)))
-
-(defun org-lint--show-source ()
-  "Show source line that generated the report at point."
-  (interactive)
-  (let ((buffer (current-buffer)))
-    (org-lint--jump-to-source)
-    (switch-to-buffer-other-window buffer)))
-
-(defun org-lint--hide-checker ()
-  "Hide all reports from checker that generated the report at point."
-  (interactive)
-  (let ((c (org-lint--current-checker)))
-    (setf tabulated-list-entries
-         (cl-remove-if (lambda (e) (equal c (org-lint--current-checker e)))
-                       tabulated-list-entries))
-    (tabulated-list-print)))
-
-(defun org-lint--ignore-checker ()
-  "Ignore all reports from checker that generated the report at point.
-Checker will also be ignored in all subsequent reports."
-  (interactive)
-  (setf org-lint--local-checkers
-       (remove (org-lint--current-checker) org-lint--local-checkers))
-  (org-lint--hide-checker))
-
-
-;;; Public function
-
-;;;###autoload
-(defun org-lint (&optional arg)
-  "Check current Org buffer for syntax mistakes.
-
-By default, run all checkers.  With a `\\[universal-argument]' prefix ARG, \
-select one
-category of checkers only.  With a `\\[universal-argument] \
-\\[universal-argument]' prefix, run one precise
-checker by its name.
-
-ARG can also be a list of checker names, as symbols, to run."
-  (interactive "P")
-  (unless (derived-mode-p 'org-mode) (user-error "Not in an Org buffer"))
-  (when (called-interactively-p 'any)
-    (message "Org linting process starting..."))
-  (let ((checkers
-        (pcase arg
-          (`nil org-lint--checkers)
-          (`(4)
-           (let ((category
-                  (completing-read
-                   "Checker category: "
-                   (mapcar #'org-lint-checker-categories org-lint--checkers)
-                   nil t)))
-             (cl-remove-if-not
-              (lambda (c)
-                (assoc-string (org-lint-checker-categories c) category))
-              org-lint--checkers)))
-          (`(16)
-           (list
-            (let ((name (completing-read
-                         "Checker name: "
-                         (mapcar #'org-lint-checker-name org-lint--checkers)
-                         nil t)))
-              (catch 'exit
-                (dolist (c org-lint--checkers)
-                  (when (string= (org-lint-checker-name c) name)
-                    (throw 'exit c)))))))
-          ((pred consp)
-           (cl-remove-if-not (lambda (c) (memq (org-lint-checker-name c) arg))
-                             org-lint--checkers))
-          (_ (user-error "Invalid argument `%S' for `org-lint'" arg)))))
-    (if (not (called-interactively-p 'any))
-       (org-lint--generate-reports (current-buffer) checkers)
-      (org-lint--display-reports (current-buffer) checkers)
-      (message "Org linting process completed"))))
-
 (provide 'org-lint)
 
 ;; Local variables:



reply via email to

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