+;:*=======================
+;:* Search DuckDuckGo
+(defun ddg-search (string)
+ "Search DuckDuckGo for STRING.
+
+STRING is truncated at 500 characters to stay within DuckDuckGo's
+limits. The results are displayed in your default browser via
+`browse-url'"
+ (interactive "sSearch DuckDuckGo for: ")
+ (let* ((baseurl "https://duckduckgo.com/?q=")
+ (str (url-hexify-string
+ (truncate-string-to-width string 500))))
+ (browse-url (concat baseurl str))))
+
+(defun ddg-search-region (beg end)
+ "Search DuckDuckGo for the string BEG END.
+
+The search string is truncated at 500 characters to stay within
+DuckDuckGo's limits. The results are displayed in your default
+browser via `browse-url'"
+ (interactive "r")
+ (let ((str (buffer-substring-no-properties beg end)))
+ (zmacs-deactivate-region)
+ (ddg-search str)))
+