New reload command and we can end at anytime properly - clic - Clic is an command line interactive client for gopher written in Common LISP
(HTM) git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
(DIR) commit fdffd2e4d1c02050fcf6f441b6e0029d560c1449
(DIR) parent 8ac8cdfbdce8d9159b195f1d1a15d9988033f29f
(HTM) Author: Solene Rapenne <solene@perso.pw>
Date: Thu, 16 Nov 2017 12:10:40 +0000
New reload command and we can end at anytime properly
Diffstat:
M clic.lisp | 54 +++++++++++++++++++++----------
M make-binary.lisp | 6 +++---
2 files changed, 40 insertions(+), 20 deletions(-)
---
(DIR) diff --git a/clic.lisp b/clic.lisp
@@ -235,6 +235,12 @@
(pop *history*)
(visit (pop *history*))))
+(defun r()
+ "browse to the previous link"
+ (when (<= 1 (length *history*))
+ (visit (pop *history*))))
+
+
(defun load-bookmark()
"Restore the bookmark from file"
(when (probe-file *bookmark-file*)
@@ -324,28 +330,37 @@
(defun user-input(input)
(cond
;; show help
- ((string= "HELP" input)
+ ((string= "help" input)
(help-shell))
;; bookmark current link
- ((string= "A" input)
+ ((string= "a" input)
(add-bookmark))
;; show bookmarks
- ((string= "B" input)
+ ((string= "b" input)
(show-bookmarks))
+ ((or
+ (string= "ls" input)
+ (string= "r" input))
+ (r))
+
;; go to previous page
- ((string= "P" input)
+ ((or
+ (string= "cd .." input)
+ (string= "p" input))
(p))
;; exit
- ((or (string= "X" input)
- (string= "Q" input))
- (quit))
+ ((or
+ (string= "exit" input)
+ (string= "x" input)
+ (string= "q" input))
+ 'end)
;; show history
- ((string= "H" input)
+ ((string= "h" input)
(format t "~{~a~%~}" *history*))
;; follow a link
@@ -423,12 +438,14 @@
(force-output)
;; we loop until X or Q is typed
- (loop for input = (format nil "~a" (read nil nil))
+ (loop for input = (format nil "~a" (read-line nil nil))
while (not (or
- (string= "X" input)
- (string= "Q" input)))
+ (string= "exit" input)
+ (string= "x" input)
+ (string= "q" input)))
do
- (user-input input)
+ (when (eq 'end (user-input input))
+ (loop-finish))
(format t "clic => ")
(force-output)))
@@ -439,11 +456,14 @@
(if argv
;; url as argument
(parse-url argv)
- ;; default url
- (make-location :host "bitreich.org" :port 70 :uri "/" :type "1")))))
- (visit destination)
- (when (string= "1" (location-type destination))
- (shell))))
+ ;; default url
+ (make-location :host "bitreich.org" :port 70 :uri "/" :type "1")))))
+
+ ;; if user want to drop from first page we need
+ ;; to look it here
+ (when (not (eq 'end (visit destination)))
+ (when (string= "1" (location-type destination))
+ (shell)))))
;; we allow ecl to use a new kind of argument
;; not sure how it works but that works
(DIR) diff --git a/make-binary.lisp b/make-binary.lisp
@@ -1,5 +1,5 @@
-;; ecl produces a linked binary
-;; while sbcl produces a static binary (but huge ~ 10Mb)
+;; ecl produces a linked binary to ecl shared library
+;; sbcl produces a static binary (~ 10Mb with compression / 70Mb without)
#+ecl
(require 'cmp)
@@ -24,5 +24,5 @@
:executable t
:toplevel 'main))
-(format t "INFO => Compilation done (or at least it should)~%")
+(format t "INFO => Compilation done (or at least it should be)~%")
(quit)