From 4261e5b75949865ed7a1ebd9cdab335556139283 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Fri, 14 May 2021 09:36:31 +0100 Subject: [PATCH 01/10] magit integration --- src/el/sayid-magit.el | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/el/sayid-magit.el diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el new file mode 100644 index 0000000..c5e7580 --- /dev/null +++ b/src/el/sayid-magit.el @@ -0,0 +1,46 @@ +;;; sayid-magit.el --- Choose sayid tracing from magit -*- lexical-binding: t -*- + +;; Author: Mark Dawson +;; Maintainer: Bill Piel +;; Version: 0.0.1 +;; URL: https://github.com/clojure-emacs/sayid +;; Package-Requires: ((cider "0.21.0")) + +;; Licensed under the Apache License, Version 2.0 (the "License"); +;; you may not use this file except in compliance with the License. +;; You may obtain a copy of the License at + +;; http://www.apache.org/licenses/LICENSE-2.0 + +;; Unless required by applicable law or agreed to in writing, software +;; distributed under the License is distributed on an "AS IS" BASIS, +;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;; See the License for the specific language governing permissions and +;; limitations under the License. + +;;; Commentary: + +;;; Code: + +;;;###autoload +(defun sayid-magit--trace-ns-in-files (file-names) + "Trace namespace in FILE-NAMES." + (mapcar (lambda (file-name) + (with-current-buffer (find-file-noselect + (expand-file-name file-name)) + (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" + "file" (buffer-file-name)) + (cider-current-connection)))) + file-names) + (sayid-show-traced)) + +;;;###autoload +(defun sayid-magit-trace-changed-ns () + "Trace the changed namespaces in a git commit." + (interactive) + (sayid--trace-ns-in-files + (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD")))) + +(provide 'sayid-magit) + +;;; sayid-magit.el ends here From e7b2dfeff7b991e8dd2b24a26a030f931a73baa6 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Fri, 14 May 2021 10:40:34 +0100 Subject: [PATCH 02/10] Fix for relative paths of magit files Resolve changed files from git with absolute paths, to pass to file tracing function. --- src/el/sayid-magit.el | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index c5e7580..cc632e9 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -27,19 +27,25 @@ "Trace namespace in FILE-NAMES." (mapcar (lambda (file-name) (with-current-buffer (find-file-noselect - (expand-file-name file-name)) + file-name) (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" "file" (buffer-file-name)) (cider-current-connection)))) file-names) (sayid-show-traced)) +(defun sayid-magit--changed-files () + "docstring" + (mapcar + (lambda (file) + (expand-file-name file (locate-dominating-file (buffer-file-name) ".git"))) + (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD")))) + ;;;###autoload (defun sayid-magit-trace-changed-ns () "Trace the changed namespaces in a git commit." (interactive) - (sayid--trace-ns-in-files - (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD")))) + (sayid--trace-ns-in-files (sayid-magit--changed-files))) (provide 'sayid-magit) From 6d7e056b383c72e41326ea1c1ee53d87d4c55c5e Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Fri, 14 May 2021 10:43:34 +0100 Subject: [PATCH 03/10] add autoload --- src/el/sayid-magit.el | 1 + 1 file changed, 1 insertion(+) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index cc632e9..e3659bd 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -34,6 +34,7 @@ file-names) (sayid-show-traced)) +;;;###autoload (defun sayid-magit--changed-files () "docstring" (mapcar From 6c6a93680e3c4d8c8db7653613d4104812092a0a Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Mon, 17 May 2021 00:33:16 +0100 Subject: [PATCH 04/10] fix typo --- src/el/sayid-magit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index e3659bd..6d01f6e 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -46,7 +46,7 @@ (defun sayid-magit-trace-changed-ns () "Trace the changed namespaces in a git commit." (interactive) - (sayid--trace-ns-in-files (sayid-magit--changed-files))) + (sayid-magit--trace-ns-in-files (sayid-magit--changed-files))) (provide 'sayid-magit) From d876b1527a8ff94d6091c0eeb1e9bda0d6c62b3a Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Mon, 17 May 2021 00:33:49 +0100 Subject: [PATCH 05/10] add the version of magit I've tested against as dependency. --- src/el/sayid-magit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index 6d01f6e..1c936b9 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -4,7 +4,7 @@ ;; Maintainer: Bill Piel ;; Version: 0.0.1 ;; URL: https://github.com/clojure-emacs/sayid -;; Package-Requires: ((cider "0.21.0")) +;; Package-Requires: ((cider "0.21.0") (magit "2.90.1")) ;; Licensed under the Apache License, Version 2.0 (the "License"); ;; you may not use this file except in compliance with the License. From a18681ec37c651e71b920fb0fafefd05c1c8df61 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Mon, 17 May 2021 13:46:53 +0100 Subject: [PATCH 06/10] use mapc rather than mapcar --- src/el/sayid-magit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index 1c936b9..b22a060 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -25,7 +25,7 @@ ;;;###autoload (defun sayid-magit--trace-ns-in-files (file-names) "Trace namespace in FILE-NAMES." - (mapcar (lambda (file-name) + (mapc (lambda (file-name) (with-current-buffer (find-file-noselect file-name) (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" From 6a6209fea3c5b50917890f489eb1e26256dd5549 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Mon, 17 May 2021 13:47:05 +0100 Subject: [PATCH 07/10] add docstring to magit changed files --- src/el/sayid-magit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index b22a060..25d5667 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -36,7 +36,7 @@ ;;;###autoload (defun sayid-magit--changed-files () - "docstring" + "Return the absolute paths to changed files in the current .git directory." (mapcar (lambda (file) (expand-file-name file (locate-dominating-file (buffer-file-name) ".git"))) From a350aa83d56bb86fdfb87f7a5ba0da2eb6d82a53 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 11:58:03 +0100 Subject: [PATCH 08/10] fix for commits which contain files that aren't clojure files --- src/el/sayid-magit.el | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index 25d5667..a70c2a9 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -26,27 +26,31 @@ (defun sayid-magit--trace-ns-in-files (file-names) "Trace namespace in FILE-NAMES." (mapc (lambda (file-name) - (with-current-buffer (find-file-noselect - file-name) - (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" - "file" (buffer-file-name)) - (cider-current-connection)))) - file-names) + (with-current-buffer (find-file-noselect + file-name) + (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" + "file" (buffer-file-name)) + (cider-current-connection)))) + file-names) (sayid-show-traced)) ;;;###autoload (defun sayid-magit--changed-files () - "Return the absolute paths to changed files in the current .git directory." - (mapcar - (lambda (file) - (expand-file-name file (locate-dominating-file (buffer-file-name) ".git"))) - (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD")))) + "Return the absolute paths to changed files which have a .clj \ +extension in the current .git directory." + (seq-filter + (apply-partially #'string-match ".clj$") + (mapcar + (lambda (file) + (expand-file-name file (locate-dominating-file file ".git"))) + (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD"))))) ;;;###autoload (defun sayid-magit-trace-changed-ns () "Trace the changed namespaces in a git commit." (interactive) - (sayid-magit--trace-ns-in-files (sayid-magit--changed-files))) + (sayid-magit--trace-ns-in-files + (sayid-magit--changed-files))) (provide 'sayid-magit) From 17c6a850c9be16cff6daabe5de6fb47ef46b1639 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 12:01:40 +0100 Subject: [PATCH 09/10] Allow passing revision/commit into interactive function --- src/el/sayid-magit.el | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index a70c2a9..8a3f24e 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -35,22 +35,22 @@ (sayid-show-traced)) ;;;###autoload -(defun sayid-magit--changed-files () +(defun sayid-magit--changed-files (git-revision) "Return the absolute paths to changed files which have a .clj \ -extension in the current .git directory." +extension in the current .git directory since GIT-REVISION." (seq-filter (apply-partially #'string-match ".clj$") (mapcar (lambda (file) (expand-file-name file (locate-dominating-file file ".git"))) - (magit-changed-files (magit-read-starting-point "Sayid trace" nil "HEAD"))))) + (magit-changed-files git-revision)))) ;;;###autoload -(defun sayid-magit-trace-changed-ns () - "Trace the changed namespaces in a git commit." - (interactive) +(defun sayid-magit-trace-changed-ns (git-revision) + "Trace the changed namespaces in a git commit since GIT-REVISION." + (interactive (list (magit-read-starting-point "Sayid trace" nil "HEAD"))) (sayid-magit--trace-ns-in-files - (sayid-magit--changed-files))) + (sayid-magit--changed-files git-revision))) (provide 'sayid-magit) From db30a1522992be9324a46c0a409935438df1e407 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 14:32:23 +0100 Subject: [PATCH 10/10] no need to current buffer, just pass the variable directly --- src/el/sayid-magit.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/el/sayid-magit.el b/src/el/sayid-magit.el index 8a3f24e..2565683 100644 --- a/src/el/sayid-magit.el +++ b/src/el/sayid-magit.el @@ -26,11 +26,9 @@ (defun sayid-magit--trace-ns-in-files (file-names) "Trace namespace in FILE-NAMES." (mapc (lambda (file-name) - (with-current-buffer (find-file-noselect - file-name) - (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" - "file" (buffer-file-name)) - (cider-current-connection)))) + (nrepl-send-sync-request (list "op" "sayid-trace-ns-in-file" + "file" file-name) + (cider-current-connection))) file-names) (sayid-show-traced))