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

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

[nongnu] elpa/rubocop a809fa7 42/64: [Fix #24] Always run RuboCop from t


From: ELPA Syncer
Subject: [nongnu] elpa/rubocop a809fa7 42/64: [Fix #24] Always run RuboCop from the project's root when within a
Date: Wed, 11 Aug 2021 10:08:01 -0400 (EDT)

branch: elpa/rubocop
commit a809fa70218155335880389ddfa4df2e1c27ca5b
Author: Bozhidar Batsov <bozhidar@batsov.com>
Commit: Bozhidar Batsov <bozhidar@batsov.com>

    [Fix #24] Always run RuboCop from the project's root when within a
    project
---
 rubocop.el | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/rubocop.el b/rubocop.el
index 160a155..f8d2549 100644
--- a/rubocop.el
+++ b/rubocop.el
@@ -70,8 +70,10 @@
         (t
          file-name)))
 
-(defun rubocop-project-root ()
-  "Retrieve the root directory of a project if available."
+(defun rubocop-project-root (&optional no-error)
+  "Retrieve the root directory of a project if available.
+
+When NO-ERROR is non-nil returns nil instead of raise an error."
   (or
    (car
     (mapcar #'expand-file-name
@@ -79,7 +81,9 @@
                   (mapcar
                    (lambda (f) (locate-dominating-file default-directory f))
                    rubocop-project-root-files))))
-   (error "You're not into a project")))
+   (if no-error
+       nil
+     (error "You're not into a project"))))
 
 (defun rubocop-buffer-name (file-or-dir)
   "Generate a name for the RuboCop buffer from FILE-OR-DIR."
@@ -97,10 +101,12 @@ Alternatively prompt user for directory."
   (let ((directory
          (or directory
              (read-directory-name "Select directory: "))))
-    (compilation-start
-     (rubocop-build-command command (rubocop-local-file-name directory))
-     'compilation-mode
-     (lambda (arg) (message arg) (rubocop-buffer-name directory)))))
+    ;; make sure we run RuboCop from a project's root if the command is 
executed within a project
+    (let ((default-directory (or (rubocop-project-root 'no-error) 
default-directory)))
+      (compilation-start
+       (rubocop-build-command command (rubocop-local-file-name directory))
+       'compilation-mode
+       (lambda (arg) (message arg) (rubocop-buffer-name directory))))))
 
 ;;;###autoload
 (defun rubocop-check-project ()
@@ -133,10 +139,12 @@ Alternatively prompt user for directory."
   (rubocop-ensure-installed)
   (let ((file-name (buffer-file-name (current-buffer))))
     (if file-name
-        (compilation-start
-         (rubocop-build-command command (rubocop-local-file-name file-name))
-         'compilation-mode
-         (lambda (_arg) (rubocop-buffer-name file-name)))
+        ;; make sure we run RuboCop from a project's root if the command is 
executed within a project
+        (let ((default-directory (or (rubocop-project-root 'no-error) 
default-directory)))
+          (compilation-start
+           (rubocop-build-command command (rubocop-local-file-name file-name))
+           'compilation-mode
+           (lambda (_arg) (rubocop-buffer-name file-name))))
       (error "Buffer is not visiting a file"))))
 
 ;;;###autoload



reply via email to

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