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

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

[nongnu] elpa/sesman cf7997e279 035/100: Add sesman-project generic


From: ELPA Syncer
Subject: [nongnu] elpa/sesman cf7997e279 035/100: Add sesman-project generic
Date: Tue, 28 Dec 2021 14:06:00 -0500 (EST)

branch: elpa/sesman
commit cf7997e279a0af1877a6a809ea7fae500da52cce
Author: Vitalie Spinu <spinuvit@gmail.com>
Commit: Vitalie Spinu <spinuvit@gmail.com>

    Add sesman-project generic
---
 sesman.el | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/sesman.el b/sesman.el
index b71e9ed197..34dc1b1c91 100644
--- a/sesman.el
+++ b/sesman.el
@@ -40,7 +40,6 @@
 ;;; Code:
 
 (require 'cl-generic)
-(require 'project)
 (require 'seq)
 (require 'subr-x)
 
@@ -152,19 +151,15 @@ Can be either a symbol, or a function returning a 
symbol.")
                         system))))))
 
 (defun sesman--expand-path-maybe (obj)
-  (cond
-   ((stringp obj) (expand-file-name obj))
-   ((and (consp obj) (stringp (cdr obj)))
-    (cons (car obj) (expand-file-name (cdr obj))))
-   (t obj)))
+  (if (stringp obj)
+      (expand-file-name obj)
+    obj))
 
 ;; FIXME: incorporate `sesman-abbreviate-paths'
 (defun sesman--abbrev-path-maybe (obj)
-  (cond
-   ((stringp obj) (abbreviate-file-name obj))
-   ((and (consp obj) (stringp (cdr obj)))
-    (cons (car obj) (abbreviate-file-name (cdr obj))))
-   (t obj)))
+  (if (stringp obj)
+      (abbreviate-file-name obj)
+    obj))
 
 (defun sesman--system ()
   (if sesman-system
@@ -422,9 +417,11 @@ By default, calls `sesman-quit-session' and then
 (cl-defgeneric sesman-session-info (_system session)
   (cdr session))
 
-(cl-defgeneric sesman-context-types (_system)
-  "Return a list of context types understood by SYSTEM."
-  '(buffer directory project))
+(cl-defgeneric sesman-project (system)
+  "Retrieve project root for SYSTEM in directory DIR.
+DIR defaults to `default-directory'. Return a string or nil if no project has
+been found."
+  nil)
 
 (cl-defgeneric sesman-more-relevant-p (_system session1 session2)
   "Return non-nil if SESSION1 should be sorted before SESSION2.
@@ -433,6 +430,10 @@ provide a more meaningful ordering. If your system objects 
are buffers you can
 use `sesman-more-recent-p' utility in this method."
   (not (string-greaterp (car session1) (car session2))))
 
+(cl-defgeneric sesman-context-types (_system)
+  "Return a list of context types understood by SYSTEM."
+  '(buffer directory project))
+
 
 ;;; System API
 
@@ -706,7 +707,11 @@ buffers."
   default-directory)
 (cl-defmethod sesman-context ((_cxt-type (eql project)))
   "Return current project."
-  (project-current))
+  (or
+   (sesman-project (sesman--system))
+   (progn
+     (require 'project)
+     (car (project-roots (project-current))))))
 
 (cl-defgeneric sesman-relevant-context-p (_cxt-type cxt)
   "Non-nil if context CXT is relevant to current context of type CXT-TYPE.")
@@ -720,7 +725,7 @@ buffers."
 (cl-defmethod sesman-relevant-context-p ((_cxt-type (eql project)) proj)
   "Non-nil if PROJ is the parent or equals the `default-directory'."
   (when (and proj default-directory)
-    (string-match-p (concat "^" (cdr proj))
+    (string-match-p (concat "^" proj)
                     (expand-file-name default-directory))))
 
 



reply via email to

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