From d5c332d4bee9db34ae2533c121b8b42eb1c110f8 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Thu, 6 May 2021 08:49:16 +0100 Subject: [PATCH 01/11] Extract file and line at point into functions --- src/el/sayid.el | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/el/sayid.el b/src/el/sayid.el index 9806c92..3778115 100644 --- a/src/el/sayid.el +++ b/src/el/sayid.el @@ -718,19 +718,30 @@ Disable traces, load buffer, enable traces, clear log." (setq paths (cdr paths))) (car paths)))) -;;;###autoload -(defun sayid-buffer-nav-from-point () - "Navigate from sayid buffer to function source." +(defun sayid-buffer-file-at-point () + "Return file path for function at point in sayid buffer." (interactive) (let* ((file (get-text-property (point) 'src-file)) - (line (get-text-property (point) 'src-line)) (xfile (sayid-find-existing-file file))) (if xfile - (progn - (pop-to-buffer (find-file-noselect xfile)) - (goto-char (point-min)) - (forward-line (- line 1))) - (message (concat "File not found: " file))))) + xfile + (user-error (concat "File not found: " file))))) + +(defun sayid-buffer-line-at-point () + "Return line number for function at point in sayid buffer." + (get-text-property (point) 'src-line)) + +;;;###autoload +(defun sayid-buffer-nav-from-point () + "Navigate from sayid buffer to function source." + (interactive) + (let ((line (sayid-buffer-line-at-point)) + (file (sayid-buffer-file-at-point))) + (when file + (progn + (pop-to-buffer (find-file-noselect file)) + (goto-char (point-min)) + (forward-line (- line 1)))))) ;;;###autoload (defun sayid-buffer-nav-to-prev () From 4261e5b75949865ed7a1ebd9cdab335556139283 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Fri, 14 May 2021 09:36:31 +0100 Subject: [PATCH 02/11] 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 03/11] 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 04/11] 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 05/11] 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 06/11] 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 07/11] 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 08/11] 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 4c3161182797f269f5f259be252d1e90a2f9eeda Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 08:13:22 +0100 Subject: [PATCH 09/11] sayid-trace-ns-by-pattern accepts interactive argument --- src/el/sayid.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/el/sayid.el b/src/el/sayid.el index 9806c92..68044cc 100644 --- a/src/el/sayid.el +++ b/src/el/sayid.el @@ -564,12 +564,13 @@ Disable traces, load buffer, enable traces, clear log." (sayid-show-traced)) ;;;###autoload -(defun sayid-trace-ns-by-pattern () +(defun sayid-trace-ns-by-pattern (ns-pattern) "Trace all namespaces that match specified pattern." - (interactive) + (interactive (list + (read-string "Namespace to trace (*=wildcard) " + (cider-current-ns)))) (nrepl-send-sync-request (list "op" "sayid-trace-ns-by-pattern" - "ns-pattern" (read-string "Namespace to trace (*=wildcard) " - (cider-current-ns)) + "ns-pattern" ns-pattern "ref-ns" (cider-current-ns)) (cider-current-connection)) (sayid-show-traced)) From 78d12cd170297f12a1f82af482c7aff985aa935c Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 11:18:24 +0100 Subject: [PATCH 10/11] fix to generate expression error --- src/el/sayid.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/el/sayid.el b/src/el/sayid.el index 9806c92..56570dc 100644 --- a/src/el/sayid.el +++ b/src/el/sayid.el @@ -870,8 +870,8 @@ Disable traces, load buffer, enable traces, clear log." "Try to generate an expression that will reproduce traced call. Place expression in kill ring." (interactive) - (let ((expr (sayid-req-get-value (list "op" "sayid-gen-instance-expr" - "trace-id" (get-text-property (point) 'id))))) + (let ((expr (prin1-to-string (sayid-req-get-value (list "op" "sayid-gen-instance-expr" + "trace-id" (get-text-property (point) 'id)))))) (kill-new expr) (message (concat "Written to kill ring: " expr)) (sayid-buffer-nav-from-point))) From 870cd1fc2a59acd383848ea3707e6fd531574770 Mon Sep 17 00:00:00 2001 From: Mark Dawson Date: Wed, 19 May 2021 11:58:03 +0100 Subject: [PATCH 11/11] 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)