File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed
Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 2121; ;; Code:
2222
2323(require 'cl-lib )
24+ (require 'seq )
2425(require 'subr-x )
2526
2627(require 'straight )
@@ -208,6 +209,36 @@ those listed."
208209 (straight-freeze-versions)
209210 (straight-x-freeze-pinned-versions))
210211
212+ (defun straight-x-open-straight-package-readme (package-name )
213+ " Open the README file of a straight package in read-only mode."
214+ (interactive
215+ (let* ((repos-dir (expand-file-name " straight/repos/" straight-base-dir))
216+ (package-names
217+ (if (file-directory-p repos-dir)
218+ (cl-remove-if-not
219+ (lambda (dir )
220+ (seq-some
221+ (lambda (file )
222+ (string-match-p " ^README\\ (?:\\ ..*\\ )?$" file))
223+ (directory-files
224+ (expand-file-name dir repos-dir) nil " ^[^.]+" )))
225+ (directory-files repos-dir nil " ^[^.]+" ))
226+ (error " Repositories directory not found: %s " repos-dir))))
227+ (list (completing-read " Enter package name: " package-names nil t ))))
228+ (let* ((repo-path (expand-file-name
229+ package-name
230+ (expand-file-name " straight/repos/" straight-base-dir)))
231+ (readme-path (seq-some
232+ (lambda (file )
233+ (when (string-match-p " ^README\\ (?:\\ ..*\\ )?$" file)
234+ (expand-file-name file repo-path)))
235+ (directory-files repo-path))))
236+ (if readme-path
237+ (let ((buffer (find-file-read-only readme-path)))
238+ (message " Opened %s in read-only mode. " readme-path)
239+ buffer)
240+ (message " No README file found for package: %s " package-name))))
241+
211242
212243(provide 'straight-x )
213244
You can’t perform that action at this time.
0 commit comments