Álvaro Ramírez
Emacs, search hackingwithswift.com
Paul Hudson authors excellent Swift material at hackingwithswift.com. I regularly land on the site while searching for snippets from the browser. I was wondering if I could search for snippets directly from Emacs.
Turns out, hackingwithswift uses a JSON HTTP request for querying code examples. With this in mind, we can use ivy-read like Oleh Krehel's counsel-search and search for Swift snippets from our favorite editor:
(require 'request) (require 'json) (defun ar/counsel-hacking-with-swift-search () "Ivy interface to query hackingwithswift.com." (interactive) (ivy-read "hacking with swift: " (lambda (input) (or (ivy-more-chars) (let ((request-curl-options (list "-H" (string-trim (url-http-user-agent-string))))) (request "https://www.hackingwithswift.com/example-code/search" :type "GET" :params (list (cons "search" input)) :parser 'json-read :success (cl-function (lambda (&key data &allow-other-keys) (ivy-update-candidates (mapcar (lambda (item) (let-alist item (propertize .title 'url .url))) data))))) 0))) :action (lambda (selection) (browse-url (concat "https://www.hackingwithswift.com" (get-text-property 0 'url selection)))) :dynamic-collection t :caller 'ar/counsel-hacking-with-swift-search))