diff --git a/Makefile b/Makefile index 6bcd90a..e796ed8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,7 @@ -.PHONY: all +dirs = src doc -all: - $(MAKE) -C src/ +.PHONY: all $(dirs) + +all: $(dirs) +$(dirs): + $(MAKE) -C $@ diff --git a/README.org b/README.org index 6b71e45..24bf6c7 100644 --- a/README.org +++ b/README.org @@ -1,9 +1,3 @@ -* nlinkwave +* Markam - I'm working on replacing [[http://code.ryuslash.org/cgit.cgi/linkwave/][linkwave]] with this project soon, with the - hope of making development on/for Windows easier and becaus scheme - is fun! - - *Note:* Once I determine that ~nlinkwave~ is capable of everything - linkwave is I will change the name of this repository, keep this in - mind when you are having trouble pulling changes in the future. + Collects bookmarks. diff --git a/conkeror/linkwave.js b/conkeror/markam.js similarity index 61% rename from conkeror/linkwave.js rename to conkeror/markam.js index 75e3735..2151b17 100644 --- a/conkeror/linkwave.js +++ b/conkeror/markam.js @@ -1,4 +1,4 @@ -/* linkwave -- Store/retrieve/manage bookmarks +/* markam -- Store/retrieve/manage bookmarks Copyright (C) 2012 Tom Willemsen This program is free software: you can redistribute it and/or modify @@ -17,16 +17,16 @@ /// Commentary: // A wrapper script that should allow conkeror to interface with -// linkwave. Does not yet allow searching through collected -// bookmarks, only adding new ones. +// markam. Does not yet allow searching through collected bookmarks, +// only adding new ones. /// Code: -define_variable("linkwave_program", "linkwave", - "The location of the linkwave executable."); +define_variable("markam_program", "markam", + "The location of the markam executable."); -function linkwave_add_url(I, url, title) -{ // Add URL to linkwave, ask for a title (provide TITLE as a +function markam_add_url(I, url, title) +{ // Add URL to markam, ask for a title (provide TITLE as a // default), description and any number of tags. let url_string = load_spec_uri_string(load_spec(url)); let title = yield I.minibuffer.read($prompt="name (required): ", @@ -37,7 +37,7 @@ function linkwave_add_url(I, url, title) let tags = yield I.minibuffer.read( $prompt="tags (comma delimited): " ); - let command = linkwave_program + ' "' + url_string + '" "' + title + let command = markam_program + ' "' + url_string + '" "' + title + '" "' + description + '" \'' + tags.split(',').map(function (str) { return str.trim(); }).join("' '") @@ -45,33 +45,33 @@ function linkwave_add_url(I, url, title) yield shell_command(command); } -function linkwave_add(I) { +function markam_add(I) { check_buffer(I.buffer, content_buffer); - let result = yield linkwave_add_url(I, I.buffer.top_frame, + let result = yield markam_add_url(I, I.buffer.top_frame, I.buffer.title); if (!result) - I.window.minibuffer.message('Added to linkwave'); + I.window.minibuffer.message('Added to markam'); else - I.window.minibuffer.message('Couldn\'t add to linkwave'); + I.window.minibuffer.message('Couldn\'t add to markam'); } -interactive("linkwave-add", - "Bookmark the current page in linkwave", - linkwave_add); +interactive("markam-add", + "Bookmark the current page in markam", + markam_add); -function linkwave_add_link(I) { +function markam_add_link(I) { check_buffer(I.buffer, content_buffer); bo = yield read_browser_object(I); - let result = yield linkwave_add_url(I, encodeURIComponent(bo), + let result = yield markam_add_url(I, encodeURIComponent(bo), bo.textContent); if (!result) - I.window.minibuffer.message('Added to linkwave'); + I.window.minibuffer.message('Added to markam'); else - I.window.minibuffer.message('Couldn\'t add to linkwave'); + I.window.minibuffer.message('Couldn\'t add to markam'); } -interactive("linkwave-add-link", - "Select and bookmark a link in linkwave", - linkwave_add_link); +interactive("markam-add-link", + "Select and bookmark a link in markam", + markam_add_link); -provide("linkwave"); +provide("markam"); diff --git a/doc/Makefile b/doc/Makefile index 07079e8..29d7269 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,4 +1,4 @@ .PHONY: all -all: linkwave.info -linkwave.info: linkwave.texi +all: markam.info +markam.info: markam.texi diff --git a/doc/linkwave.texi b/doc/markam.texi similarity index 81% rename from doc/linkwave.texi rename to doc/markam.texi index 348dbd5..3093f8d 100644 --- a/doc/linkwave.texi +++ b/doc/markam.texi @@ -1,10 +1,10 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename linkwave.info -@settitle linkwave User Manual +@setfilename markam.info +@settitle markam User Manual @c %**end of header @copying -The user manual for linkwave. +The user manual for markam. Copyright @copyright{} 2012 Tom Willemsen @@ -27,8 +27,8 @@ The document was typeset with @end copying @titlepage -@title linkwave User Manual -@subtitle The user manual for linkwave +@title markam User Manual +@subtitle The user manual for markam @author Tom Willemsen @page @vskip 0pt plus 1filll @@ -40,14 +40,14 @@ The document was typeset with @ifnottex @node Top, Usage, (dir), (dir) -@top linkwave User Manual +@top markam User Manual @insertcopying @end ifnottex @c Generate the nodes for this menu with `C-c C-u C-m'. @menu -* Usage:: How to use linkwave +* Usage:: How to use markam * Copying This Manual:: * Index:: @end menu @@ -57,11 +57,11 @@ The document was typeset with @node Usage, Copying This Manual, Top, Top @chapter How to use -For the moment linkwave is a simple program, it has 2 functions. In +For the moment markam is a simple program, it has 2 functions. In order to view a list of all your bookmarks you can use: @example -linkwave +markam @end example This will show the list of all stored bookmarks, showing the URL, name @@ -70,9 +70,9 @@ and description. This list is unsorted and unpaged. The other function is to add a new bookmark, which can be done with: @example -linkwave http://example.org Example \ - "Some description about Example" \ - example some more tags +markam http://example.org Example \ + "Some description about Example" \ + example some more tags @end example This will store the bookmark with the URL of ``http://example.org'', @@ -80,7 +80,7 @@ name ``Example'', description ``Some description about Example'' and the tags ``example'', ``some'', ``more'' and ``tags''. Any arguments following the description will be considered tags. -For the moment linkwave is rather stupid, assuming that all URLs start +For the moment markam is rather stupid, assuming that all URLs start with @code{http://} or @code{https://}, so other bookmarks can't be added (yet). @@ -103,4 +103,4 @@ added (yet). @bye -@c linkwave.texi ends here +@c markam.texi ends here diff --git a/src/.gitignore b/src/.gitignore index 36833f1..83dc013 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,3 @@ convert -linkwave +markam *.o diff --git a/src/Makefile b/src/Makefile index f64fb7f..95baea2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,8 +2,8 @@ objects = paths.o common.o .PHONY: all -all: linkwave convert -linkwave: linkwave.scm $(objects) +all: markam convert +markam: markam.scm $(objects) csc $^ -o $@ convert: convert.scm $(objects) diff --git a/src/common.scm b/src/common.scm index 7d4fec2..20baece 100644 --- a/src/common.scm +++ b/src/common.scm @@ -1,4 +1,4 @@ -;;; linkwave -- Store/retrieve/manage bookmarks +;;; markam -- Store/retrieve/manage bookmarks ;; Copyright (C) 2012 Tom Willemsen ;; This program is free software: you can redistribute it and/or modify @@ -26,5 +26,5 @@ (define version "0.1.0") (define (display-version) - ;; Display linkwave's version number. - (format #t "linkwave v~a~%" version)) + ;; Display markam's version number. + (format #t "markam version ~a~%" version)) diff --git a/src/convert.scm b/src/convert.scm index 45e3101..199a2a5 100644 --- a/src/convert.scm +++ b/src/convert.scm @@ -1,4 +1,4 @@ -;;; linkwave -- Store/retrieve/manage bookmarks +;;; markam -- Store/retrieve/manage bookmarks ;; Copyright (C) 2012 Tom Willemsen ;; This program is free software: you can redistribute it and/or modify @@ -17,7 +17,7 @@ ;;; Commentary: ;; Convert any old database file to one usable with this version of -;; linkwave. If you're just starting to use linkwave there should be +;; markam. If you're just starting to use markam there should be ;; no need to use this. ;;; Code: @@ -31,7 +31,7 @@ (define (blob->seconds blob) ;; Convert BLOB to an integer representing the seconds since ;; 01-01-1970 (standard unix timstamp). This has to be done because - ;; in the previous version of linkwave I stored the timestamp as a + ;; in the previous version of markam I stored the timestamp as a ;; blob and CHICKEN doesn't seem to like blobs much. (if (u32vector? blob) (u32vector-ref (blob->u32vector blob) 0) @@ -53,8 +53,8 @@ (define (convert) ;; Convert an old database into a new one and then replace the old ;; with the new. - (let ((old-db (open-database (data-file "linkwave.db"))) - (new-db (open-database (data-file "nlinkwave.db")))) + (let ((old-db (open-database (data-file "linkwave.db" "linkwave"))) + (new-db (open-database (data-file "markam.db")))) (execute new-db "CREATE TABLE bookmark (url VARCHAR(255) UNIQUE, date INTEGER, name VARCHAR(255), description TEXT)") (execute new-db "CREATE TABLE tag (name VARCHAR(255) UNIQUE)") (execute new-db "CREATE TABLE bookmark_tag (bookmark_id INTEGER REFERENCES bookmark(rowid), tag_id INTEGER REFERENCES tag(rowid), PRIMARY KEY (bookmark_id, tag_id))") @@ -75,12 +75,10 @@ (first-result new-db "SELECT rowid FROM tag WHERE name = ?" tag))) "SELECT url, name FROM bookmark_tag JOIN tag ON (tag_id = tag.rowid)") - (rename-file (data-file "linkwave.db") (data-file "old-linkwave.db")) - (rename-file (data-file "nlinkwave.db") (data-file "linkwave.db")) (format #t "Database converted.~%"))) (define (display-help) - ;; Display linkwave's help message. + ;; Display markam's help message. (format #t (string-append "Usage: convert [options]...~%" "~%" @@ -93,9 +91,9 @@ ;; Convert an old database file unless a conversion database already ;; exists. (if (null? args) - (if (file-exists? (data-file "nlinkwave.db")) - (format #t (string-append "Conversion database already exists. " - "Something may have gone wrong during the last run~%")) + (if (file-exists? (data-file "markam.db")) + (format #t (string-append "Converted database already exists, or something may have gone " + "wrong during the last run~%")) (convert)) (do ((arg (car args) (and (not (null? args)) (car args)))) diff --git a/src/linkwave.scm b/src/markam.scm similarity index 94% rename from src/linkwave.scm rename to src/markam.scm index a84e3ee..38bfc42 100644 --- a/src/linkwave.scm +++ b/src/markam.scm @@ -1,4 +1,4 @@ -;;; linkwave -- Store/retrieve/manage bookmarks +;;; markam -- Store/retrieve/manage bookmarks ;; Copyright (C) 2012 Tom Willemsen ;; This program is free software: you can redistribute it and/or modify @@ -78,10 +78,10 @@ (string= (substring str 0 8) "https://")))) (define (display-help) - ;; Display linkwave's help message. + ;; Display markam's help message. (format #t (string-append - "Usage: linkwave [options]...~%" - " linkwave [...]~%" + "Usage: markam [options]...~%" + " markam [...]~%" "~%" "Possible options:~%" "~%" @@ -91,7 +91,7 @@ (define (main args) ;; Open a database connection, do what the user asked and close it ;; again. - (let ((db (open-database (data-file "linkwave.db")))) + (let ((db (open-database (data-file "markam.db")))) (if (null? args) (for-each-row print-row db "select * from bookmark") (if (url-string? (car args)) diff --git a/src/paths.scm b/src/paths.scm index 5f4f2d2..cfd8838 100644 --- a/src/paths.scm +++ b/src/paths.scm @@ -1,4 +1,4 @@ -;;; linkwave -- Store/retrieve/manage bookmarks +;;; markam -- Store/retrieve/manage bookmarks ;; Copyright (C) 2012 Tom Willemsen ;; This program is free software: you can redistribute it and/or modify @@ -22,25 +22,24 @@ (declare (unit paths)) -(define (stored-file xdg-env file) - ;; Get FILE either from `XDG-ENV/linkwave/' or from - ;; `$HOME/.linkwave/'. Prefer any existing file over any other, but - ;; prefer files using XDG-ENV over `$HOME'. - (let ((xdg (get-environment-variable xdg-env)) - (stored-file (string-append (get-environment-variable "HOME") "/.linkwave/" file))) +(define (stored-file xdg-env file #!optional dir) + ;; Get FILE either from `XDG-ENV/markam/' or from `$HOME/.markam/'. + ;; Prefer any existing file over any other, but prefer files using + ;; XDG-ENV over `$HOME'. + (let* ((xdg (get-environment-variable xdg-env)) + (dir (or dir "markam")) + (stored-file (string-append (get-environment-variable "HOME") "/." dir "/" file))) (unless (or (file-exists? stored-file) (not xdg)) - (set! stored-file (string-append xdg "/linkwave/" file))) + (set! stored-file (string-append xdg "/" dir "/" file))) stored-file)) -(: config-file (string -> string)) (define (config-file file) ;; Use `stored-file' to get configuration file FILE. Configuration ;; files are stored under `$XDG_CONFIG_HOME' if the XDG standard is ;; used. (stored-file "XDG_CONFIG_HOME" file)) -(: data-file (string -> string)) -(define (data-file file) +(define (data-file file #!optional dir) ;; Use `stored-file' to get data file FILE. Data files are stored ;; under `$XDG_DATA_HOME' if the XDG standard is used. - (stored-file "XDG_DATA_HOME" file)) + (stored-file "XDG_DATA_HOME" file dir))