all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ivan Kanis <ivan@kanis.fr>
To: Lars Grunewaldt <lars.grunewaldt@osnanet.de>
Cc: Emacs Development List <emacs-devel@gnu.org>
Subject: [PATCH] eww improvements
Date: Sun, 23 Jun 2013 18:58:31 +0200	[thread overview]
Message-ID: <8738s8ix1k.fsf@kanis.fr> (raw)

[-- Attachment #1: Type: text/plain, Size: 43 bytes --]

Lars,

I have attached 3 patches for eww.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-allow-entering-keywords-for-search-engine.patch --]
[-- Type: text/x-diff, Size: 1408 bytes --]

From dfb8f81cb0bc5915e2ffb45cd933b018e7f5d37e Mon Sep 17 00:00:00 2001
From: Ivan Kanis <ivan@tao>
Date: Sun, 23 Jun 2013 18:20:03 +0200
Subject: [PATCH 1/3] allow entering keywords for search engine

---
 emacs/gnus/eww.el |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/emacs/gnus/eww.el b/emacs/gnus/eww.el
index ad19758..4fc9fe0 100644
--- a/emacs/gnus/eww.el
+++ b/emacs/gnus/eww.el
@@ -43,6 +43,11 @@
   :group 'eww
   :type 'string)
 
+(defcustom eww-search-prefix "https://duckduckgo.com/html/?q="
+  "Prefix URL to search engine"
+  :group 'eww
+  :type 'string)
+
 (defface eww-form-submit
   '((((type x w32 ns) (class color))	; Like default mode line
      :box (:line-width 2 :style released-button)
@@ -90,9 +95,13 @@
 ;;;###autoload
 (defun eww (url)
   "Fetch URL and render the page."
-  (interactive "sUrl: ")
-  (unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url)
-    (setq url (concat "http://" url)))
+  (interactive "sEnter URL or keywords: ")
+  (if (and (= (length (split-string url)) 1)
+           (> (length (split-string url "\\.")) 1))
+      (unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url)
+        (setq url (concat "http://" url)))
+    (setq url (concat eww-search-prefix
+                      (replace-regexp-in-string " " "+" url))))
   (url-retrieve url 'eww-render (list url)))
 
 ;;;###autoload
-- 
1.7.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-w-key-launches-external-browser-for-current-page-url.patch --]
[-- Type: text/x-diff, Size: 1731 bytes --]

From 8e1cb8158dee5d7b65a2e04748fb0e47a7023cb2 Mon Sep 17 00:00:00 2001
From: Ivan Kanis <ivan@tao>
Date: Sun, 23 Jun 2013 18:44:40 +0200
Subject: [PATCH 2/3] 'w' key launches external browser for current page url

---
 emacs/gnus/eww.el |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/emacs/gnus/eww.el b/emacs/gnus/eww.el
index 4fc9fe0..1b028b1 100644
--- a/emacs/gnus/eww.el
+++ b/emacs/gnus/eww.el
@@ -48,6 +48,12 @@
   :group 'eww
   :type 'string)
 
+(defcustom eww-external-browser 'browse-url-firefox
+  "Function called to launch external browser.
+It will be used when emacs runs on neither Windows or Mac."
+  :group 'eww
+  :type 'function)
+
 (defface eww-form-submit
   '((((type x w32 ns) (class color))	; Like default mode line
      :box (:line-width 2 :style released-button)
@@ -313,6 +319,7 @@
     (define-key map "p" 'eww-previous-url)
     (define-key map "u" 'eww-up-url)
     (define-key map "t" 'eww-top-url)
+    (define-key map "w" 'eww-browse-with-external-browser)
     map))
 
 (define-derived-mode eww-mode nil "eww"
@@ -819,6 +826,19 @@ appears in a <link> or <a> tag."
 	"?"
 	(mm-url-encode-www-form-urlencoded values))))))
 
+(defun eww-browse-with-external-browser ()
+  "Browse URL with external browser.
+It support Windows and Mac then calls the function specified in
+ `eww-external-browser'."
+  (interactive)
+  (let ((url eww-current-url))
+    (cond ((eq system-type 'windows-nt)
+           (browse-url-default-windows-browser url))
+          ((eq system-type 'darwin)
+           (browse-url-default-macosx-browser url))
+          (t
+           (funcall eww-external-browser url)))))
+
 (provide 'eww)
 
 ;;; eww.el ends here
-- 
1.7.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-C-c-C-c-submit-current-form.patch --]
[-- Type: text/x-diff, Size: 1898 bytes --]

From 885156af074991ab9a003a641ec1e82d46fc8d78 Mon Sep 17 00:00:00 2001
From: Ivan Kanis <ivan@tao>
Date: Sun, 23 Jun 2013 18:50:20 +0200
Subject: [PATCH 3/3] C-c C-c submit current form

---
 emacs/gnus/eww.el |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/emacs/gnus/eww.el b/emacs/gnus/eww.el
index 1b028b1..959fc4d 100644
--- a/emacs/gnus/eww.el
+++ b/emacs/gnus/eww.el
@@ -405,12 +405,14 @@ appears in a <link> or <a> tag."
 (defvar eww-submit-map
   (let ((map (make-sparse-keymap)))
     (define-key map "\r" 'eww-submit)
+    (define-key map [(control c) (control c)] 'eww-submit)
     map))
 
 (defvar eww-checkbox-map
   (let ((map (make-sparse-keymap)))
     (define-key map [space] 'eww-toggle-checkbox)
     (define-key map "\r" 'eww-toggle-checkbox)
+    (define-key map [(control c) (control c)] 'eww-submit)
     map))
 
 (defvar eww-text-map
@@ -418,6 +420,7 @@ appears in a <link> or <a> tag."
     (set-keymap-parent map text-mode-map)
     (define-key map "\r" 'eww-submit)
     (define-key map [(control a)] 'eww-beginning-of-text)
+    (define-key map [(control c) (control c)] 'eww-submit)
     (define-key map [(control e)] 'eww-end-of-text)
     (define-key map [tab] 'shr-next-link)
     (define-key map [backtab] 'shr-previous-link)
@@ -427,6 +430,7 @@ appears in a <link> or <a> tag."
   (let ((map (make-keymap)))
     (set-keymap-parent map text-mode-map)
     (define-key map "\r" 'forward-line)
+    (define-key map [(control c) (control c)] 'eww-submit)
     (define-key map [tab] 'shr-next-link)
     (define-key map [backtab] 'shr-previous-link)
     map))
@@ -434,6 +438,7 @@ appears in a <link> or <a> tag."
 (defvar eww-select-map
   (let ((map (make-sparse-keymap)))
     (define-key map "\r" 'eww-change-select)
+    (define-key map [(control c) (control c)] 'eww-submit)
     map))
 
 (defun eww-beginning-of-text ()
-- 
1.7.1


             reply	other threads:[~2013-06-23 16:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-23 16:58 Ivan Kanis [this message]
2013-06-23 18:29 ` [PATCH] eww improvements Lars Magne Ingebrigtsen
2013-06-23 21:48   ` Rüdiger Sonderfeld
2013-06-23 21:52     ` Lars Magne Ingebrigtsen
     [not found]       ` <13724493.P5Ma8CTG7m@descartes>
2013-06-24 13:58         ` Lars Magne Ingebrigtsen
2013-06-24  5:24     ` Ivan Kanis
2013-06-24 11:14       ` Rüdiger Sonderfeld
2013-06-24 13:03         ` Ivan Kanis
2013-06-24 13:18           ` Rüdiger Sonderfeld
2013-06-24 17:01             ` Ivan Kanis
2013-06-24 17:40               ` Lars Magne Ingebrigtsen
2013-06-25  6:07 ` Juri Linkov
2013-06-25  6:29   ` Ivan Kanis
2013-06-25 19:26   ` Lars Magne Ingebrigtsen
2013-06-25 20:15     ` Ivan Kanis
2013-06-25 20:20       ` Lars Magne Ingebrigtsen
2013-06-25 20:22       ` Ivan Kanis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8738s8ix1k.fsf@kanis.fr \
    --to=ivan@kanis.fr \
    --cc=emacs-devel@gnu.org \
    --cc=lars.grunewaldt@osnanet.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.