iDownload text files and call $EDITOR - clic - Clic is an command line interactive client for gopher written in Common LISP Err bitreich.org 70 hgit clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ URL:git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ bitreich.org 70 1Log /scm/clic/log.gph bitreich.org 70 1Files /scm/clic/files.gph bitreich.org 70 1Refs /scm/clic/refs.gph bitreich.org 70 1Tags /scm/clic/tag bitreich.org 70 1README /scm/clic/file/README.md.gph bitreich.org 70 1LICENSE /scm/clic/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8082edf6c70c5873c19f92730e8e0db5bceb1dee /scm/clic/commit/8082edf6c70c5873c19f92730e8e0db5bceb1dee.gph bitreich.org 70 1parent 8605ef1699e170afed26d4266f2bf3db53225e73 /scm/clic/commit/8605ef1699e170afed26d4266f2bf3db53225e73.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Thu, 11 Jan 2018 20:53:01 +0000 Err bitreich.org 70 i Err bitreich.org 70 iDownload text files and call $EDITOR Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 41 +++++++++++++++++-------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 23 insertions(+), 18 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/clic.lisp b/clic.lisp /scm/clic/file/clic.lisp.gph bitreich.org 70 i@@ -479,24 +479,29 @@ Err bitreich.org 70 i (cond Err bitreich.org 70 i ;;;; output is a text file ? Err bitreich.org 70 i ;;;; call the $PAGER ! Err bitreich.org 70 i- ((string= "0" type) Err bitreich.org 70 i- ;;; generate a string from *buffer* array Err bitreich.org 70 i- (let ((text (string-right-trim ; remove last newline Err bitreich.org 70 i- (string #\Newline) Err bitreich.org 70 i- (format nil "~{~a~%~}" ; concatenate lines Err bitreich.org 70 i- (loop for line across *buffer* Err bitreich.org 70 i- collect line))))) Err bitreich.org 70 i- ;; create input stream used as stdin for $PAGER Err bitreich.org 70 i- (let ((input (make-string-input-stream text))) Err bitreich.org 70 i- (uiop:run-program (list (uiop:getenv "PAGER")) Err bitreich.org 70 i- :input input Err bitreich.org 70 i- :output :interactive)) Err bitreich.org 70 i- ;; display last menu Err bitreich.org 70 i- (pop *history*) Err bitreich.org 70 i- (when *previous-buffer* Err bitreich.org 70 i- (setf *buffer* (copy-array *previous-buffer*)) Err bitreich.org 70 i- (setf *links* (make-hash-table)) Err bitreich.org 70 i- (display-buffer "1")))) Err bitreich.org 70 i+ ((string= "0" type) Err bitreich.org 70 i+ ;;; generate a string from *buffer* array Err bitreich.org 70 i+ (let* ((uri (location-uri (car *history*))) Err bitreich.org 70 i+ (filename (subseq uri (1+ (position #\/ uri :from-end t)))) Err bitreich.org 70 i+ (path (concatenate 'string "/tmp/" filename))) Err bitreich.org 70 i+ (print filename) Err bitreich.org 70 i+ (print path) Err bitreich.org 70 i+ (with-open-file (output path Err bitreich.org 70 i+ :direction :output Err bitreich.org 70 i+ :if-does-not-exist :create Err bitreich.org 70 i+ :if-exists :supersede) Err bitreich.org 70 i+ (loop for line across *buffer* Err bitreich.org 70 i+ do Err bitreich.org 70 i+ (format output "~a~%" line))) Err bitreich.org 70 i+ (uiop:run-program (list (or (uiop:getenv "EDITOR") "less") path) Err bitreich.org 70 i+ :input :interactive Err bitreich.org 70 i+ :output :interactive)) Err bitreich.org 70 i+ ;; display last menu Err bitreich.org 70 i+ (pop *history*) Err bitreich.org 70 i+ (when *previous-buffer* Err bitreich.org 70 i+ (setf *buffer* (copy-array *previous-buffer*)) Err bitreich.org 70 i+ (setf *links* (make-hash-table)) Err bitreich.org 70 i+ (display-buffer "1"))) Err bitreich.org 70 i Err bitreich.org 70 i ;; image Err bitreich.org 70 i ((or Err bitreich.org 70 .