[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/sweeprolog f5a1f615ee 6/9: Report correct predicate indica
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/sweeprolog f5a1f615ee 6/9: Report correct predicate indicators in 'C-x 4 a' |
Date: |
Tue, 27 Jun 2023 16:03:11 -0400 (EDT) |
branch: elpa/sweeprolog
commit f5a1f615ee3804df201cfa053301e9031a88d426
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eshel Yaron <me@eshelyaron.com>
Report correct predicate indicators in 'C-x 4 a'
* sweeprolog.el (sweeprolog-add-log-current-defun): New function.
(sweeprolog-mode): Set 'add-log-current-defun-function' to it.
* sweeprolog-tests.el: Test it.
---
sweeprolog-tests.el | 22 ++++++++++++++++++++++
sweeprolog.el | 19 +++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/sweeprolog-tests.el b/sweeprolog-tests.el
index a3edf682b0..e074865e5a 100644
--- a/sweeprolog-tests.el
+++ b/sweeprolog-tests.el
@@ -1913,4 +1913,26 @@ head,
(should (string= (buffer-string)
"% ?- true; false.\n% true\u0020\nfoo."))))))
+(ert-deftest add-log-current-defun ()
+ "Tests getting the predicate indicator at point."
+ (let ((temp (make-temp-file "sweeprolog-test"
+ nil
+ "pl"
+ "
+foo(Bar) :- baz(Bar).
+foo(Bar) --> baz(Bar).
+f:o(Bar) :- baz(Bar).
+f:o(Bar) --> baz(Bar).")))
+ (find-file-literally temp)
+ (sweeprolog-mode)
+ (goto-char (point-min))
+ (forward-word)
+ (should (string= (add-log-current-defun) "foo/1"))
+ (forward-line)
+ (should (string= (add-log-current-defun) "foo//1"))
+ (forward-line)
+ (should (string= (add-log-current-defun) "f:o/1"))
+ (forward-line)
+ (should (string= (add-log-current-defun) "f:o//1"))))
+
;;; sweeprolog-tests.el ends here
diff --git a/sweeprolog.el b/sweeprolog.el
index ae2cd48036..fd13c27a36 100644
--- a/sweeprolog.el
+++ b/sweeprolog.el
@@ -4429,6 +4429,8 @@ certain contexts to maintain conventional Prolog layout."
(setq-local adaptive-fill-regexp "[ \t]*")
(setq-local fill-indent-according-to-mode t)
(setq-local comment-multi-line t)
+ (setq-local add-log-current-defun-function
+ #'sweeprolog-add-log-current-defun)
(setq-local mode-line-process
'(:eval
(when (sweeprolog-buffer-loaded-since-last-modification-p)
@@ -6595,6 +6597,23 @@ as a comment in the source buffer at starting at POINT."
(format
"`\\<sweeprolog-top-level-example-mode-map>\\[sweeprolog-top-level-example-done]'
to quit and write contents as a comment in buffer %s" (buffer-name
(marker-buffer marker)))))
(sweeprolog-top-level-example-mode)))
+(defun sweeprolog-add-log-current-defun ()
+ "Return the indicator of the predicate defined at point, or nil.
+
+This function is used as a `add-log-current-defun-function' in
+`sweeprolog-mode' buffers."
+ (when-let ((def (sweeprolog-definition-at-point)))
+ (let ((fun (nth 1 def))
+ (ari (nth 2 def))
+ (neck (nth 4 def))
+ (ind "/")
+ (mod (nth 5 def)))
+ (when (string= neck "-->")
+ (setq ari (- ari 2)
+ ind "//"))
+ (concat (when mod (concat mod ":"))
+ fun ind (number-to-string ari)))))
+
;;;; Footer
(provide 'sweeprolog)
- [nongnu] elpa/sweeprolog updated (1e718510d6 -> 0e05fa9545), ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog 0e05fa9545 9/9: Bump version to 0.21.0, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog 1bb64b391c 2/9: * sweeprolog-pce-theme.el: Reformat, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog 43683b3ad7 4/9: Fix highlighting for nonexistent Prolog flag names, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog 784707cc9f 1/9: * README.org (PceEmacs Theme): Reword and fix typo, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog eb04f8414a 5/9: Improve module completion annotations, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog f5a1f615ee 6/9: Report correct predicate indicators in 'C-x 4 a',
ELPA Syncer <=
- [nongnu] elpa/sweeprolog 89daa53a16 8/9: Add grouping and affixation functions for module completion, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog b89249f0fb 3/9: * sweeprolog.el: Reorganizes 'defface's, ELPA Syncer, 2023/06/27
- [nongnu] elpa/sweeprolog 114482c715 7/9: Announce recent changes in NEWS.org, ELPA Syncer, 2023/06/27