Skip to content
This repository has been archived by the owner on Jan 23, 2018. It is now read-only.

Commit

Permalink
Formatting, docstring and minor mode lighter fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
purcell committed Oct 29, 2013
1 parent e4c85ea commit c85929f
Showing 1 changed file with 33 additions and 26 deletions.
59 changes: 33 additions & 26 deletions relax.el
Expand Up @@ -64,6 +64,7 @@
(require 'json)
(require 'js)
(require 'mm-util) ;; for replace-regexp-in-string
(require 'cl)

(defvar relax-host "127.0.0.1") ;; Can't use localhost due to IPv6 sometimes
(defvar relax-port 5984)
Expand All @@ -75,7 +76,7 @@
;;; Utilities

(defun relax-url (&optional id)
"Return a URL for the given id using relax- host, port, and db-path."
"Return a URL for the given ID using relax- host, port, and db-path."
;; remove double slashes that sneak in
(replace-regexp-in-string "\\([^:]\\)//*" "\\1/"
(format "http://%s:%s/%s/%s"
Expand Down Expand Up @@ -147,22 +148,23 @@
(define-key-after menu [relax-delete-db] '("Delete database..." . relax-delete-db))
menu))

(defvar relax-mode-map (let ((map (make-sparse-keymap)))
(define-key map (kbd "RET") 'relax-doc)
(define-key map (kbd "C-o") 'relax-new-doc)
(define-key map (kbd "g") 'relax-update-db)
(defvar relax-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "RET") 'relax-doc)
(define-key map (kbd "C-o") 'relax-new-doc)
(define-key map (kbd "g") 'relax-update-db)

(define-key map (kbd "SPC") 'scroll-up)
(define-key map (kbd "<backspace>") 'scroll-down)
(define-key map "q" 'quit-window)
(define-key map (kbd "C-k") 'relax-kill-doc-from-db)
(define-key map "[" 'relax-prev-page)
(define-key map "]" 'relax-next-page)
(define-key map (kbd "SPC") 'scroll-up)
(define-key map (kbd "<backspace>") 'scroll-down)
(define-key map "q" 'quit-window)
(define-key map (kbd "C-k") 'relax-kill-doc-from-db)
(define-key map "[" 'relax-prev-page)
(define-key map "]" 'relax-next-page)

(define-key map [menu-bar] (make-sparse-keymap))
(define-key map [menu-bar relax] (cons "Relax" relax-menu-bar))
(define-key map [menu-bar] (make-sparse-keymap))
(define-key map [menu-bar relax] (cons "Relax" relax-menu-bar))

map))
map))

(defun relax-url-completions ()
"A list of all DB URLs at the server given by relax-host:relax-port."
Expand All @@ -176,7 +178,7 @@

;;;###autoload
(defun relax (db-url)
"Connect to the CouchDB database at db-url."
"Connect to the CouchDB database at DB-URL."
(interactive (list (completing-read "CouchDB URL: " (relax-url-completions)
nil nil (relax-url))))
(let ((url (url-generic-parse-url db-url)))
Expand Down Expand Up @@ -227,7 +229,7 @@
(getf (getf doc :value) :rev)))))

(defun relax-new-db (url)
"Create a new database."
"Create a new database at URL."
(interactive (list (completing-read "CouchDB URL: " (relax-url-completions)
nil nil (relax-url))))
(when url
Expand All @@ -239,7 +241,7 @@
(relax url))) (list url)))))

(defun relax-delete-db (url)
"Delete a database."
"Delete database at URL."
(interactive (list (completing-read "CouchDB URL: " (relax-url-completions)
nil nil (relax-url))))
(when url
Expand All @@ -251,7 +253,7 @@
(message "Ok"))) (list url)))))

(defun relax-new-doc (choose-id)
"Create a new document. With prefix arg, prompt for a document ID."
"Create a new document. With prefix arg CHOOSE-ID, prompt for a document ID."
(interactive "P")
(let ((url-request-method (if choose-id "PUT" "POST"))
(url-request-extra-headers
Expand All @@ -268,7 +270,7 @@
(url-retrieve doc-url 'relax-doc-load (list doc-url))))

(defun relax-update-db (&optional docs)
"Update the DB buffer with the current document list."
"Update the DB buffer with the current list of DOCS."
(interactive)
;; TODO: remain on the same page
(setq buffer-read-only nil)
Expand All @@ -289,24 +291,24 @@
(relax-update-db))))))

(defun relax-next-page ()
"Go forward a page. Prefix arg goes back n pages. See relax-docs-per-page."
"Go forward a page. With prefix arg, go back n pages. See `relax-docs-per-page'."
(interactive)
;; TODO: display pagination in DB buffer, prevent paging out of range
(relax-update-db (format "_all_docs?descending=false&limit=%s&startkey=\"%s\"&skip=1"
relax-docs-per-page
(save-excursion
(goto-char (point-max))
(previous-line)
(forward-line -1)
(car (relax-parse-db-line))))))

(defun relax-prev-page ()
"Go back a page. Prefix arg goes back n pages. See relax-docs-per-page."
"Go back a page. With prefix arg, go back n pages. See `relax-docs-per-page'."
(interactive)
(relax-update-db (format "_all_docs?descending=true&limit=%s&startkey=\"%s\"&skip=1"
relax-docs-per-page
(save-excursion
(goto-char (point-min))
(next-line 3)
(forward-line 3)
(car (relax-parse-db-line))))))

;;; Document-level
Expand Down Expand Up @@ -346,7 +348,7 @@
(define-minor-mode relax-doc-mode
"Minor mode for interacting with CouchDB documents."
nil
"relax doc")
" relax-doc")

(defun relax-doc ()
"Open a buffer viewing the document at point."
Expand All @@ -355,7 +357,7 @@
(url-retrieve doc-url 'relax-doc-load (list doc-url))))

(defun relax-submit ()
"Save the contents of the buffer to the server. Enforces valid JSON."
"Save the contents of the buffer to the server. Enforces valid JSON."
(interactive)
;; Verify valid JSON before submitting.
(relax-json-decode (buffer-substring (point-min) (point-max)))
Expand All @@ -381,4 +383,9 @@
(kill-buffer target-buffer)
(relax-update-db)))))

(provide 'relax) ;;; relax.el ends here
;; Local Variables:
;; indent-tabs-mode: nil
;; End:

(provide 'relax)
;;; relax.el ends here

0 comments on commit c85929f

Please sign in to comment.