icomment madness - 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 76bab87e5cb9401fcc55750cb1f720acc5123339 /scm/clic/commit/76bab87e5cb9401fcc55750cb1f720acc5123339.gph bitreich.org 70 1parent 6efcb533bcf9da7ecef35a4f925e231d4e359896 /scm/clic/commit/6efcb533bcf9da7ecef35a4f925e231d4e359896.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Fri, 10 Nov 2017 16:56:09 +0000 Err bitreich.org 70 i Err bitreich.org 70 icomment madness Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 48 +++++++++++++++++-------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 27 insertions(+), 21 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@@ -1,4 +1,4 @@ Err bitreich.org 70 i-;; let's hide the loading Err bitreich.org 70 i+;;;; let's hide the loading Err bitreich.org 70 i (let ((*standard-output* (make-broadcast-stream))) Err bitreich.org 70 i #+sbcl Err bitreich.org 70 i (require 'sb-bsd-sockets) Err bitreich.org 70 i@@ -8,38 +8,38 @@ Err bitreich.org 70 i ;; structure to store links Err bitreich.org 70 i (defstruct location host port type uri) Err bitreich.org 70 i Err bitreich.org 70 i- ; BEGIN GLOBAL VARIABLES Err bitreich.org 70 i+;;;; BEGIN GLOBAL VARIABLES Err bitreich.org 70 i Err bitreich.org 70 i-;; a list containing the last viewed pages Err bitreich.org 70 i+;;; a list containing the last viewed pages Err bitreich.org 70 i (defparameter *history* '()) Err bitreich.org 70 i Err bitreich.org 70 i-;; a list containing the bookmarks Err bitreich.org 70 i-;; altered by (add-bookmark) and (load-bookmark) Err bitreich.org 70 i+;;; a list containing the bookmarks Err bitreich.org 70 i+;;; altered by (add-bookmark) and (load-bookmark) Err bitreich.org 70 i (defparameter *bookmarks* nil) Err bitreich.org 70 i Err bitreich.org 70 i-;; when clic loads a type 1 page, we store location structures here Err bitreich.org 70 i-;; when clic display the bookmark, we store bookmarks locations here Err bitreich.org 70 i+;;; when clic loads a type 1 page, we store location structures here Err bitreich.org 70 i+;;; when clic display the bookmark, we store bookmarks locations here Err bitreich.org 70 i (defparameter *links* (make-hash-table)) Err bitreich.org 70 i Err bitreich.org 70 i-;; Colors for use in the code Err bitreich.org 70 i+;;; Colors for use in the code Err bitreich.org 70 i (defparameter *colors* (make-hash-table)) Err bitreich.org 70 i Err bitreich.org 70 i-;; List of allowed item types Err bitreich.org 70 i+;;; List of allowed item types Err bitreich.org 70 i (defparameter *allowed-selectors* Err bitreich.org 70 i (list "0" "1" "2" "3" "4" "5" "6" "i" Err bitreich.org 70 i "h" "7" "8" "9" "+" "T" "g" "I")) Err bitreich.org 70 i Err bitreich.org 70 i- ; BEGIN CUSTOMIZABLE Err bitreich.org 70 i-;; keep files visited on disk when t Err bitreich.org 70 i+;;;; BEGIN CUSTOMIZABLE Err bitreich.org 70 i+;;; keep files visited on disk when t Err bitreich.org 70 i (defparameter *offline* nil) Err bitreich.org 70 i Err bitreich.org 70 i-;; name/location of the bookmark file Err bitreich.org 70 i+;;; name/location of the bookmark file Err bitreich.org 70 i (defparameter *bookmark-file* "bookmark.lisp") Err bitreich.org 70 i- ; END CUSTOMIZABLE Err bitreich.org 70 i+;;;; END CUSTOMIZABLE Err bitreich.org 70 i Err bitreich.org 70 i- ; END GLOBAL VARIABLES Err bitreich.org 70 i+;;;; END GLOBAL VARIABLES Err bitreich.org 70 i Err bitreich.org 70 i- ; BEGIN ANSI colors Err bitreich.org 70 i+;;;; BEGIN ANSI colors Err bitreich.org 70 i (defun add-color(name type hue) Err bitreich.org 70 i "Storing a ANSI color string into *colors*" Err bitreich.org 70 i (setf (gethash name *colors*) Err bitreich.org 70 i@@ -53,7 +53,7 @@ Err bitreich.org 70 i (add-color 'file 0 35) Err bitreich.org 70 i (add-color 'cyan 0 46) Err bitreich.org 70 i (add-color 'http 0 33) Err bitreich.org 70 i- ; END ANSI colors Err bitreich.org 70 i+;;;; END ANSI colors Err bitreich.org 70 i Err bitreich.org 70 i (defun print-with-color(text &optional (color 'white) (line-number nil)) Err bitreich.org 70 i "Used to display a line with a color" Err bitreich.org 70 i@@ -257,6 +257,9 @@ Err bitreich.org 70 i (defun show-bookmarks() Err bitreich.org 70 i "display the bookmarks like a page" Err bitreich.org 70 i (setf *links* (make-hash-table)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; for each bookmark we add it to *links* Err bitreich.org 70 i+ ;; and display it Err bitreich.org 70 i (loop for bookmark in *bookmarks* Err bitreich.org 70 i counting bookmark into line-number Err bitreich.org 70 i while bookmark do Err bitreich.org 70 i@@ -280,9 +283,11 @@ Err bitreich.org 70 i (format t "x or q : exit the shell, go back to REPL~%")) Err bitreich.org 70 i Err bitreich.org 70 i (defun shell() Err bitreich.org 70 i- "gNUM p h x" Err bitreich.org 70 i+ "Shell for user interaction" Err bitreich.org 70 i (format t "clic => ") Err bitreich.org 70 i (force-output) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; we loop until X or Q is typed Err bitreich.org 70 i (loop for user-input = (format nil "~a" (read nil nil)) Err bitreich.org 70 i while (not (or Err bitreich.org 70 i (string= "X" user-input) Err bitreich.org 70 i@@ -310,8 +315,10 @@ Err bitreich.org 70 i ((string= "H" user-input) Err bitreich.org 70 i (format t "~{~a~%~}" *history*)) Err bitreich.org 70 i Err bitreich.org 70 i- ;; go to a link and ignore invalid input Err bitreich.org 70 i+ ;; follow a link Err bitreich.org 70 i (t Err bitreich.org 70 i+ ;; we ignore error in case of bad input Err bitreich.org 70 i+ ;; just do nothing Err bitreich.org 70 i (ignore-errors Err bitreich.org 70 i (g (parse-integer user-input))))) Err bitreich.org 70 i (format t "clic => ") Err bitreich.org 70 i@@ -350,16 +357,15 @@ Err bitreich.org 70 i :uri (format nil "~{/~a~}" infos)))))) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i (defun get-argv() Err bitreich.org 70 i+ "Parse argv and return it" Err bitreich.org 70 i #+sbcl Err bitreich.org 70 i (cadr *posix-argv*) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (car (last (cdr (si::command-args))))) Err bitreich.org 70 i Err bitreich.org 70 i (defun main() Err bitreich.org 70 i- "main entry of clic binary" Err bitreich.org 70 i+ "fetch argument, display page and go to shell if type is 1" Err bitreich.org 70 i (let ((destination Err bitreich.org 70 i (let ((argv (get-argv))) Err bitreich.org 70 i (if argv Err bitreich.org 70 .