* eww @ 2013-06-16 14:53 Lars Magne Ingebrigtsen 2013-06-16 15:21 ` eww Adam Sjøgren ` (4 more replies) 0 siblings, 5 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-16 14:53 UTC (permalink / raw) To: emacs-devel; +Cc: ding eww probably has a lot of stuff that could still be fixed up, but the basics are working now. That is, you can search for stuff on Google and visit Wikipedia. :-) I wrote it up a bit here: http://lars.ingebrigtsen.no/2013/06/eww.html -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 14:53 eww Lars Magne Ingebrigtsen @ 2013-06-16 15:21 ` Adam Sjøgren 2013-06-16 15:29 ` eww Lars Magne Ingebrigtsen 2013-06-18 2:19 ` eww Tom Tromey ` (3 subsequent siblings) 4 siblings, 1 reply; 185+ messages in thread From: Adam Sjøgren @ 2013-06-16 15:21 UTC (permalink / raw) To: emacs-devel; +Cc: ding Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > eww probably has a lot of stuff that could still be fixed up, but the > basics are working now. That is, you can search for stuff on Google and > visit Wikipedia. :-) Cool! It looks like input elements are supported, but textarea less so? * http://koldfront.dk/misc/browsers/textarea.html Best regards, Adam -- "Tell them to give it to Donovan." Adam Sjøgren asjo@koldfront.dk ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 15:21 ` eww Adam Sjøgren @ 2013-06-16 15:29 ` Lars Magne Ingebrigtsen 2013-06-16 15:46 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-16 15:29 UTC (permalink / raw) To: Adam Sjøgren; +Cc: emacs-devel, ding asjo@koldfront.dk (Adam Sjøgren) writes: > It looks like input elements are supported, but textarea less so? > > * http://koldfront.dk/misc/browsers/textarea.html Ah, yeah. I forgot about textarea. I'll add that. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 15:29 ` eww Lars Magne Ingebrigtsen @ 2013-06-16 15:46 ` Lars Magne Ingebrigtsen 2013-06-16 17:01 ` eww Dmitry Gutov 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-16 15:46 UTC (permalink / raw) To: Adam Sjøgren; +Cc: ding, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: >> * http://koldfront.dk/misc/browsers/textarea.html > > Ah, yeah. I forgot about textarea. I'll add that. I'm using widget.el to do the inputs, and the `text' type seems to be appropriate: --- This is just like `editable-field', but intended for multiline text fields. The default `:keymap' is `widget-text-keymap', which does not rebind the <RET> key. --- But how does one specify the height of the text field? There's the :size parameter, bit that's only the width, apparently... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 15:46 ` eww Lars Magne Ingebrigtsen @ 2013-06-16 17:01 ` Dmitry Gutov 2013-06-16 17:06 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Dmitry Gutov @ 2013-06-16 17:01 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Adam Sjøgren, ding, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > But how does one specify the height of the text field? There's the > :size parameter, bit that's only the width, apparently... <textarea> has `rows': https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea But the height can be also specified via CSS. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 17:01 ` eww Dmitry Gutov @ 2013-06-16 17:06 ` Lars Magne Ingebrigtsen 2013-06-17 21:00 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-16 17:06 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Adam Sjøgren, ding, emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: >> But how does one specify the height of the text field? There's the >> :size parameter, bit that's only the width, apparently... > > <textarea> has `rows': > https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea I meant in the widget.el specification. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 17:06 ` eww Lars Magne Ingebrigtsen @ 2013-06-17 21:00 ` Lars Magne Ingebrigtsen 2013-06-17 21:13 ` eww Stefan Monnier ` (2 more replies) 0 siblings, 3 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-17 21:00 UTC (permalink / raw) To: emacs-devel; +Cc: ding I spent some time doing rendering optimisations in shr today, including the `add-face-text-properties' C-level functionality. That, combined with various caching strategies and trying to avoid doing unnecessary work when computing how tables should be rendered has made viewing a typical Wikipedia page 4x faster or something. So it's still slow, but it's getting more useful. There's still probably bugs in there, though. Give it a whirl: M-x eww RET google.com -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 21:00 ` eww Lars Magne Ingebrigtsen @ 2013-06-17 21:13 ` Stefan Monnier 2013-06-17 21:30 ` eww Lars Magne Ingebrigtsen 2013-06-17 23:35 ` eww Ted Zlatanov 2013-06-18 12:09 ` eww Thomas Fitzsimmons 2 siblings, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2013-06-17 21:13 UTC (permalink / raw) To: emacs-devel > I spent some time doing rendering optimisations in shr today, including > the `add-face-text-properties' C-level functionality. That, combined > with various caching strategies and trying to avoid doing unnecessary > work when computing how tables should be rendered has made viewing a > typical Wikipedia page 4x faster or something. I really like it. Of course, I don't see why it's in lisp/gnus/ rather than some other place. > So it's still slow, but it's getting more useful. There's still > probably bugs in there, though. Give it a whirl: > M-x eww RET google.com I try and stay away from Google, but `eww' doesn't work well with duckduckgo.com (my current least bad choice), it seems. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 21:13 ` eww Stefan Monnier @ 2013-06-17 21:30 ` Lars Magne Ingebrigtsen 2013-06-17 22:04 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-17 21:30 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > I really like it. Of course, I don't see why it's in lisp/gnus/ rather > than some other place. It was just convenient to put it in the Gnus repo while doing the initial development, since shr had to be changed at the same time, and Gnus is the primary (or only) user of shr. But both shr and eww should be moved to lisp/net. >> So it's still slow, but it's getting more useful. There's still >> probably bugs in there, though. Give it a whirl: > >> M-x eww RET google.com I forgot that all the latest changes haven't been folded into Emacs bzr yet, so perhaps one should hold off testing until that happens. :-) > I try and stay away from Google, but `eww' doesn't work well with > duckduckgo.com (my current least bad choice), it seems. That doesn't work at all, apparently. I'll have a look what's going on there... looks like eww is rendering the form completely wrong. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 21:30 ` eww Lars Magne Ingebrigtsen @ 2013-06-17 22:04 ` Lars Magne Ingebrigtsen 2013-06-17 22:39 ` eww Rasmus 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-17 22:04 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > That doesn't work at all, apparently. I'll have a look what's going on > there... looks like eww is rendering the form completely wrong. Ok; I've now gotten duckduckgo to work. It was a combination of different rendering bugs and calling widget-convert on the wrong bits. But the result page displays a problem related to not fetching external CSS before rendering. shr doesn't render elements that have "diplay: none" in style sheets embedded in the page, but eww doesn't fetch externally linked style sheets. And the duckduckgo result page apparently displays a hidden input field at the start of the page, for some reason or other, so it looks a bit confusing in eww. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 22:04 ` eww Lars Magne Ingebrigtsen @ 2013-06-17 22:39 ` Rasmus 2013-06-17 22:43 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Rasmus @ 2013-06-17 22:39 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > >> That doesn't work at all, apparently. I'll have a look what's going on >> there... looks like eww is rendering the form completely wrong. > > Ok; I've now gotten duckduckgo to work. It was a combination of > different rendering bugs and calling widget-convert on the wrong bits. > > But the result page displays a problem related to not fetching external > CSS before rendering. shr doesn't render elements that have "diplay: > none" in style sheets embedded in the page, but eww doesn't fetch > externally linked style sheets. And the duckduckgo result page > apparently displays a hidden input field at the start of the page, for > some reason or other, so it looks a bit confusing in eww. Speaking of search engines, I tested startpage.com in eww from the latest bzr pull of emacs (not Gnus), and the search box doesn't appear. Oh, and eww seems quite enjoyable. Thanks! –Rasmus -- Don't panic!!! ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 22:39 ` eww Rasmus @ 2013-06-17 22:43 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-17 22:43 UTC (permalink / raw) To: Rasmus; +Cc: emacs-devel Rasmus <rasmus@gmx.us> writes: > Speaking of search engines, I tested startpage.com in eww from the > latest bzr pull of emacs (not Gnus), and the search box doesn't > appear. Is that after the changes that Katsumi pushed half an hour ago? The page seems to work for me... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 21:00 ` eww Lars Magne Ingebrigtsen 2013-06-17 21:13 ` eww Stefan Monnier @ 2013-06-17 23:35 ` Ted Zlatanov 2013-06-18 12:09 ` eww Thomas Fitzsimmons 2 siblings, 0 replies; 185+ messages in thread From: Ted Zlatanov @ 2013-06-17 23:35 UTC (permalink / raw) To: ding; +Cc: emacs-devel On Mon, 17 Jun 2013 23:00:17 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> I spent some time doing rendering optimisations in shr today, including LMI> the `add-face-text-properties' C-level functionality. That, combined LMI> with various caching strategies and trying to avoid doing unnecessary LMI> work when computing how tables should be rendered has made viewing a LMI> typical Wikipedia page 4x faster or something. LMI> So it's still slow, but it's getting more useful. There's still LMI> probably bugs in there, though. Give it a whirl: LMI> M-x eww RET google.com You should add commentary with short instructions on making it the default URL browse action in Gnus. It's pretty awesome otherwise. Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-17 21:00 ` eww Lars Magne Ingebrigtsen 2013-06-17 21:13 ` eww Stefan Monnier 2013-06-17 23:35 ` eww Ted Zlatanov @ 2013-06-18 12:09 ` Thomas Fitzsimmons 2013-06-18 14:57 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:21 ` eww Tom Tromey 2 siblings, 2 replies; 185+ messages in thread From: Thomas Fitzsimmons @ 2013-06-18 12:09 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > I spent some time doing rendering optimisations in shr today, including > the `add-face-text-properties' C-level functionality. That, combined > with various caching strategies and trying to avoid doing unnecessary > work when computing how tables should be rendered has made viewing a > typical Wikipedia page 4x faster or something. > > So it's still slow, but it's getting more useful. There's still > probably bugs in there, though. Give it a whirl: > > M-x eww RET google.com This is fantastic! I'm going to try to use it wherever Javascript is not a hard requirement. Have you considered adopting the same default keybindings as Conkeror? Thomas ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 12:09 ` eww Thomas Fitzsimmons @ 2013-06-18 14:57 ` Lars Magne Ingebrigtsen 2013-06-18 17:02 ` eww Thomas Fitzsimmons 2013-06-18 17:21 ` eww Tom Tromey 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 14:57 UTC (permalink / raw) To: Thomas Fitzsimmons; +Cc: emacs-devel Thomas Fitzsimmons <fitzsim@fitzsim.org> writes: > Have you considered adopting the same default keybindings as Conkeror? I have no idea what those are, so no. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 14:57 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 17:02 ` Thomas Fitzsimmons 2013-06-19 8:59 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Thomas Fitzsimmons @ 2013-06-18 17:02 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > Thomas Fitzsimmons <fitzsim@fitzsim.org> writes: > >> Have you considered adopting the same default keybindings as Conkeror? > > I have no idea what those are, so no. :-) Here is a page with exampe key bindings: http://www.conkeror.org/QuickStart which eww renders nicely :-) Conkeror has solved a bunch of problems when it comes to providing an Emacs-like interface to the web, so it could offer inspiration for eww's interface. Thomas ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 17:02 ` eww Thomas Fitzsimmons @ 2013-06-19 8:59 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 8:59 UTC (permalink / raw) To: Thomas Fitzsimmons; +Cc: emacs-devel Thomas Fitzsimmons <fitzsim@fitzsim.org> writes: > Here is a page with exampe key bindings: > > http://www.conkeror.org/QuickStart Those keybindings don't seem that obvious to me. For instance, `g' for "go to url" when lots of other Emacs modes uses `g' for "reload". Etc. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 12:09 ` eww Thomas Fitzsimmons 2013-06-18 14:57 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 17:21 ` Tom Tromey 2013-06-19 6:53 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Tom Tromey @ 2013-06-18 17:21 UTC (permalink / raw) To: Thomas Fitzsimmons; +Cc: emacs-devel Thomas> This is fantastic! I'm going to try to use it wherever Javascript is Thomas> not a hard requirement. One hesitates to mention http://code.google.com/p/ejacs/ Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 17:21 ` eww Tom Tromey @ 2013-06-19 6:53 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 6:53 UTC (permalink / raw) To: Tom Tromey; +Cc: Thomas Fitzsimmons, emacs-devel Tom Tromey <tromey@redhat.com> writes: > Thomas> This is fantastic! I'm going to try to use it wherever Javascript is > Thomas> not a hard requirement. > > One hesitates to mention http://code.google.com/p/ejacs/ shr doesn't maintain the DOM -- it just renders the HTML as text. So there's nothing for a Javascript engine to work against. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 14:53 eww Lars Magne Ingebrigtsen 2013-06-16 15:21 ` eww Adam Sjøgren @ 2013-06-18 2:19 ` Tom Tromey 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen 2013-06-18 11:32 ` eww joakim ` (2 subsequent siblings) 4 siblings, 2 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-18 2:19 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel >>>>> "Lars" == Lars Magne Ingebrigtsen <larsi@gnus.org> writes: Lars> eww probably has a lot of stuff that could still be fixed up, but Lars> the basics are working now. That is, you can search for stuff on Lars> Google and visit Wikipedia. :-) Very nice. I played with it a bit. It doesn't render parts of the gdb manual very nicely. For example in the reverse execution node, the info looks like: ================================================================ If you are debugging in a target environment that supports reverse execution, GDB provides the following commands. `reverse-continue [IGNORE-COUNT]' `rc [IGNORE-COUNT]' Beginning at the point where your program last stopped, start executing in reverse. Reverse execution will stop for breakpoints and synchronous exceptions (signals), just like normal execution. Behavior of asynchronous signals depends on the target environment. ================================================================ but eww renders it as ================================================================ If you are debugging in a target environment that supports reverse execution, gdb provides the following commands. reverse-continue [ignore-count]rc [ignore-count]Beginning at the point where your program last stopped, start executing in reverse. Reverse execution will stop for breakpoints and synchronous exceptions (signals), just like normal execution. Behavior of asynchronous signals depends on the target environment. ================================================================ Also, please consider the appended patch. It makes eww pick up on <link> and <a rel=...> to give it a more info-ish flavor. I'm interested in the possibility of replacing info with html+eww. The patch isn't perfect but I thought I'd see what you think before going any further. Tom === modified file 'lisp/gnus/eww.el' --- lisp/gnus/eww.el 2013-06-17 23:11:40 +0000 +++ lisp/gnus/eww.el 2013-06-18 02:06:16 +0000 @@ -56,6 +56,15 @@ "Title of current page.") (defvar eww-history nil) +(defvar eww-next-url nil) +(make-variable-buffer-local 'eww-next-url) +(defvar eww-previous-url nil) +(make-variable-buffer-local 'eww-previous-url) +(defvar eww-up-url nil) +(make-variable-buffer-local 'eww-up-url) +(defvar eww-top-url nil) +(make-variable-buffer-local 'eww-top-url) + ;;;###autoload (defun eww (url) "Fetch URL and render the page." @@ -64,6 +73,12 @@ (setq url (concat "http://" url))) (url-retrieve url 'eww-render (list url))) +;;;###autoload +(defun eww-open-file (file) + (interactive "fFile: ") + (let ((browse-url-browser-function #'eww-browse-url)) + (browse-url-of-file (expand-file-name file)))) + (defun eww-detect-charset (html-p) (let ((case-fold-search t) (pt (point))) @@ -80,6 +95,10 @@ (let ((redirect (plist-get status :redirect))) (when redirect (setq url redirect))) + (setq eww-next-url nil) + (setq eww-previous-url nil) + (setq eww-up-url nil) + (setq eww-top-url nil) (let* ((headers (eww-parse-headers)) (shr-target-id (and (string-match "#\\(.*\\)" url) @@ -146,10 +165,32 @@ (input . eww-tag-input) (textarea . eww-tag-textarea) (body . eww-tag-body) - (select . eww-tag-select)))) + (select . eww-tag-select) + (link . eww-tag-link) + (a . eww-tag-a)))) (shr-insert-document document) (eww-convert-widgets)) - (goto-char (point-min)))) + (goto-char (point-min)))) + +(defun eww-handle-link (cont) + (let* ((rel (assq :rel cont)) + (href (assq :href cont)) + (where (assoc (cdr rel) + '(("next" . eww-next-url) + ("previous" . eww-previous-url) + ("start" . eww-top-url) + ("up" . eww-up-url))))) + (and href + where + (set (cdr where) (cdr href))))) + +(defun eww-tag-link (cont) + (eww-handle-link cont) + (shr-generic cont)) + +(defun eww-tag-a (cont) + (eww-handle-link cont) + (shr-tag-a cont)) (defun eww-update-header-line-format () (if eww-header-line-format @@ -218,8 +259,11 @@ (define-key map [delete] 'scroll-down-command) (define-key map "\177" 'scroll-down-command) (define-key map " " 'scroll-up-command) + (define-key map "l" 'eww-back-url) + (define-key map "n" 'eww-next-url) (define-key map "p" 'eww-previous-url) - ;;(define-key map "n" 'eww-next-url) + (define-key map "u" 'eww-up-url) + (define-key map "t" 'eww-top-url) map)) (define-derived-mode eww-mode nil "eww" @@ -240,7 +284,7 @@ (setq eww-history nil) (kill-buffer (current-buffer))) -(defun eww-previous-url () +(defun eww-back-url () "Go to the previously displayed page." (interactive) (when (zerop (length eww-history)) @@ -248,6 +292,30 @@ (let ((prev (pop eww-history))) (url-retrieve (car prev) 'eww-render (list (car prev) (cadr prev))))) +(defun eww-next-url () + (interactive) + (if eww-next-url + (eww-browse-url (shr-expand-url eww-next-url eww-current-url)) + (error "No `next' on this node"))) + +(defun eww-previous-url () + (interactive) + (if eww-previous-url + (eww-browse-url (shr-expand-url eww-previous-url eww-current-url)) + (error "No `previous' on this node"))) + +(defun eww-up-url () + (interactive) + (if eww-up-url + (eww-browse-url (shr-expand-url eww-up-url eww-current-url)) + (error "No `up' on this node"))) + +(defun eww-top-url () + (interactive) + (if eww-top-url + (eww-browse-url (shr-expand-url eww-top-url eww-current-url)) + (error "No `top' on this node"))) + (defun eww-reload () "Reload the current page." (interactive) ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 2:19 ` eww Tom Tromey @ 2013-06-18 11:23 ` Lars Magne Ingebrigtsen 2013-06-18 14:34 ` eww Tom Tromey ` (2 more replies) 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen 1 sibling, 3 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 11:23 UTC (permalink / raw) To: Tom Tromey; +Cc: ding, emacs-devel Tom Tromey <tromey@redhat.com> writes: > It doesn't render parts of the gdb manual very nicely. > For example in the reverse execution node, the info looks like: > > ================================================================ > If you are debugging in a target environment that supports reverse > execution, GDB provides the following commands. > > `reverse-continue [IGNORE-COUNT]' > `rc [IGNORE-COUNT]' > Beginning at the point where your program last stopped, start > executing in reverse. Reverse execution will stop for breakpoints > and synchronous exceptions (signals), just like normal execution. > Behavior of asynchronous signals depends on the target environment. > ================================================================ Heh. This is because the manual uses the <dl>, <dd> and <dt> tags, which I didn't even know existed. :-) I've now added support for this. > Also, please consider the appended patch. It makes eww pick up on > <link> and <a rel=...> to give it a more info-ish flavor. I'm > interested in the possibility of replacing info with html+eww. Supporting <link> and <a rel=> is a good idea. The code looks good, but here's a couple of comments: > +(defvar eww-next-url nil) > +(make-variable-buffer-local 'eww-next-url) > +(defvar eww-previous-url nil) > +(make-variable-buffer-local 'eww-previous-url) > +(defvar eww-up-url nil) > +(make-variable-buffer-local 'eww-up-url) > +(defvar eww-top-url nil) > +(make-variable-buffer-local 'eww-top-url) I think that for package-specific variables like this we're supposed to use (set (make-local-variable 'eww-top-url) nil) in the mode setup instead, so that we're not making variables needlessly globally buffer-local. > +(defun eww-open-file (file) > + (interactive "fFile: ") > + (let ((browse-url-browser-function #'eww-browse-url)) > + (browse-url-of-file (expand-file-name file)))) Can't we just prepend "file://" to the file name and call `eww' directly? > +(defun eww-next-url () > + (interactive) > + (if eww-next-url > + (eww-browse-url (shr-expand-url eww-next-url eww-current-url)) > + (error "No `next' on this node"))) Perhaps say "page" instead of "node". -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 14:34 ` Tom Tromey 2013-06-18 15:01 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:39 ` eww Tom Tromey 2013-06-18 19:07 ` eww Stefan Monnier 2 siblings, 1 reply; 185+ messages in thread From: Tom Tromey @ 2013-06-18 14:34 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel Lars> Heh. This is because the manual uses the <dl>, <dd> and <dt> tags, Lars> which I didn't even know existed. :-) Lars> I've now added support for this. Thanks. On the same node in the gdb manual, on an 80-column terminal, some of the paragraph wrap improperly. E.g., shr renders one as: ================================================================ When you are debugging a program, it is not unusual to realize that you have gone too far, and some event of interest has already happened. If the target environment supports it, gdb can allow you to “rewind” the program by running i\ t backward. ================================================================ If you have 80 columns, the "it" at the end of the 3rd line is split in the middle. Can shr not use word-wrap? Anyhow, the wrapping code is complicated & spread out enough that I didn't look into it. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 14:34 ` eww Tom Tromey @ 2013-06-18 15:01 ` Lars Magne Ingebrigtsen 2013-06-18 15:43 ` eww Tom Tromey 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 15:01 UTC (permalink / raw) To: Tom Tromey; +Cc: ding, emacs-devel Tom Tromey <tromey@redhat.com> writes: > On the same node in the gdb manual, on an 80-column terminal, some of > the paragraph wrap improperly. E.g., shr renders one as: > > ================================================================ > When you are debugging a program, it is not unusual to realize that you have > gone too far, and some event of interest has already happened. If the target > environment supports it, gdb can allow you to “rewind” the program by running i\ > t > backward. > ================================================================ > > If you have 80 columns, the "it" at the end of the 3rd line is split in > the middle. > > Can shr not use word-wrap? Anyhow, the wrapping code is complicated & > spread out enough that I didn't look into it. Oh course shr wraps the text, but it was using `window-width' as the width, while it should have used one less than that. Fixed now. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:01 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 15:43 ` Tom Tromey 0 siblings, 0 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-18 15:43 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel >> Can shr not use word-wrap? Anyhow, the wrapping code is complicated & >> spread out enough that I didn't look into it. Lars> Oh course shr wraps the text, but it was using `window-width' as the Lars> width, while it should have used one less than that. Fixed now. Yeah, I was curious about why it doesn't use (setq word-wrap t) and then not insert hard newlines. Thanks for the fix. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:34 ` eww Tom Tromey @ 2013-06-18 14:39 ` Tom Tromey 2013-06-18 15:14 ` eww Lars Magne Ingebrigtsen 2013-06-18 19:07 ` eww Stefan Monnier 2 siblings, 1 reply; 185+ messages in thread From: Tom Tromey @ 2013-06-18 14:39 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel Lars> Supporting <link> and <a rel=> is a good idea. The code looks good, but Lars> here's a couple of comments: Thanks. Here's a version that addresses your comments and adds doc strings and a ChangeLog entry. Let me know what you think. Tom === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2013-06-18 11:24:16 +0000 +++ lisp/gnus/ChangeLog 2013-06-18 14:39:03 +0000 @@ -1,3 +1,16 @@ +2013-06-18 Tom Tromey <tromey@barimba> + + * eww.el (eww-next-url, eww-previous-url, eww-up-url, eww-top-url): + New defvars. + (eww-open-file): New defun. + (eww-render): Initialize new variables. + (eww-display-html): Handle "link" and "a". + (eww-handle-link, eww-tag-link, eww-tag-a): New defuns. + (eww-mode-map): Move "p" to "l". Bind "p", "n", "t", and "u". + (eww-back-url): Rename from eww-previous-url. + (eww-next-url, eww-previous-url, eww-up-url, eww-top-url): New + defuns. + 2013-06-18 Lars Magne Ingebrigtsen <larsi@gnus.org> * shr.el (shr-tag-table): Insert the images after the table, so that === modified file 'lisp/gnus/eww.el' --- lisp/gnus/eww.el 2013-06-18 09:29:20 +0000 +++ lisp/gnus/eww.el 2013-06-18 14:39:01 +0000 @@ -56,6 +56,11 @@ "Title of current page.") (defvar eww-history nil) +(defvar eww-next-url nil) +(defvar eww-previous-url nil) +(defvar eww-up-url nil) +(defvar eww-top-url nil) + ;;;###autoload (defun eww (url) "Fetch URL and render the page." @@ -64,10 +69,20 @@ (setq url (concat "http://" url))) (url-retrieve url 'eww-render (list url))) +;;;###autoload +(defun eww-open-file (file) + "Render a file using EWW." + (interactive "fFile: ") + (eww (concat "file://" (expand-file-name file)))) + (defun eww-render (status url &optional point) (let ((redirect (plist-get status :redirect))) (when redirect (setq url redirect))) + (set (make-local-variable 'eww-next-url) nil) + (set (make-local-variable 'eww-previous-url) nil) + (set (make-local-variable 'eww-up-url) nil) + (set (make-local-variable 'eww-top-url) nil) (let* ((headers (eww-parse-headers)) (shr-target-id (and (string-match "#\\(.*\\)" url) @@ -146,11 +161,33 @@ (input . eww-tag-input) (textarea . eww-tag-textarea) (body . eww-tag-body) - (select . eww-tag-select)))) + (select . eww-tag-select) + (link . eww-tag-link) + (a . eww-tag-a)))) (shr-insert-document document) (eww-convert-widgets)) (goto-char (point-min)))) +(defun eww-handle-link (cont) + (let* ((rel (assq :rel cont)) + (href (assq :href cont)) + (where (assoc (cdr rel) + '(("next" . eww-next-url) + ("previous" . eww-previous-url) + ("start" . eww-top-url) + ("up" . eww-up-url))))) + (and href + where + (set (cdr where) (cdr href))))) + +(defun eww-tag-link (cont) + (eww-handle-link cont) + (shr-generic cont)) + +(defun eww-tag-a (cont) + (eww-handle-link cont) + (shr-tag-a cont)) + (defun eww-update-header-line-format () (if eww-header-line-format (setq header-line-format (format-spec eww-header-line-format @@ -218,8 +255,11 @@ (define-key map [delete] 'scroll-down-command) (define-key map "\177" 'scroll-down-command) (define-key map " " 'scroll-up-command) + (define-key map "l" 'eww-back-url) + (define-key map "n" 'eww-next-url) (define-key map "p" 'eww-previous-url) - ;;(define-key map "n" 'eww-next-url) + (define-key map "u" 'eww-up-url) + (define-key map "t" 'eww-top-url) map)) (define-derived-mode eww-mode nil "eww" @@ -240,7 +280,7 @@ (setq eww-history nil) (kill-buffer (current-buffer))) -(defun eww-previous-url () +(defun eww-back-url () "Go to the previously displayed page." (interactive) (when (zerop (length eww-history)) @@ -248,6 +288,42 @@ (let ((prev (pop eww-history))) (url-retrieve (car prev) 'eww-render (list (car prev) (cadr prev))))) +(defun eww-next-url () + "Go to the page marked `next'. +A page is marked `next' if rel=\"next\" appears in a <link> +or <a> tag." + (interactive) + (if eww-next-url + (eww-browse-url (shr-expand-url eww-next-url eww-current-url)) + (error "No `next' on this page"))) + +(defun eww-previous-url () + "Go to the page marked `previous'. +A page is marked `previous' if rel=\"previous\" appears in a <link> +or <a> tag." + (interactive) + (if eww-previous-url + (eww-browse-url (shr-expand-url eww-previous-url eww-current-url)) + (error "No `previous' on this page"))) + +(defun eww-up-url () + "Go to the page marked `up'. +A page is marked `up' if rel=\"up\" appears in a <link> +or <a> tag." + (interactive) + (if eww-up-url + (eww-browse-url (shr-expand-url eww-up-url eww-current-url)) + (error "No `up' on this page"))) + +(defun eww-top-url () + "Go to the page marked `top'. +A page is marked `top' if rel=\"start\" appears in a <link> +or <a> tag." + (interactive) + (if eww-top-url + (eww-browse-url (shr-expand-url eww-top-url eww-current-url)) + (error "No `top' on this page"))) + (defun eww-reload () "Reload the current page." (interactive) ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 14:39 ` eww Tom Tromey @ 2013-06-18 15:14 ` Lars Magne Ingebrigtsen 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen 2013-06-18 16:17 ` eww Tom Tromey 0 siblings, 2 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 15:14 UTC (permalink / raw) To: Tom Tromey; +Cc: ding, emacs-devel Tom Tromey <tromey@redhat.com> writes: > Here's a version that addresses your comments and adds doc strings and a > ChangeLog entry. Let me know what you think. Looks good; applied. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:14 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 15:48 ` Lars Magne Ingebrigtsen 2013-06-18 17:40 ` eww Eli Zaretskii ` (4 more replies) 2013-06-18 16:17 ` eww Tom Tromey 1 sibling, 5 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 15:48 UTC (permalink / raw) To: emacs-devel Currently eww uses a single buffer, and whenever you ask it to display a new URL, it discards everything in the buffer. This means that when you want to return to the previous page, eww has to re-fetch and re-render the page. And you lose the data in <form>s you have filled out. Would it make more sense for eww to use new buffers every time? eww would have a backlog of, say, ten buffers, and going back to the previous page would just mean popping to the previous buffer. And it could use `bury-buffer' and rename the previous buffer to a name with something leading with " " when you go to a new page. Opinions? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 17:40 ` Eli Zaretskii 2013-06-19 1:14 ` eww Stephen J. Turnbull 2013-06-19 6:58 ` eww Lars Magne Ingebrigtsen 2013-06-18 18:04 ` eww Karl Fogel ` (3 subsequent siblings) 4 siblings, 2 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-18 17:40 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Date: Tue, 18 Jun 2013 17:48:47 +0200 > > Would it make more sense for eww to use new buffers every time? eww > would have a backlog of, say, ten buffers, and going back to the > previous page would just mean popping to the previous buffer. Why do you want to limit the number of buffers Emacs keeps? Other browsers don't, I think. When you go back to a previously visited URL, do you need to check if it's outdated? Do other browsers? If not, just displaying the same buffer is all you need to do. > And it could use `bury-buffer' and rename the previous buffer to a > name with something leading with " " when you go to a new page. I'm confused: don't you name each buffer according to the URL it shows? (No, I didn't yet try eww.el.) If so, the names are already different. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 17:40 ` eww Eli Zaretskii @ 2013-06-19 1:14 ` Stephen J. Turnbull 2013-06-19 6:58 ` eww Lars Magne Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Stephen J. Turnbull @ 2013-06-19 1:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Magne Ingebrigtsen, emacs-devel Eli Zaretskii writes: > Why do you want to limit the number of buffers Emacs keeps? C-x C-b, among others. Of course if the names have leading spaces, that's not a problem. > Other browsers don't, I think. They don't have generic buffer-listing facilities. > When you go back to a previously visited URL, do you need to check if > it's outdated? Yes, if it's expired. Expiration should be parsed from the HTTP headers and could be cached as a buffer-local. > Do other browsers? Good ones do. > > And it could use `bury-buffer' and rename the previous buffer to a > > name with something leading with " " when you go to a new page. > > I'm confused: don't you name each buffer according to the URL it > shows? (No, I didn't yet try eww.el.) If so, the names are already > different. index.html? Pages identified by long strings of query variables? ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 17:40 ` eww Eli Zaretskii 2013-06-19 1:14 ` eww Stephen J. Turnbull @ 2013-06-19 6:58 ` Lars Magne Ingebrigtsen 2013-06-19 14:50 ` eww Eli Zaretskii 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 6:58 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Why do you want to limit the number of buffers Emacs keeps? Other > browsers don't, I think. Other buffers don't keep the page around in memory at all, but most of them have some sort of caching ability -- by writing the HTML/CSS/etc do disk, and going back in history just fetches the data and re-renders it. > When you go back to a previously visited URL, do you need to check if > it's outdated? Do other browsers? Other browsers do, and I hate that behaviour. If I want to see the page I just saw, why shouldn't I be able to? Other browsers respect cache settings and (sensibly) don't write stuff to the disk cache if the server says it shouldn't. But Emacs could keep (some) buffers around and avoid the problem. There's a potential security issue here, though -- if the server said "don't cache this page", then it might be because there's secret stuff that we shouldn't keep around longer than the user expects it to be kept around. > I'm confused: don't you name each buffer according to the URL it > shows? No, the eww buffer is currently called "*eww*". -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 6:58 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 14:50 ` Eli Zaretskii 0 siblings, 0 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 14:50 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Date: Wed, 19 Jun 2013 08:58:36 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > Why do you want to limit the number of buffers Emacs keeps? Other > > browsers don't, I think. > > Other buffers don't keep the page around in memory at all, but most of > them have some sort of caching ability -- by writing the HTML/CSS/etc do > disk, and going back in history just fetches the data and re-renders it. Well, the best cache in Emacs is a buffer. ;-) ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:40 ` eww Eli Zaretskii @ 2013-06-18 18:04 ` Karl Fogel 2013-06-18 18:29 ` eww Eli Zaretskii 2013-06-18 19:00 ` eww Ted Zlatanov ` (2 subsequent siblings) 4 siblings, 1 reply; 185+ messages in thread From: Karl Fogel @ 2013-06-18 18:04 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: >Currently eww uses a single buffer, and whenever you ask it to display a >new URL, it discards everything in the buffer. This means that when you >want to return to the previous page, eww has to re-fetch and re-render >the page. And you lose the data in <form>s you have filled out. > >Would it make more sense for eww to use new buffers every time? eww >would have a backlog of, say, ten buffers, and going back to the >previous page would just mean popping to the previous buffer. And it >could use `bury-buffer' and rename the previous buffer to a name with >something leading with " " when you go to a new page. > >Opinions? I second the questions Eli asked, but FWIW: No reason to limit the number of buffers here. It makes sense to always keep them except when the user explicitly kills one (or sets some var indicating that eww should kill buffers). Each buffer has a "reload" keybinding, right? And when a user goes to a URL that eww already has a buffer for, it can reuse that buffer and do the reload. The edge case question is: if you have filled-out form data in a buffer, and then eww does a reload, should it toss your data? In that case, I think it makes sense to rename the original buffer -- the one with the filled-out form data -- to "buffer<N>" where N increases, and reload into "buffer". In other words, if someone panics and realizes they shouldn't have thrown away the novel they wrote in that gigantic text form, at least there is a way to recover it (from the "<N>" buffer). Very excited about eww! -K ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 18:04 ` eww Karl Fogel @ 2013-06-18 18:29 ` Eli Zaretskii 2013-06-19 7:13 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Eli Zaretskii @ 2013-06-18 18:29 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel EWW looks quite good, thanks. A few comments, based on 5 min of using it: . Mouse clicks on hyper links don't do what I'd expect in a Web browser. . Images embedded in the pages somehow get newlines before and after them, which looks ugly: each image is alone on its own line. E.g., in Wikipedia, look at any page that shows formulae. Ugly. . Need more key bindings (I see only 3 for now). E.g., using 'p' to go to the previous URL should be augmented by at least M-<left>. . Buttons on the tool bar are sorely missed. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 18:29 ` eww Eli Zaretskii @ 2013-06-19 7:13 ` Lars Magne Ingebrigtsen 2013-06-19 8:43 ` eww Andreas Schwab ` (2 more replies) 0 siblings, 3 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 7:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > EWW looks quite good, thanks. A few comments, based on 5 min of using > it: > > . Mouse clicks on hyper links don't do what I'd expect in a Web > browser. I've now bound mouse-1: + (define-key map [down-mouse-1] 'shr-browse-url) But I seem to remember there being different conventions for what mouse button should be the "action" button? Or is binding mouse-1 still the right thing to do? Speaking of keymaps, eww/shr uses the `local-map' text property to bind actions on links. Is there a way to make the major mode map keys work even if you're standing on text with `local-map'? That is, eww-mode binds (for instance) the `g' key (for reloading the page), but if I hit `g' on text that has a `local-map' text property (and which doesn't bind `g' itself), it's then bound to `self-insert-command', which is not what I want. > . Images embedded in the pages somehow get newlines before and after > them, which looks ugly: each image is alone on its own line. E.g., > in Wikipedia, look at any page that shows formulae. Ugly. Yes. There's two problems: 1) Images are inserted asynchronously, so shr has no idea how big the images are when it renders the text. shr could wait until it's loaded all the images, but that would be slow and awkward, or it could re-flow the text, which it doesn't have enough data at that point to do. 2) When rendering tables, shr tries to keep everything lined up. Even if it knew how big the images are (which it doesn't), the Emacs display engine isn't powerful enough to line stuff up vertically when there's elements of different sizes. So it can't. > . Need more key bindings (I see only 3 for now). E.g., using 'p' to > go to the previous URL should be augmented by at least M-<left>. I don't want to re-bind any common cursor-related keys. > . Buttons on the tool bar are sorely missed. What kind of buttons? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:13 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 8:43 ` Andreas Schwab 2013-06-19 9:03 ` eww Lars Magne Ingebrigtsen 2013-06-19 12:27 ` eww Stefan Monnier 2013-06-19 14:55 ` eww Eli Zaretskii 2 siblings, 1 reply; 185+ messages in thread From: Andreas Schwab @ 2013-06-19 8:43 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > Is there a way to make the major mode map keys work even if you're > standing on text with `local-map'? Make the current local map the parent of the local-map property. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 8:43 ` eww Andreas Schwab @ 2013-06-19 9:03 ` Lars Magne Ingebrigtsen 2013-06-19 9:13 ` eww Andreas Schwab 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 9:03 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, emacs-devel Andreas Schwab <schwab@suse.de> writes: >> Is there a way to make the major mode map keys work even if you're >> standing on text with `local-map'? > > Make the current local map the parent of the local-map property. Hm... the button keymap (in this case, `shr-map') would then have to be copied in some sort of setup function, because `set-keymap-parent' is destructive, isn't it? And you can use shr to render HTML i various modes. If you use overlays with :keymap, then Emacs will automatically "fall through" the map if you hit a key which isn't bound in the :keymap keymap, I think. Would it be possible to make text properties `local-map' work the same way? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 9:03 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 9:13 ` Andreas Schwab 0 siblings, 0 replies; 185+ messages in thread From: Andreas Schwab @ 2013-06-19 9:13 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > Would it be possible to make text properties `local-map' work the same > way? What's wrong with the keymap property? Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:13 ` eww Lars Magne Ingebrigtsen 2013-06-19 8:43 ` eww Andreas Schwab @ 2013-06-19 12:27 ` Stefan Monnier 2013-06-19 13:50 ` eww Stefan Monnier 2013-06-19 14:02 ` eww Lars Magne Ingebrigtsen 2013-06-19 14:55 ` eww Eli Zaretskii 2 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 12:27 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel > I've now bound mouse-1: > + (define-key map [down-mouse-1] 'shr-browse-url) Please don't do that and use the follow-link thingy instead, so that it obeys mouse-1-click-follows-link. > Speaking of keymaps, eww/shr uses the `local-map' text property to bind > actions on links. Don't. You want to use the `keymap' property (the `local-map' property is mostly a historical accident). > Is there a way to make the major mode map keys work > even if you're standing on text with `local-map'? Yes: use the `keymap' property. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 12:27 ` eww Stefan Monnier @ 2013-06-19 13:50 ` Stefan Monnier 2013-06-19 14:02 ` eww Lars Magne Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 13:50 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel > Don't. You want to use the `keymap' property (the `local-map' property > is mostly a historical accident). Of course, the `local-map' can be occasionally useful. E.g. for editable fields in a buffer that's mostly read-only. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 12:27 ` eww Stefan Monnier 2013-06-19 13:50 ` eww Stefan Monnier @ 2013-06-19 14:02 ` Lars Magne Ingebrigtsen 2013-06-21 14:03 ` eww Stefan Monnier 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 14:02 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I've now bound mouse-1: >> + (define-key map [down-mouse-1] 'shr-browse-url) > > Please don't do that and use the follow-link thingy instead, so that it > obeys mouse-1-click-follows-link. I tried grepping around. Should that be? (define-key map [follow-link] 'mouse-face) It doesn't seem to do anything... >> Is there a way to make the major mode map keys work >> even if you're standing on text with `local-map'? > > Yes: use the `keymap' property. Well, that was easy. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 14:02 ` eww Lars Magne Ingebrigtsen @ 2013-06-21 14:03 ` Stefan Monnier 2013-06-25 19:57 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2013-06-21 14:03 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel >>> I've now bound mouse-1: >>> + (define-key map [down-mouse-1] 'shr-browse-url) >> Please don't do that and use the follow-link thingy instead, so that it >> obeys mouse-1-click-follows-link. > I tried grepping around. Should that be? > (define-key map [follow-link] 'mouse-face) Yes. > It doesn't seem to do anything... It should. Maybe you put it in the wrong map? Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-21 14:03 ` eww Stefan Monnier @ 2013-06-25 19:57 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-25 19:57 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I tried grepping around. Should that be? >> (define-key map [follow-link] 'mouse-face) > > Yes. > >> It doesn't seem to do anything... > > It should. Maybe you put it in the wrong map? I don't think so -- it's in the keymap that shr puts on links, and the rest of the keys work. But hitting mouse-1, for instance, just gives me: <down-mouse-1> at that spot runs the command mouse-drag-region, which is an interactive compiled Lisp function in `mouse.el'. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:13 ` eww Lars Magne Ingebrigtsen 2013-06-19 8:43 ` eww Andreas Schwab 2013-06-19 12:27 ` eww Stefan Monnier @ 2013-06-19 14:55 ` Eli Zaretskii 2013-06-19 19:46 ` eww Lars Magne Ingebrigtsen 2 siblings, 1 reply; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 14:55 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Date: Wed, 19 Jun 2013 09:13:07 +0200 > > > . Images embedded in the pages somehow get newlines before and after > > them, which looks ugly: each image is alone on its own line. E.g., > > in Wikipedia, look at any page that shows formulae. Ugly. > > Yes. There's two problems: > > 1) Images are inserted asynchronously, so shr has no idea how big the > images are when it renders the text. Don't you have some pixel size information about each image in the page? > shr could wait until it's loaded all the images, but that would be > slow and awkward, or it could re-flow the text, which it doesn't > have enough data at that point to do. You could have an option to make it wait, I personally don't believe it will slow things down. Alternatively, reflowing when an image is inserted doesn't sound too hard, either. > 2) When rendering tables, shr tries to keep everything lined up. Even > if it knew how big the images are (which it doesn't), the Emacs display > engine isn't powerful enough to line stuff up vertically when there's > elements of different sizes. So it can't. Does the 'space' display spec fit that bill? > > . Buttons on the tool bar are sorely missed. > > What kind of buttons? At the very least, Back, Forward, Reload, and Cancel. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 14:55 ` eww Eli Zaretskii @ 2013-06-19 19:46 ` Lars Magne Ingebrigtsen 2013-06-19 19:59 ` eww Eli Zaretskii 2013-06-19 20:22 ` eww Stefan Monnier 0 siblings, 2 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 19:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Don't you have some pixel size information about each image in the > page? Usually not. > You could have an option to make it wait, I personally don't believe > it will slow things down. Alternatively, reflowing when an image is > inserted doesn't sound too hard, either. Fetching and inserting images is a huge slow-down. I've been using shr to read blogs for years, and the images sometimes arrive, and sometimes they don't. >> 2) When rendering tables, shr tries to keep everything lined up. Even >> if it knew how big the images are (which it doesn't), the Emacs display >> engine isn't powerful enough to line stuff up vertically when there's >> elements of different sizes. So it can't. > > Does the 'space' display spec fit that bill? Hm. I didn't know about that one, but it seems promising. However, images are displayed thusly: (add-text-properties start (point) `(display ,(if slice (list (cons 'slice slice) image) image) rear-nonsticky (display))))) Can `display' have both an image and a `space' spec? >> What kind of buttons? > > At the very least, Back, Forward, Reload, and Cancel. Yeah, that makes sense. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 19:46 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 19:59 ` Eli Zaretskii 2013-06-19 20:13 ` eww Lars Magne Ingebrigtsen 2013-06-19 22:12 ` eww Johan Bockgård 2013-06-19 20:22 ` eww Stefan Monnier 1 sibling, 2 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 19:59 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Date: Wed, 19 Jun 2013 21:46:37 +0200 > > (add-text-properties start (point) > `(display ,(if slice > (list (cons 'slice slice) image) > image) rear-nonsticky (display))))) > > Can `display' have both an image and a `space' spec? I don't see why not. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 19:59 ` eww Eli Zaretskii @ 2013-06-19 20:13 ` Lars Magne Ingebrigtsen 2013-06-19 22:12 ` eww Johan Bockgård 1 sibling, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 20:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> Can `display' have both an image and a `space' spec? > > I don't see why not. I tried altering `insert-image' to the the following, and I got nothing but blankness: (add-text-properties start (point) `(display (list (space :align-to 40) ,(if slice (list (cons 'slice slice) image) image)) rear-nonsticky (display))))) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 19:59 ` eww Eli Zaretskii 2013-06-19 20:13 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 22:12 ` Johan Bockgård 1 sibling, 0 replies; 185+ messages in thread From: Johan Bockgård @ 2013-06-19 22:12 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Lars Magne Ingebrigtsen <larsi@gnus.org> >> Cc: emacs-devel@gnu.org >> Date: Wed, 19 Jun 2013 21:46:37 +0200 >> >> (add-text-properties start (point) >> `(display ,(if slice >> (list (cons 'slice slice) image) >> image) rear-nonsticky (display))))) >> >> Can `display' have both an image and a `space' spec? > > I don't see why not. (info "(elisp) Replacing Specs") If a list of display specifications includes more than one replacing display specification, the first overrides the rest. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 19:46 ` eww Lars Magne Ingebrigtsen 2013-06-19 19:59 ` eww Eli Zaretskii @ 2013-06-19 20:22 ` Stefan Monnier 1 sibling, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 20:22 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel > (add-text-properties start (point) > `(display ,(if slice > (list (cons 'slice slice) image) > image) rear-nonsticky (display))))) > Can `display' have both an image and a `space' spec? Usually the space spec is placed on the text before the image, so it's not applied to the same text. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:40 ` eww Eli Zaretskii 2013-06-18 18:04 ` eww Karl Fogel @ 2013-06-18 19:00 ` Ted Zlatanov 2013-06-18 20:19 ` eww Stefan Monnier 2013-06-19 4:21 ` eww Ted Zlatanov 2013-06-19 13:50 ` eww Tom Tromey 4 siblings, 1 reply; 185+ messages in thread From: Ted Zlatanov @ 2013-06-18 19:00 UTC (permalink / raw) To: emacs-devel On Tue, 18 Jun 2013 17:48:47 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> Currently eww uses a single buffer, and whenever you ask it to display a LMI> new URL, it discards everything in the buffer. This means that when you LMI> want to return to the previous page, eww has to re-fetch and re-render LMI> the page. And you lose the data in <form>s you have filled out. LMI> Would it make more sense for eww to use new buffers every time? eww LMI> would have a backlog of, say, ten buffers, and going back to the LMI> previous page would just mean popping to the previous buffer. And it LMI> could use `bury-buffer' and rename the previous buffer to a name with LMI> something leading with " " when you go to a new page. At least I would prefer undo/redo to go back and forth in the history of the current eww buffer, and an explicit "browse in new eww buffer" command. Speaking of conveniences, could `next-error' and `previous-error' move between anchors? Thanks! Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 19:00 ` eww Ted Zlatanov @ 2013-06-18 20:19 ` Stefan Monnier 2013-06-18 21:37 ` eww Ted Zlatanov ` (2 more replies) 0 siblings, 3 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-18 20:19 UTC (permalink / raw) To: emacs-devel > At least I would prefer undo/redo to go back and forth in the history of > the current eww buffer, and an explicit "browse in new eww buffer" > command. Agreed. I don't think creating a new buffer for every page is a good idea. Also going back to a previously displayed page should be "immediate" and not require any network communication. You might start with something like: (push (cons (buffer-string) (buffer-local-variables)) eww-history) > Speaking of conveniences, could `next-error' and `previous-error' move > between anchors? Sounds like a bad idea. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:19 ` eww Stefan Monnier @ 2013-06-18 21:37 ` Ted Zlatanov 2013-06-18 23:21 ` eww Stefan Monnier 2013-06-19 7:22 ` eww Lars Magne Ingebrigtsen 2013-06-19 10:38 ` eww Christopher Schmidt 2 siblings, 1 reply; 185+ messages in thread From: Ted Zlatanov @ 2013-06-18 21:37 UTC (permalink / raw) To: emacs-devel On Tue, 18 Jun 2013 16:19:21 -0400 Stefan Monnier <monnier@IRO.UMontreal.CA> wrote: Ted wrote: >> Speaking of conveniences, could `next-error' and `previous-error' move >> between anchors? SM> Sounds like a bad idea. The most common navigations in a web page are page up/page down and next/previous anchor. Typically (e.g. emacs-w3m integration) TAB and S-TAB move between anchors, but I see no reason `next-error' and `previous-error' can't also be used. Do you? Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 21:37 ` eww Ted Zlatanov @ 2013-06-18 23:21 ` Stefan Monnier 2013-06-19 4:15 ` eww Ted Zlatanov 0 siblings, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2013-06-18 23:21 UTC (permalink / raw) To: emacs-devel > Typically (e.g. emacs-w3m integration) TAB and S-TAB move between > anchors, but I see no reason `next-error' and `previous-error' can't > also be used. Do you? They're completely different operations. `next-error' lets you step through the destination points of references (which are in a "compilation" buffer). The commands you suggest move between different points of the current buffer with no reference to some "compilation" buffer. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:21 ` eww Stefan Monnier @ 2013-06-19 4:15 ` Ted Zlatanov 0 siblings, 0 replies; 185+ messages in thread From: Ted Zlatanov @ 2013-06-19 4:15 UTC (permalink / raw) To: emacs-devel On Tue, 18 Jun 2013 19:21:26 -0400 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> Typically (e.g. emacs-w3m integration) TAB and S-TAB move between >> anchors, but I see no reason `next-error' and `previous-error' can't >> also be used. Do you? SM> They're completely different operations. `next-error' lets you step SM> through the destination points of references (which are in SM> a "compilation" buffer). The commands you suggest move between SM> different points of the current buffer with no reference to some SM> "compilation" buffer. OK. Thanks for explaining, I'll keep that distinction in mind. Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:19 ` eww Stefan Monnier 2013-06-18 21:37 ` eww Ted Zlatanov @ 2013-06-19 7:22 ` Lars Magne Ingebrigtsen 2013-06-19 10:38 ` eww Christopher Schmidt 2 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 7:22 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > Agreed. I don't think creating a new buffer for every page is > a good idea. Also going back to a previously displayed page should be > "immediate" and not require any network communication. > You might start with something like: > > (push (cons (buffer-string) (buffer-local-variables)) eww-history) eww currently uses widget.el to render forms, and that uses overlays and ... stuff. But I think I'm going to rewrite that code to avoid widget, because it turns out that it's more hassle than it's worth. And implementing the form elements myself probably won't be more code than shoehorning the widget code into eww. And then keeping the history in a variable instead of in buffers would be simpler. Speaking of forms, perhaps form data should be nixed out before saving to history -- we wouldn't want passwords and the like to live in memory forever. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:19 ` eww Stefan Monnier 2013-06-18 21:37 ` eww Ted Zlatanov 2013-06-19 7:22 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 10:38 ` Christopher Schmidt 2013-06-19 12:35 ` eww Stefan Monnier 2 siblings, 1 reply; 185+ messages in thread From: Christopher Schmidt @ 2013-06-19 10:38 UTC (permalink / raw) To: emacs-devel Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > Also going back to a previously displayed page should be "immediate" > and not require any network communication. The Cache-Control header field of the response should be honoured, though? Christopher ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 10:38 ` eww Christopher Schmidt @ 2013-06-19 12:35 ` Stefan Monnier 2013-06-20 7:17 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 12:35 UTC (permalink / raw) To: emacs-devel >> Also going back to a previously displayed page should be "immediate" >> and not require any network communication. > The Cache-Control header field of the response should be honoured, > though? That's for the case where you go the same URL. When I go back in my history, I don't just want to see the same web-page, I want to see it in the exact state I left it (e.g. with whatever text I had typed into the forms, with point at the same place, ...). And most importantly, I want to be able to see it even if the network connection went down. So, no, when going back in my history I do *not* want to honor stuff like Cache-Control. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 12:35 ` eww Stefan Monnier @ 2013-06-20 7:17 ` Lars Magne Ingebrigtsen 2013-06-20 20:10 ` eww Stefan Monnier 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-20 7:17 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > That's for the case where you go the same URL. When I go back in my > history, I don't just want to see the same web-page, I want to see it in > the exact state I left it (e.g. with whatever text I had typed into the > forms, with point at the same place, ...). > And most importantly, I want to be able to see it even if the network > connection went down. > > So, no, when going back in my history I do *not* want to honor stuff > like Cache-Control. That would be my preference, too, but there are security implications. Like today's story: http://it.slashdot.org/story/13/06/20/0250206/21-financial-sites-found-to-store-sensitive-data-in-browser-disk-cache Now, eww won't store things in on disk, but if we're storing all this stuff in memory indefinitely, we're leaving the users open for various attacks on their privacy. Like I said, my preference would be to leave everything in memory myself, because I think this attack vector is pretty, er, slim (i.e., "if this is a problem, then my machine is already hacked, so why worry?"), but as a default policy, I think it's problematic. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 7:17 ` eww Lars Magne Ingebrigtsen @ 2013-06-20 20:10 ` Stefan Monnier 2013-06-21 6:58 ` eww Lars Magne Ingebrigtsen 2013-06-25 23:11 ` eww Lars Magne Ingebrigtsen 0 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-20 20:10 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > Now, eww won't store things in on disk, but if we're storing all this > stuff in memory indefinitely, we're leaving the users open for various > attacks on their privacy. Sounds highly hypothetical. If/when eww can be used to access such sites, maybe we can start worrying, but then even if you don't keep it in live data, the sensitive data may linger around in "garbage/free" memory. If you need to worry about that, you need to worry about a lot more than that. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 20:10 ` eww Stefan Monnier @ 2013-06-21 6:58 ` Lars Magne Ingebrigtsen 2013-06-28 15:12 ` eww Ted Zlatanov 2013-06-25 23:11 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-21 6:58 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > Sounds highly hypothetical. If/when eww can be used to access such > sites, maybe we can start worrying, but then even if you don't keep it > in live data, the sensitive data may linger around in > "garbage/free" memory. If you need to worry about that, you need to > worry about a lot more than that. It's a matter of how big the attack surface is. Leaving the data in easily accessible structures indefinitely is a larger attack surface than killing off the buffer where the offending data is. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-21 6:58 ` eww Lars Magne Ingebrigtsen @ 2013-06-28 15:12 ` Ted Zlatanov 2013-07-06 15:17 ` eww Lars Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Ted Zlatanov @ 2013-06-28 15:12 UTC (permalink / raw) To: emacs-devel On Fri, 21 Jun 2013 08:58:09 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Sounds highly hypothetical. If/when eww can be used to access such >> sites, maybe we can start worrying, but then even if you don't keep it >> in live data, the sensitive data may linger around in >> "garbage/free" memory. If you need to worry about that, you need to >> worry about a lot more than that. LMI> It's a matter of how big the attack surface is. Leaving the data in LMI> easily accessible structures indefinitely is a larger attack surface LMI> than killing off the buffer where the offending data is. This seems like a sensible use case for an opaque data type (as I've proposed before) that offers some guarantees that it's stored and wiped in a more secure manner than the default. Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-28 15:12 ` eww Ted Zlatanov @ 2013-07-06 15:17 ` Lars Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Ingebrigtsen @ 2013-07-06 15:17 UTC (permalink / raw) To: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > This seems like a sensible use case for an opaque data type (as I've > proposed before) that offers some guarantees that it's stored and wiped > in a more secure manner than the default. Yes, I think the eww history would be an excellent place to use an opaque data type. That way passwords and the like won't possibly be accidentally displayed when dumping variables in bug reports and the like, for instance. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 20:10 ` eww Stefan Monnier 2013-06-21 6:58 ` eww Lars Magne Ingebrigtsen @ 2013-06-25 23:11 ` Lars Magne Ingebrigtsen 2013-06-26 6:49 ` eww Daimrod 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-25 23:11 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel I've now implemented a version of the history that I think might make sense, and I've done it by stashing the rendered data in a variable, not by renaming buffers. There's now no re-rendering when traversing the history. The main thing I had to figure out was how to handle back/forth history movements. Let me explain. Here's how Firefox does it: You're on page A, go to page B, go back to A, go to C. Back will then take you to A, and there the history stops. Going forward will only take you to C, never to B, which is now inaccessible, as far as I can tell. That's supremely annoying, so here's how eww does it: You're on page A, go to page B, go back to A, go to C. Back goes to A. Back again goes to B. Back again goes to A. Forward to B, forward to A, forward to C. Etc. If I've implemented it correctly. So Firefox lets you explore the branch of the tree you're in, and other branches are cut off, while eww gives you a strict, er, temporal, flat view of history, so all parts of the history are accessible. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-25 23:11 ` eww Lars Magne Ingebrigtsen @ 2013-06-26 6:49 ` Daimrod 2013-06-26 11:55 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Daimrod @ 2013-06-26 6:49 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Stefan Monnier, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1400 bytes --] Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > I've now implemented a version of the history that I think might make > sense, and I've done it by stashing the rendered data in a variable, not > by renaming buffers. > > There's now no re-rendering when traversing the history. > > The main thing I had to figure out was how to handle back/forth history > movements. Let me explain. > > Here's how Firefox does it: > > You're on page A, go to page B, go back to A, go to C. Back will then > take you to A, and there the history stops. Going forward will only > take you to C, never to B, which is now inaccessible, as far as I can > tell. > > That's supremely annoying, so here's how eww does it: > > You're on page A, go to page B, go back to A, go to C. Back goes to A. > Back again goes to B. Back again goes to A. Forward to B, forward to > A, forward to C. Etc. If I've implemented it correctly. That sounds nice but what about providing an interface to visualize the tree? w3m-history in emacs-w3m does exactly that and IMHO it's easier to use, in the same way, undo-tree is easier to use than the undo/redo commands. > So Firefox lets you explore the branch of the tree you're in, and other > branches are cut off, while eww gives you a strict, er, temporal, flat > view of history, so all parts of the history are accessible. -- Daimrod/Greg [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 835 bytes --] ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-26 6:49 ` eww Daimrod @ 2013-06-26 11:55 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-26 11:55 UTC (permalink / raw) To: Daimrod; +Cc: Stefan Monnier, emacs-devel Daimrod <daimrod@gmail.com> writes: > That sounds nice but what about providing an interface to visualize the > tree? w3m-history in emacs-w3m does exactly that and IMHO it's easier to > use, in the same way, undo-tree is easier to use than the undo/redo > commands. Sure, displaying the history would probably also be nice. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen ` (2 preceding siblings ...) 2013-06-18 19:00 ` eww Ted Zlatanov @ 2013-06-19 4:21 ` Ted Zlatanov 2013-06-19 7:25 ` eww Lars Magne Ingebrigtsen 2013-06-19 8:21 ` eww chad 2013-06-19 13:50 ` eww Tom Tromey 4 siblings, 2 replies; 185+ messages in thread From: Ted Zlatanov @ 2013-06-19 4:21 UTC (permalink / raw) To: emacs-devel On Tue, 18 Jun 2013 17:48:47 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> Currently eww uses a single buffer, and whenever you ask it to display a LMI> new URL, it discards everything in the buffer. This means that when you LMI> want to return to the previous page, eww has to re-fetch and re-render LMI> the page. And you lose the data in <form>s you have filled out. (Let me know if I should implement the following ideas, or if they suck :) Besides the already-discussed navigation buffer, IMO eww should create a new buffer on demand when the user asks to see the HTML source. Probably `v' would be the right command for that. For accessibility (e.g. if the HTML is completely garbled or if the user is unable to read it), it would be very nice to pop up a buffer with just the list of anchors, where up/down are bound to step through the list and RET browses the anchor. Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 4:21 ` eww Ted Zlatanov @ 2013-06-19 7:25 ` Lars Magne Ingebrigtsen 2013-06-19 22:45 ` eww Ted Zlatanov 2013-06-19 8:21 ` eww chad 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 7:25 UTC (permalink / raw) To: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > Besides the already-discussed navigation buffer, IMO eww should create a > new buffer on demand when the user asks to see the HTML source. > Probably `v' would be the right command for that. Sure, popping to a new buffer would make sense to view source. > For accessibility (e.g. if the HTML is completely garbled or if the user > is unable to read it), it would be very nice to pop up a buffer with > just the list of anchors, where up/down are bound to step through the > list and RET browses the anchor. Hm... I'm not sure that sounds very useful to me. libxml2 is pretty good at parsing HTML, and TAB works fine for stepping though all the links. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:25 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 22:45 ` Ted Zlatanov 2013-06-20 9:01 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Ted Zlatanov @ 2013-06-19 22:45 UTC (permalink / raw) To: emacs-devel On Wed, 19 Jun 2013 09:25:24 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> Ted Zlatanov <tzz@lifelogs.com> writes: >> Besides the already-discussed navigation buffer, IMO eww should create a >> new buffer on demand when the user asks to see the HTML source. >> Probably `v' would be the right command for that. LMI> Sure, popping to a new buffer would make sense to view source. Let me know if you're planning to implement this or not (so I can do it, if not you). Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 22:45 ` eww Ted Zlatanov @ 2013-06-20 9:01 ` Lars Magne Ingebrigtsen 2013-07-01 22:48 ` eww Ted Zlatanov 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-20 9:01 UTC (permalink / raw) To: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > Let me know if you're planning to implement this or not (so I can do it, > if not you). Sure, go ahead. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 9:01 ` eww Lars Magne Ingebrigtsen @ 2013-07-01 22:48 ` Ted Zlatanov 2013-07-02 6:03 ` eww Thierry Volpiatto 2013-07-06 15:19 ` eww Lars Ingebrigtsen 0 siblings, 2 replies; 185+ messages in thread From: Ted Zlatanov @ 2013-07-01 22:48 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 701 bytes --] On Thu, 20 Jun 2013 11:01:47 +0200 Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: LMI> Ted Zlatanov <tzz@lifelogs.com> writes: >> Let me know if you're planning to implement this or not (so I can do it, >> if not you). LMI> Sure, go ahead. :-) I'm not sure I understand all the buffer magic eww does, so here's an attempt to provide `eww-view-source' under `v' (right now it just calls `debug' on the data). If I edebug `eww-view-source' it has the right data, but I think something is getting lost in translation because the data doesn't show up when I actually hit `v'. If you or someone else know what I've missed, please let me know. It's probably something really simple... Thanks Ted [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: eww-view-source.patch --] [-- Type: text/x-diff, Size: 2098 bytes --] === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-28 07:54:42 +0000 +++ lisp/net/eww.el 2013-07-01 22:42:27 +0000 @@ -100,6 +100,7 @@ (defvar eww-home-url nil) (defvar eww-start-url nil) (defvar eww-contents-url nil) +(defvar eww-source-code nil) ;;;###autoload (defun eww (url) @@ -200,11 +201,12 @@ (defun eww-display-html (charset url) (unless (eq charset 'utf8) (decode-coding-region (point) (point-max) charset)) - (let ((document + (let ((source-code (buffer-substring (point) (point-max))) + (document (list 'base (list (cons 'href url)) (libxml-parse-html-region (point) (point-max))))) - (eww-setup-buffer) + (eww-setup-buffer source-code) (setq eww-current-url url) (eww-update-header-line-format) (let ((inhibit-read-only t) @@ -296,7 +298,7 @@ (defun eww-display-raw (charset) (let ((data (buffer-substring (point) (point-max)))) - (eww-setup-buffer) + (eww-setup-buffer data) (let ((inhibit-read-only t)) (insert data)) (goto-char (point-min)))) @@ -308,11 +310,12 @@ (shr-put-image data nil)) (goto-char (point-min)))) -(defun eww-setup-buffer () +(defun eww-setup-buffer (&optional source-code) (pop-to-buffer (get-buffer-create "*eww*")) (let ((inhibit-read-only t)) (remove-overlays) (erase-buffer)) + (set (make-local-variable 'eww-source-code) source-code) (unless (eq major-mode 'eww-mode) (eww-mode))) @@ -334,6 +337,7 @@ (define-key map "t" 'eww-top-url) (define-key map "&" 'eww-browse-with-external-browser) (define-key map "d" 'eww-download) + (define-key map "v" 'eww-view-source) (define-key map "w" 'eww-copy-page-url) (define-key map "C" 'url-cookie-list) @@ -391,6 +395,13 @@ (setq eww-history nil) (kill-buffer (current-buffer))) +(defun eww-view-source () + "View the page source code." + (interactive) + (if eww-source-code + (debug eww-source-code) + (error "No source code available"))) + (defun eww-back-url () "Go to the previously displayed page." (interactive) ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-01 22:48 ` eww Ted Zlatanov @ 2013-07-02 6:03 ` Thierry Volpiatto 2013-07-06 15:19 ` eww Lars Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Thierry Volpiatto @ 2013-07-02 6:03 UTC (permalink / raw) To: emacs-devel First try to eww: M-x eww RET google.fr I go in the search bar, enter some characters, then, C-a, C-k, the search bar disappear. Otherwise thanks to develop this. -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997 ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-01 22:48 ` eww Ted Zlatanov 2013-07-02 6:03 ` eww Thierry Volpiatto @ 2013-07-06 15:19 ` Lars Ingebrigtsen 2013-07-06 22:32 ` eww Xue Fuqiao 2013-07-08 12:34 ` eww Ted Zlatanov 1 sibling, 2 replies; 185+ messages in thread From: Lars Ingebrigtsen @ 2013-07-06 15:19 UTC (permalink / raw) To: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > I'm not sure I understand all the buffer magic eww does, so here's an > attempt to provide `eww-view-source' under `v' (right now it just calls > `debug' on the data). If I edebug `eww-view-source' it has the right > data, but I think something is getting lost in translation because the > data doesn't show up when I actually hit `v'. Calling `debug' is probably not the right thing to do. Just pop to a buffer called "*eww source*" or something, with a very minor mode that would just bind `q' to exit. But otherwise, looks good. Please apply. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-06 15:19 ` eww Lars Ingebrigtsen @ 2013-07-06 22:32 ` Xue Fuqiao 2013-07-06 22:57 ` eww Lars Ingebrigtsen 2013-07-08 12:34 ` eww Ted Zlatanov 1 sibling, 1 reply; 185+ messages in thread From: Xue Fuqiao @ 2013-07-06 22:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel On Sat, Jul 6, 2013 at 11:19 PM, Lars Ingebrigtsen <larsi@gnus.org> wrote: > Ted Zlatanov <tzz@lifelogs.com> writes: > >> I'm not sure I understand all the buffer magic eww does, so here's an >> attempt to provide `eww-view-source' under `v' (right now it just calls >> `debug' on the data). If I edebug `eww-view-source' it has the right >> data, but I think something is getting lost in translation because the >> data doesn't show up when I actually hit `v'. > > Calling `debug' is probably not the right thing to do. Just pop to a > buffer called "*eww source*" or something, with a very minor mode that > would just bind `q' to exit. I think deriving from special-mode is better, because it has very convenient binding for beginning/end-of-buffer, scroll-down/up-commnd, and also bind `q' to exit. -- Best regards, Xue Fuqiao. http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-06 22:32 ` eww Xue Fuqiao @ 2013-07-06 22:57 ` Lars Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Ingebrigtsen @ 2013-07-06 22:57 UTC (permalink / raw) To: Xue Fuqiao; +Cc: emacs-devel Xue Fuqiao <xfq.free@gmail.com> writes: > I think deriving from special-mode is better, because it has very > convenient binding for beginning/end-of-buffer, scroll-down/up-commnd, > and also bind `q' to exit. Ah, I didn't know about `special-mode'. I'll make `eww-bookmark-mode' and `url-cookie-mode' (introduced a couple of weeks ago) derive from that instead of re-implementing some of that stuff. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-06 15:19 ` eww Lars Ingebrigtsen 2013-07-06 22:32 ` eww Xue Fuqiao @ 2013-07-08 12:34 ` Ted Zlatanov 2013-07-08 12:55 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Ted Zlatanov @ 2013-07-08 12:34 UTC (permalink / raw) To: emacs-devel On Sat, 06 Jul 2013 17:19:54 +0200 Lars Ingebrigtsen <larsi@gnus.org> wrote: LI> Ted Zlatanov <tzz@lifelogs.com> writes: >> I'm not sure I understand all the buffer magic eww does, so here's an >> attempt to provide `eww-view-source' under `v' (right now it just calls >> `debug' on the data). If I edebug `eww-view-source' it has the right >> data, but I think something is getting lost in translation because the >> data doesn't show up when I actually hit `v'. LI> Calling `debug' is probably not the right thing to do. I know, but it wasn't working for me so I left it like that :) Do you mean to say it works for you? If so, there must be something wrong with my setup! LI> Just pop to a buffer called "*eww source*" or something, with a very LI> minor mode that would just bind `q' to exit. LI> But otherwise, looks good. Please apply. :-) As Xue suggested I can use `special-mode' (which gets my award for Unhelpful Name of the Year, btw). But if you tested this and it worked, why is it failing for me? Hmm. Ted ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-07-08 12:34 ` eww Ted Zlatanov @ 2013-07-08 12:55 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-07-08 12:55 UTC (permalink / raw) To: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > I know, but it wasn't working for me so I left it like that :) > > Do you mean to say it works for you? If so, there must be something > wrong with my setup! No, I didn't actually test it. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 4:21 ` eww Ted Zlatanov 2013-06-19 7:25 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 8:21 ` chad 2013-06-19 12:32 ` eww Stefan Monnier 2013-06-19 20:55 ` eww Juri Linkov 1 sibling, 2 replies; 185+ messages in thread From: chad @ 2013-06-19 8:21 UTC (permalink / raw) To: emacs-devel On 18 Jun 2013, at 21:21, Ted Zlatanov <tzz@lifelogs.com> wrote: > For accessibility (e.g. if the HTML is completely garbled or if the user > is unable to read it), it would be very nice to pop up a buffer with > just the list of anchors, where up/down are bound to step through the > list and RET browses the anchor. Sounds like completion to me. On 19 Jun 2013, at 00:34, Lars Magne Ingebrigtsen <larsi@gnus.org> wrote: >> So its User-Agent would be more informative with something like >> "eww/5.130008 URL/1.1 Emacs/24.3.50 (gnu/linux)"... > > I'm kinda for keeping the User-Agent short and sweet. But is URL/Emacs > valid? It's supposed to be Client/Version. I guess "Emacs" is a > version of sorts... I know it seems cool just to say `EWW/Emacs', but Juri's suggestion is better, assuming that you care about standards compliance. Reasonable humans can be forgiven for thinking that the web standards aren't reasonable, but please *at least* include a version number. Thanks for an exciting new tool! ~Chad ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 8:21 ` eww chad @ 2013-06-19 12:32 ` Stefan Monnier 2013-06-19 20:55 ` eww Juri Linkov 1 sibling, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 12:32 UTC (permalink / raw) To: chad; +Cc: emacs-devel > I know it seems cool just to say `EWW/Emacs', but Juri's suggestion > is better, assuming that you care about standards compliance. > Reasonable humans can be forgiven for thinking that the web standards > aren't reasonable, but please *at least* include a version number. If the format is syntactically incorrect, we need to fix it, indeed. But we should not give more information (e.g. if it wants a "version number", then let's fill it with some dummy "3.14"). Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 8:21 ` eww chad 2013-06-19 12:32 ` eww Stefan Monnier @ 2013-06-19 20:55 ` Juri Linkov 2013-06-19 21:16 ` eww Tom Tromey 1 sibling, 1 reply; 185+ messages in thread From: Juri Linkov @ 2013-06-19 20:55 UTC (permalink / raw) To: chad; +Cc: emacs-devel >> For accessibility (e.g. if the HTML is completely garbled or if the user >> is unable to read it), it would be very nice to pop up a buffer with >> just the list of anchors, where up/down are bound to step through the >> list and RET browses the anchor. > > Sounds like completion to me. Yes, this is like `f TAB' in Info. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 20:55 ` eww Juri Linkov @ 2013-06-19 21:16 ` Tom Tromey 0 siblings, 0 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-19 21:16 UTC (permalink / raw) To: Juri Linkov; +Cc: chad, emacs-devel >>>>> "Juri" == Juri Linkov <juri@jurta.org> writes: Juri> Yes, this is like `f TAB' in Info. FWIW I have "f" (and "m") bindings working here (plus other easy info stuff, like "T", "<", and the digits). I can send a patch tomorrow. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen ` (3 preceding siblings ...) 2013-06-19 4:21 ` eww Ted Zlatanov @ 2013-06-19 13:50 ` Tom Tromey 4 siblings, 0 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-19 13:50 UTC (permalink / raw) To: emacs-devel Lars> Would it make more sense for eww to use new buffers every time? eww Lars> would have a backlog of, say, ten buffers, and going back to the Lars> previous page would just mean popping to the previous buffer. And it Lars> could use `bury-buffer' and rename the previous buffer to a name with Lars> something leading with " " when you go to a new page. FWIW w3m reuses the buffer by default, but lets you request a new buffer when following a link. That is, it works like other web browsers, where a click usually reuses the tab, and middle-click or whatever opens a new one. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:14 ` eww Lars Magne Ingebrigtsen 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 16:17 ` Tom Tromey 2013-06-18 16:45 ` eww Christopher Schmidt ` (2 more replies) 1 sibling, 3 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-18 16:17 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel >> Here's a version that addresses your comments and adds doc strings and a >> ChangeLog entry. Let me know what you think. Lars> Looks good; applied. I didn't see it in bzr. Anyway here is a slightly better version. Differences: HTML seems to specify "prev", not "previous" (though texinfo still seems to use "previous"). HTML specifies "start" as well as "contents"; but I noticed that Gtk is using "home" here. So now it handles all 3 and picks the "best" one. Finally, the "rel" value is supposed to be case-insensitive, so downcase it. Tom === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2013-06-18 11:24:16 +0000 +++ lisp/gnus/ChangeLog 2013-06-18 16:15:25 +0000 @@ -1,3 +1,17 @@ +2013-06-18 Tom Tromey <tromey@barimba> + + * eww.el (eww-next-url, eww-previous-url, eww-up-url) + (eww-start-url, eww-home-url, eww-contents-url): + New defvars. + (eww-open-file): New defun. + (eww-render): Initialize new variables. + (eww-display-html): Handle "link" and "a". + (eww-handle-link, eww-tag-link, eww-tag-a): New defuns. + (eww-mode-map): Move "p" to "l". Bind "p", "n", "t", and "u". + (eww-back-url): Rename from eww-previous-url. + (eww-next-url, eww-previous-url, eww-up-url, eww-top-url): New + defuns. + 2013-06-18 Lars Magne Ingebrigtsen <larsi@gnus.org> * shr.el (shr-tag-table): Insert the images after the table, so that === modified file 'lisp/gnus/eww.el' --- lisp/gnus/eww.el 2013-06-18 09:29:20 +0000 +++ lisp/gnus/eww.el 2013-06-18 16:14:31 +0000 @@ -56,6 +56,13 @@ "Title of current page.") (defvar eww-history nil) +(defvar eww-next-url nil) +(defvar eww-previous-url nil) +(defvar eww-up-url nil) +(defvar eww-home-url nil) +(defvar eww-start-url nil) +(defvar eww-contents-url nil) + ;;;###autoload (defun eww (url) "Fetch URL and render the page." @@ -64,10 +71,22 @@ (setq url (concat "http://" url))) (url-retrieve url 'eww-render (list url))) +;;;###autoload +(defun eww-open-file (file) + "Render a file using EWW." + (interactive "fFile: ") + (eww (concat "file://" (expand-file-name file)))) + (defun eww-render (status url &optional point) (let ((redirect (plist-get status :redirect))) (when redirect (setq url redirect))) + (set (make-local-variable 'eww-next-url) nil) + (set (make-local-variable 'eww-previous-url) nil) + (set (make-local-variable 'eww-up-url) nil) + (set (make-local-variable 'eww-home-url) nil) + (set (make-local-variable 'eww-start-url) nil) + (set (make-local-variable 'eww-contents-url) nil) (let* ((headers (eww-parse-headers)) (shr-target-id (and (string-match "#\\(.*\\)" url) @@ -146,11 +165,45 @@ (input . eww-tag-input) (textarea . eww-tag-textarea) (body . eww-tag-body) - (select . eww-tag-select)))) + (select . eww-tag-select) + (link . eww-tag-link) + (a . eww-tag-a)))) (shr-insert-document document) (eww-convert-widgets)) (goto-char (point-min)))) +(defun eww-handle-link (cont) + (let* ((rel (assq :rel cont)) + (href (assq :href cont)) + (where (assoc + ;; The text associated with :rel is case-insensitive. + (if rel (downcase (cdr rel))) + '(("next" . eww-next-url) + ;; Texinfo uses "previous", but HTML specifies + ;; "prev", so recognize both. + ("previous" . eww-previous-url) + ("prev" . eww-previous-url) + ;; HTML specifies "start" but also "contents", + ;; and Gtk seems to use "home". Recognize + ;; them all; but store them in different + ;; variables so that we can readily choose the + ;; "best" one. + ("start" . eww-start-url) + ("home" . eww-home-url) + ("contents" . eww-contents-url) + ("up" . eww-up-url))))) + (and href + where + (set (cdr where) (cdr href))))) + +(defun eww-tag-link (cont) + (eww-handle-link cont) + (shr-generic cont)) + +(defun eww-tag-a (cont) + (eww-handle-link cont) + (shr-tag-a cont)) + (defun eww-update-header-line-format () (if eww-header-line-format (setq header-line-format (format-spec eww-header-line-format @@ -218,8 +271,11 @@ (define-key map [delete] 'scroll-down-command) (define-key map "\177" 'scroll-down-command) (define-key map " " 'scroll-up-command) + (define-key map "l" 'eww-back-url) + (define-key map "n" 'eww-next-url) (define-key map "p" 'eww-previous-url) - ;;(define-key map "n" 'eww-next-url) + (define-key map "u" 'eww-up-url) + (define-key map "t" 'eww-top-url) map)) (define-derived-mode eww-mode nil "eww" @@ -240,7 +296,7 @@ (setq eww-history nil) (kill-buffer (current-buffer))) -(defun eww-previous-url () +(defun eww-back-url () "Go to the previously displayed page." (interactive) (when (zerop (length eww-history)) @@ -248,6 +304,45 @@ (let ((prev (pop eww-history))) (url-retrieve (car prev) 'eww-render (list (car prev) (cadr prev))))) +(defun eww-next-url () + "Go to the page marked `next'. +A page is marked `next' if rel=\"next\" appears in a <link> +or <a> tag." + (interactive) + (if eww-next-url + (eww-browse-url (shr-expand-url eww-next-url eww-current-url)) + (error "No `next' on this page"))) + +(defun eww-previous-url () + "Go to the page marked `previous'. +A page is marked `previous' if rel=\"previous\" appears in a <link> +or <a> tag." + (interactive) + (if eww-previous-url + (eww-browse-url (shr-expand-url eww-previous-url eww-current-url)) + (error "No `previous' on this page"))) + +(defun eww-up-url () + "Go to the page marked `up'. +A page is marked `up' if rel=\"up\" appears in a <link> +or <a> tag." + (interactive) + (if eww-up-url + (eww-browse-url (shr-expand-url eww-up-url eww-current-url)) + (error "No `up' on this page"))) + +(defun eww-top-url () + "Go to the page marked `top'. +A page is marked `top' if rel=\"start\", rel=\"home\", or rel=\"contents\" +appears in a <link> or <a> tag." + (interactive) + (let ((best-url (or eww-start-url + eww-contents-url + eww-home-url))) + (if best-url + (eww-browse-url (shr-expand-url best-url eww-current-url)) + (error "No `top' for this page")))) + (defun eww-reload () "Reload the current page." (interactive) ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 16:17 ` eww Tom Tromey @ 2013-06-18 16:45 ` Christopher Schmidt 2013-06-18 19:06 ` eww Steinar Bang 2013-06-19 6:50 ` eww Lars Magne Ingebrigtsen 2 siblings, 0 replies; 185+ messages in thread From: Christopher Schmidt @ 2013-06-18 16:45 UTC (permalink / raw) To: emacs-devel Tom Tromey <tromey@redhat.com> writes: > I didn't see it in bzr. Wait until the Gnus git repository is synced. http://git.gnus.org/cgit/gnus.git/commit/?id=39cb12ac94b96e035dcffe7f419eb77b5a41226f Christopher ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 16:17 ` eww Tom Tromey 2013-06-18 16:45 ` eww Christopher Schmidt @ 2013-06-18 19:06 ` Steinar Bang 2013-06-19 6:50 ` eww Lars Magne Ingebrigtsen 2 siblings, 0 replies; 185+ messages in thread From: Steinar Bang @ 2013-06-18 19:06 UTC (permalink / raw) To: emacs-devel; +Cc: ding >>>>> Tom Tromey <tromey@redhat.com>: >>> Here's a version that addresses your comments and adds doc strings and a >>> ChangeLog entry. Let me know what you think. Lars> Looks good; applied. > I didn't see it in bzr. It's probably onlt in the gnus git, so far: http://git.gnus.org/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 16:17 ` eww Tom Tromey 2013-06-18 16:45 ` eww Christopher Schmidt 2013-06-18 19:06 ` eww Steinar Bang @ 2013-06-19 6:50 ` Lars Magne Ingebrigtsen 2013-06-19 17:13 ` eww Tom Tromey 2 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 6:50 UTC (permalink / raw) To: Tom Tromey; +Cc: emacs-devel Tom Tromey <tromey@redhat.com> writes: >>> Here's a version that addresses your comments and adds doc strings and a >>> ChangeLog entry. Let me know what you think. > > Lars> Looks good; applied. > > I didn't see it in bzr. > > Anyway here is a slightly better version. Could you re-send the patch against the current tree? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 6:50 ` eww Lars Magne Ingebrigtsen @ 2013-06-19 17:13 ` Tom Tromey 2013-06-19 19:31 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Tom Tromey @ 2013-06-19 17:13 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel Lars> Could you re-send the patch against the current tree? Here you go. I can push directly if you prefer. I think it would be best if you reviewed patches, though. Tom === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-06-19 13:14:24 +0000 +++ lisp/ChangeLog 2013-06-19 17:13:17 +0000 @@ -1,3 +1,12 @@ +2013-06-19 Tom Tromey <tromey@redhat.com> + + * net/eww.el (eww-top-url): Remove. + (eww-home-url, eww-start-url, eww-contents-url): New defvars. + (eww-render): Set new variables. Don't set eww-top-url. + (eww-handle-link): Handle "prev", "home", and "contents". + Downcase the rel text. + (eww-top-url): Choose best top URL. + 2013-06-19 Michael Albinus <michael.albinus@gmx.de> * net/tramp-adb.el (tramp-adb-get-toolbox): Remove function, it is === modified file 'lisp/net/eww.el' --- lisp/net/eww.el 2013-06-18 22:38:34 +0000 +++ lisp/net/eww.el 2013-06-19 17:10:12 +0000 @@ -59,7 +59,9 @@ (defvar eww-next-url nil) (defvar eww-previous-url nil) (defvar eww-up-url nil) -(defvar eww-top-url nil) +(defvar eww-home-url nil) +(defvar eww-start-url nil) +(defvar eww-contents-url nil) ;;;###autoload (defun eww (url) @@ -82,7 +84,9 @@ (set (make-local-variable 'eww-next-url) nil) (set (make-local-variable 'eww-previous-url) nil) (set (make-local-variable 'eww-up-url) nil) - (set (make-local-variable 'eww-top-url) nil) + (set (make-local-variable 'eww-home-url) nil) + (set (make-local-variable 'eww-start-url) nil) + (set (make-local-variable 'eww-contents-url) nil) (let* ((headers (eww-parse-headers)) (shr-target-id (and (string-match "#\\(.*\\)" url) @@ -171,10 +175,22 @@ (defun eww-handle-link (cont) (let* ((rel (assq :rel cont)) (href (assq :href cont)) - (where (assoc (cdr rel) + (where (assoc + ;; The text associated with :rel is case-insensitive. + (if rel (downcase (cdr rel))) '(("next" . eww-next-url) + ;; Texinfo uses "previous", but HTML specifies + ;; "prev", so recognize both. ("previous" . eww-previous-url) - ("start" . eww-top-url) + ("prev" . eww-previous-url) + ;; HTML specifies "start" but also "contents", + ;; and Gtk seems to use "home". Recognize + ;; them all; but store them in different + ;; variables so that we can readily choose the + ;; "best" one. + ("start" . eww-start-url) + ("home" . eww-home-url) + ("contents" . eww-contents-url) ("up" . eww-up-url))))) (and href where @@ -317,12 +333,15 @@ (defun eww-top-url () "Go to the page marked `top'. -A page is marked `top' if rel=\"start\" appears in a <link> -or <a> tag." +A page is marked `top' if rel=\"start\", rel=\"home\", or rel=\"contents\" +appears in a <link> or <a> tag." (interactive) - (if eww-top-url - (eww-browse-url (shr-expand-url eww-top-url eww-current-url)) - (error "No `top' on this page"))) + (let ((best-url (or eww-start-url + eww-contents-url + eww-home-url))) + (if best-url + (eww-browse-url (shr-expand-url best-url eww-current-url)) + (error "No `top' for this page")))) (defun eww-reload () "Reload the current page." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 17:13 ` eww Tom Tromey @ 2013-06-19 19:31 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 19:31 UTC (permalink / raw) To: Tom Tromey; +Cc: emacs-devel Tom Tromey <tromey@redhat.com> writes: > Here you go. Thanks; applied. > I can push directly if you prefer. > I think it would be best if you reviewed patches, though. Perhaps for now -- things are changing pretty rapidly in eww at the moment. After ejecting the widget code from eww, here's how it looks now: http://lars.ingebrigtsen.no/2013/06/eww-improvements.html -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:34 ` eww Tom Tromey 2013-06-18 14:39 ` eww Tom Tromey @ 2013-06-18 19:07 ` Stefan Monnier 2 siblings, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-18 19:07 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Tom Tromey, ding, emacs-devel >> +(defvar eww-next-url nil) >> +(make-variable-buffer-local 'eww-next-url) >> +(defvar eww-previous-url nil) >> +(make-variable-buffer-local 'eww-previous-url) >> +(defvar eww-up-url nil) >> +(make-variable-buffer-local 'eww-up-url) >> +(defvar eww-top-url nil) >> +(make-variable-buffer-local 'eww-top-url) > I think that for package-specific variables like this we're supposed to > use > (set (make-local-variable 'eww-top-url) nil) > in the mode setup instead, so that we're not making variables needlessly > globally buffer-local. For variables whose global value is of no use anyway, you're just as well to use defvar-local (or equivalent) like Tom did. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 2:19 ` eww Tom Tromey 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 11:31 ` Lars Magne Ingebrigtsen 2013-06-18 14:42 ` eww Tom Tromey ` (2 more replies) 1 sibling, 3 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 11:31 UTC (permalink / raw) To: Tom Tromey; +Cc: ding, emacs-devel Tom Tromey <tromey@redhat.com> writes: > I'm interested in the possibility of replacing info with html+eww. As for this, that's not very realistic. info has a ton of commands specially suited for navigating manuals, and does a really good job. eww is a general web browser, and trying to shoe-horn all the missing info functionality into it would be a mess, I think. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 14:42 ` Tom Tromey 2013-06-18 15:04 ` eww Lars Magne Ingebrigtsen 2013-06-18 23:40 ` eww Juri Linkov 2013-06-19 14:06 ` eww Drew Adams 2 siblings, 1 reply; 185+ messages in thread From: Tom Tromey @ 2013-06-18 14:42 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel Tom> I'm interested in the possibility of replacing info with html+eww. Lars> As for this, that's not very realistic. info has a ton of commands Lars> specially suited for navigating manuals, and does a really good job. Lars> eww is a general web browser, and trying to shoe-horn all the missing Lars> info functionality into it would be a mess, I think. I'm more optimistic about the possibility. Is there a particular thing you think would be difficult or messy? Maybe there is a way to do it as a derived mode so that it doesn't conflict too much with the web-browsing aspect of eww. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 14:42 ` eww Tom Tromey @ 2013-06-18 15:04 ` Lars Magne Ingebrigtsen 2013-06-18 19:13 ` eww Stefan Monnier 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 15:04 UTC (permalink / raw) To: Tom Tromey; +Cc: ding, emacs-devel Tom Tromey <tromey@redhat.com> writes: > I'm more optimistic about the possibility. > Is there a particular thing you think would be difficult or messy? info has a bunch of commands for jumping to the index and searching the entire manual, etc. Reading the HTML version of the manual will never be as convenient as reading the info version. > Maybe there is a way to do it as a derived mode so that it doesn't > conflict too much with the web-browsing aspect of eww. Or just continue to use info, which is really good at this sort of thing. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 15:04 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 19:13 ` Stefan Monnier 2013-06-18 19:17 ` eww Eli Zaretskii 2013-06-18 19:27 ` eww Tom Tromey 0 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-18 19:13 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Tom Tromey, ding, emacs-devel >> I'm more optimistic about the possibility. >> Is there a particular thing you think would be difficult or messy? > Info has a bunch of commands for jumping to the index and searching the > entire manual, etc. Reading the HTML version of the manual will never > be as convenient as reading the info version. AFAIK, it's easy to make HTML pages which includes most/all the meta information that Info pages contain. So you can then provide the "bunch of commands" without much trouble. >> Maybe there is a way to do it as a derived mode so that it doesn't >> conflict too much with the web-browsing aspect of eww. > Or just continue to use info, which is really good at this sort of > thing. :-) Info has serious shortcomings which are hard to circumvent. E.g. it's pre-formatted. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 19:13 ` eww Stefan Monnier @ 2013-06-18 19:17 ` Eli Zaretskii 2013-06-18 20:21 ` eww Stefan Monnier 2013-06-18 23:03 ` eww Xue Fuqiao 2013-06-18 19:27 ` eww Tom Tromey 1 sibling, 2 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-18 19:17 UTC (permalink / raw) To: Stefan Monnier; +Cc: tromey, larsi, ding, emacs-devel > From: Stefan Monnier <monnier@IRO.UMontreal.CA> > Date: Tue, 18 Jun 2013 15:13:22 -0400 > Cc: Tom Tromey <tromey@redhat.com>, ding@gnus.org, > emacs-devel <emacs-devel@gnu.org> > > Info has serious shortcomings which are hard to circumvent. E.g. it's > pre-formatted. For manuals we produce ourselves, using the --fill-column switch to makeinfo can easily overcome the pre-formatted thing. Any other serious shortcomings? ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 19:17 ` eww Eli Zaretskii @ 2013-06-18 20:21 ` Stefan Monnier 2013-06-18 23:34 ` eww James Cloos ` (2 more replies) 2013-06-18 23:03 ` eww Xue Fuqiao 1 sibling, 3 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-18 20:21 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, tromey, ding, emacs-devel >> Info has serious shortcomings which are hard to circumvent. E.g. it's >> pre-formatted. > For manuals we produce ourselves, using the --fill-column switch to > makeinfo can easily overcome the pre-formatted thing. I'm not sure how that helps refill Info documents to adapt to the size of the Emacs window, or reliably recognize elements to display them using face attributes rather than ascii annotations. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:21 ` eww Stefan Monnier @ 2013-06-18 23:34 ` James Cloos 2013-06-19 2:50 ` eww Eli Zaretskii 2013-06-19 8:17 ` eww Stephen Leake 2 siblings, 0 replies; 185+ messages in thread From: James Cloos @ 2013-06-18 23:34 UTC (permalink / raw) To: ding, emacs-devel; +Cc: tromey, larsi, Eli Zaretskii, Stefan Monnier >>>>> "SM" == Stefan Monnier <monnier@IRO.UMontreal.CA> writes: SM> I'm not sure how that helps refill Info documents to adapt to the SM> size of the Emacs window, If that ever is done, please be sure not to refill wider, only narrower. Even with a wide window (such as a landscape-aspect full-screen window) one doesn't want the text column to be full width. But refilling to work with a too-narrow window is a good idea. -JimC -- James Cloos <cloos@jhcloos.com> OpenPGP: 1024D/ED7DAEA6 ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:21 ` eww Stefan Monnier 2013-06-18 23:34 ` eww James Cloos @ 2013-06-19 2:50 ` Eli Zaretskii 2013-06-19 4:49 ` eww Stefan Monnier 2013-06-19 8:17 ` eww Stephen Leake 2 siblings, 1 reply; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 2:50 UTC (permalink / raw) To: Stefan Monnier; +Cc: tromey, larsi, ding, emacs-devel > From: Stefan Monnier <monnier@IRO.UMontreal.CA> > Cc: larsi@gnus.org, tromey@redhat.com, ding@gnus.org, emacs-devel@gnu.org > Date: Tue, 18 Jun 2013 16:21:23 -0400 > > >> Info has serious shortcomings which are hard to circumvent. E.g. it's > >> pre-formatted. > > For manuals we produce ourselves, using the --fill-column switch to > > makeinfo can easily overcome the pre-formatted thing. > > I'm not sure how that helps refill Info documents to adapt to the size > of the Emacs window Use a huge number as the argument of --fill-column, and you have unbroken physical lines. The rest is up to us. > or reliably recognize elements to display them using face attributes > rather than ascii annotations. We do that already, don't we? ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 2:50 ` eww Eli Zaretskii @ 2013-06-19 4:49 ` Stefan Monnier 0 siblings, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 4:49 UTC (permalink / raw) To: Eli Zaretskii; +Cc: tromey, larsi, ding, emacs-devel >> or reliably recognize elements to display them using face attributes >> rather than ascii annotations. > We do that already, don't we? Not reliably, sadly. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 20:21 ` eww Stefan Monnier 2013-06-18 23:34 ` eww James Cloos 2013-06-19 2:50 ` eww Eli Zaretskii @ 2013-06-19 8:17 ` Stephen Leake 2 siblings, 0 replies; 185+ messages in thread From: Stephen Leake @ 2013-06-19 8:17 UTC (permalink / raw) To: emacs-devel Stefan Monnier <monnier@IRO.UMontreal.CA> writes: >>> Info has serious shortcomings which are hard to circumvent. > ... or reliably recognize elements to display them > using face attributes rather than ascii annotations. For example, the Ada manual uses italics to distinguish important features: <i>function_</i>name is very different semantically from function_name. This is completely lost in the info version, but present in the HTML version. -- -- Stephe ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 19:17 ` eww Eli Zaretskii 2013-06-18 20:21 ` eww Stefan Monnier @ 2013-06-18 23:03 ` Xue Fuqiao 2013-06-18 23:56 ` eww Paul Eggert 2013-06-19 3:03 ` eww Eli Zaretskii 1 sibling, 2 replies; 185+ messages in thread From: Xue Fuqiao @ 2013-06-18 23:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: tromey, larsi, Stefan Monnier, ding, emacs-devel On Wed, Jun 19, 2013 at 3:17 AM, Eli Zaretskii <eliz@gnu.org> wrote: >> From: Stefan Monnier <monnier@IRO.UMontreal.CA> >> Date: Tue, 18 Jun 2013 15:13:22 -0400 >> Cc: Tom Tromey <tromey@redhat.com>, ding@gnus.org, >> emacs-devel <emacs-devel@gnu.org> >> >> Info has serious shortcomings which are hard to circumvent. E.g. it's >> pre-formatted. > > For manuals we produce ourselves, using the --fill-column switch to > makeinfo can easily overcome the pre-formatted thing. > > Any other serious shortcomings? Well, I don't see any serious shortcomings, but I found a minor problem: "texi2any --info" still use the convention of backtick ` and straight single quote ' to emulate curly quotes “ ” or ‘ ’. It also use other ASCII kludge such as => instead of ⇒. Emacs itself support Unicode several years ago, what about replacing these characters? At least add a switch to texi2any. (Sorry for the off-topic.) -- Best regards, Xue Fuqiao. http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:03 ` eww Xue Fuqiao @ 2013-06-18 23:56 ` Paul Eggert 2013-06-19 7:52 ` eww Xue Fuqiao 2013-06-19 3:03 ` eww Eli Zaretskii 1 sibling, 1 reply; 185+ messages in thread From: Paul Eggert @ 2013-06-18 23:56 UTC (permalink / raw) To: Xue Fuqiao; +Cc: emacs-devel On 06/18/13 16:03, Xue Fuqiao wrote: > "texi2any --info" still use the convention of backtick ` and straight > single quote ' to emulate curly quotes “ ” or ‘ ’. That's not what I observe: texi2any outputs ASCII apostrophe ' for single quotes (both left and right) and ASCII quote " for double quotes (both left and right). This looks OK, though admittedly curly quotes look a bit nicer. > Emacs itself support Unicode > several years ago, what about replacing these characters? At least add > a switch to texi2any. It might be nice to add an option to do that, but I'm not sure I'd make it the default. Even today, I often use Emacs in environments that are ASCII-only, e.g., I may set LC_ALL=C to bypass some internationalization brain damage elsewhere (a performance issue, or a remote login issue). ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:56 ` eww Paul Eggert @ 2013-06-19 7:52 ` Xue Fuqiao 2013-06-19 15:03 ` eww Eli Zaretskii 0 siblings, 1 reply; 185+ messages in thread From: Xue Fuqiao @ 2013-06-19 7:52 UTC (permalink / raw) To: Paul Eggert; +Cc: emacs-devel On Wed, Jun 19, 2013 at 7:56 AM, Paul Eggert <eggert@cs.ucla.edu> wrote: > On 06/18/13 16:03, Xue Fuqiao wrote: >> "texi2any --info" still use the convention of backtick ` and straight >> single quote ' to emulate curly quotes “ ” or ‘ ’. > > That's not what I observe: texi2any outputs ASCII apostrophe ' for > single quotes (both left and right) and ASCII quote " for double > quotes (both left and right). This looks OK, though admittedly > curly quotes look a bit nicer. In my infodir/elisp.info(.gz): For a beginner's introduction to Emacs Lisp, see `An Introduction to Emacs Lisp Programming', by Bob Chassell, also published by the Free Software Foundation. In doc/lispref/intro.texi: For a beginner's introduction to Emacs Lisp, see @cite{An Introduction to Emacs Lisp Programming}, by Bob Chassell, also published by the Free Software Foundation. This is produced by makeinfo version 4.8, maybe I should try it with a newer version? -- Best regards, Xue Fuqiao. http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:52 ` eww Xue Fuqiao @ 2013-06-19 15:03 ` Eli Zaretskii 0 siblings, 0 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 15:03 UTC (permalink / raw) To: Xue Fuqiao; +Cc: eggert, emacs-devel > Date: Wed, 19 Jun 2013 15:52:58 +0800 > From: Xue Fuqiao <xfq.free@gmail.com> > Cc: emacs-devel <emacs-devel@gnu.org> > > In my infodir/elisp.info(.gz): > > For a beginner's introduction to Emacs Lisp, see `An Introduction to > Emacs Lisp Programming', by Bob Chassell, also published by the Free > Software Foundation. > > In doc/lispref/intro.texi: > > For a beginner's introduction to Emacs Lisp, see @cite{An Introduction > to Emacs Lisp Programming}, by Bob Chassell, also published by the > Free Software Foundation. > > This is produced by makeinfo version 4.8, maybe I should try it with a > newer version? Definitely. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:03 ` eww Xue Fuqiao 2013-06-18 23:56 ` eww Paul Eggert @ 2013-06-19 3:03 ` Eli Zaretskii 1 sibling, 0 replies; 185+ messages in thread From: Eli Zaretskii @ 2013-06-19 3:03 UTC (permalink / raw) To: Xue Fuqiao; +Cc: tromey, larsi, monnier, ding, emacs-devel > Date: Wed, 19 Jun 2013 07:03:58 +0800 > From: Xue Fuqiao <xfq.free@gmail.com> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, tromey@redhat.com, larsi@gnus.org, > ding@gnus.org, emacs-devel <emacs-devel@gnu.org> > > Well, I don't see any serious shortcomings, but I found a minor problem: > "texi2any --info" still use the convention of backtick ` and straight > single quote ' to emulate curly quotes “ ” or ‘ ’. It also use other > ASCII kludge such as => instead of ⇒. Emacs itself support Unicode > several years ago, what about replacing these characters? At least add > a switch to texi2any. There's already a switch. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 19:13 ` eww Stefan Monnier 2013-06-18 19:17 ` eww Eli Zaretskii @ 2013-06-18 19:27 ` Tom Tromey 1 sibling, 0 replies; 185+ messages in thread From: Tom Tromey @ 2013-06-18 19:27 UTC (permalink / raw) To: Stefan Monnier; +Cc: Lars Magne Ingebrigtsen, ding, emacs-devel >> Info has a bunch of commands for jumping to the index and searching the >> entire manual, etc. Reading the HTML version of the manual will never >> be as convenient as reading the info version. Stefan> AFAIK, it's easy to make HTML pages which includes most/all the meta Stefan> information that Info pages contain. So you can then provide the "bunch Stefan> of commands" without much trouble. makeinfo (I'm looking at the output of makeinfo 5.0) already supplies a link to the index, like: <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> This seems to be in every node. So I think implementing "i" isn't too bad. makeinfo also lets us know if the node has a menu: <table class="menu" border="0" cellspacing="0"> So "m" and the digit arguments seem doable. Searching seems a bit trickier. I didn't look at issues if the HTML is in a single file rather than a file per node. I also didn't look at info-lookup-symbol. Though I note that at least the Gtk manuals use some similar markup, so moving to HTML would potentially broaden the documentation conveniently available to Emacs users. Tom ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:42 ` eww Tom Tromey @ 2013-06-18 23:40 ` Juri Linkov 2013-06-19 0:51 ` eww Stefan Monnier 2013-06-19 7:34 ` eww Lars Magne Ingebrigtsen 2013-06-19 14:06 ` eww Drew Adams 2 siblings, 2 replies; 185+ messages in thread From: Juri Linkov @ 2013-06-18 23:40 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: Tom Tromey, ding, emacs-devel >> I'm interested in the possibility of replacing info with html+eww. > > As for this, that's not very realistic. info has a ton of commands > specially suited for navigating manuals, and does a really good job. > eww is a general web browser, and trying to shoe-horn all the missing > info functionality into it would be a mess, I think. There are two ways to integrate eww and info: 1. eww could support browser extensions, so e.g. when it detects a navigable manual, it could load a new extension eww-info.el that will support next/prev/up navigation and specific commands such as index and search, etc. 2. Info could reuse the layout engine from shr to render its content to produce nicer output. BTW, two additional questions: I noticed that in net/browse-url.el you added eww between Mosaic and Mosaic CCI in `browse-url-browser-function'. Why such a strange place? I think eww as a native browser deserves to be placed first in the list of supported browsers. Also while trying to customize `browse-url-browser-function' to eww, it fails to browse links. Perhaps, this should be fixed by creating a new function `browse-url-eww' similar to other `browse-url-...' functions? Another question is that `M-x eww RET http://duckduckgo.com/?q=my+user+agent RET' says that the user agent of eww is just "URL/Emacs". Any respectable browser has a longish text for the User-Agent. So its User-Agent would be more informative with something like "eww/5.130008 URL/1.1 Emacs/24.3.50 (gnu/linux)"... ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:40 ` eww Juri Linkov @ 2013-06-19 0:51 ` Stefan Monnier 2013-06-19 10:34 ` eww Christopher Schmidt 2013-06-19 7:34 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2013-06-19 0:51 UTC (permalink / raw) To: Juri Linkov; +Cc: Tom Tromey, Lars Magne Ingebrigtsen, ding, emacs-devel > Another question is that > `M-x eww RET http://duckduckgo.com/?q=my+user+agent RET' > says that the user agent of eww is just "URL/Emacs". > Any respectable browser has a longish text for the User-Agent. > So its User-Agent would be more informative with something like > "eww/5.130008 URL/1.1 Emacs/24.3.50 (gnu/linux)"... I think less is more here. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 0:51 ` eww Stefan Monnier @ 2013-06-19 10:34 ` Christopher Schmidt 0 siblings, 0 replies; 185+ messages in thread From: Christopher Schmidt @ 2013-06-19 10:34 UTC (permalink / raw) To: ding, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Another question is that >> `M-x eww RET http://duckduckgo.com/?q=my+user+agent RET' >> says that the user agent of eww is just "URL/Emacs". >> Any respectable browser has a longish text for the User-Agent. >> So its User-Agent would be more informative with something like >> "eww/5.130008 URL/1.1 Emacs/24.3.50 (gnu/linux)"... > > I think less is more here. Why do you think so? In my opinion, it does not make any practical difference considering the minimal userbase. Christopher ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 23:40 ` eww Juri Linkov 2013-06-19 0:51 ` eww Stefan Monnier @ 2013-06-19 7:34 ` Lars Magne Ingebrigtsen 2013-06-20 22:52 ` eww Juri Linkov 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-19 7:34 UTC (permalink / raw) To: Juri Linkov; +Cc: Tom Tromey, emacs-devel Juri Linkov <juri@jurta.org> writes: > BTW, two additional questions: I noticed that in net/browse-url.el you added > eww between Mosaic and Mosaic CCI in `browse-url-browser-function'. > Why such a strange place? I just picked a place at random after the more popular browsers. Speaking of which, should that list be cleaned up a bit? There's a lot of browsers in there which haven't existed in a decade... > Also while trying to customize `browse-url-browser-function' to eww, > it fails to browse links. Perhaps, this should be fixed by creating a new > function `browse-url-eww' similar to other `browse-url-...' functions? It should have been `eww-browse-url' instead of the plain `eww' command. I'll fix that. > Another question is that > `M-x eww RET http://duckduckgo.com/?q=my+user+agent RET' > says that the user agent of eww is just "URL/Emacs". > Any respectable browser has a longish text for the User-Agent. > So its User-Agent would be more informative with something like > "eww/5.130008 URL/1.1 Emacs/24.3.50 (gnu/linux)"... I'm kinda for keeping the User-Agent short and sweet. But is URL/Emacs valid? It's supposed to be Client/Version. I guess "Emacs" is a version of sorts... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 7:34 ` eww Lars Magne Ingebrigtsen @ 2013-06-20 22:52 ` Juri Linkov 2013-06-21 6:56 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: Juri Linkov @ 2013-06-20 22:52 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel >> Also while trying to customize `browse-url-browser-function' to eww, >> it fails to browse links. Perhaps, this should be fixed by creating a new >> function `browse-url-eww' similar to other `browse-url-...' functions? > > It should have been `eww-browse-url' instead of the plain `eww' > command. I'll fix that. Thanks. Now there is another problem - when `browse-url-browser-function' is customized to `eww-browse-url', typing `M-x webjump RET duckduckgo RET C-x C-q RET' visits the URL https://duckduckgo.com/?q=C%2Dx+C%2Dq with the information about Emacs keybindings and commands. Or to get more relevant results prepend the query with the keyword "emacs", e.g. https://duckduckgo.com/?q=emacs+C%2Dx+C%2Dq The problem is that the header line is broken - it doesn't handle % in the URL. This could be fixed the same way as `Info-set-mode-line' replaces a single % with double %%. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 22:52 ` eww Juri Linkov @ 2013-06-21 6:56 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-21 6:56 UTC (permalink / raw) To: Juri Linkov; +Cc: emacs-devel Juri Linkov <juri@jurta.org> writes: > The problem is that the header line is broken - it doesn't handle % > in the URL. This could be fixed the same way as `Info-set-mode-line' > replaces a single % with double %%. Ok; I've now added % quoting. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* RE: eww 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:42 ` eww Tom Tromey 2013-06-18 23:40 ` eww Juri Linkov @ 2013-06-19 14:06 ` Drew Adams 2013-06-19 15:36 ` eww Jambunathan K 2 siblings, 1 reply; 185+ messages in thread From: Drew Adams @ 2013-06-19 14:06 UTC (permalink / raw) To: emacs-devel From http://lars.ingebrigtsen.no/2013/06/eww.html: > I came up with the name of the browser while half-asleep: eww! > I don't quite know what the second w is supposed to stand for > (Emacs Web Wowser?)... Another name suggestion, in the tradition of Gnu, Bison, Yacc,... Ewe - Emacs web environment Presumably, like all things Emacs, it will grow to be more than your average browser (or even wowser). ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 14:06 ` eww Drew Adams @ 2013-06-19 15:36 ` Jambunathan K 2013-06-20 4:10 ` eww Richard Stallman 0 siblings, 1 reply; 185+ messages in thread From: Jambunathan K @ 2013-06-19 15:36 UTC (permalink / raw) To: emacs-devel Drew Adams <drew.adams@oracle.com> writes: > From http://lars.ingebrigtsen.no/2013/06/eww.html: > >> I came up with the name of the browser while half-asleep: eww! >> I don't quite know what the second w is supposed to stand for >> (Emacs Web Wowser?)... > Another name suggestion, in the tradition of Gnu, Bison, Yacc,... > > Ewe - Emacs web environment > > Presumably, like all things Emacs, it will grow to be more than > your average browser (or even wowser). eww => Emacs Walks the Web "Walking the web" is same as "Navigating the Netscape". ---------------------------------------------------------------- Can M-x browse-url-emacs RET do what the new wowser does (or what the shr.el does) As a side note, browse-url-emacs surprises me. It leaves the HTML tags around. May be, it shouldn't. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 15:36 ` eww Jambunathan K @ 2013-06-20 4:10 ` Richard Stallman 2013-06-20 4:28 ` eww Paul Eggert 2013-06-20 7:18 ` eww Lars Magne Ingebrigtsen 0 siblings, 2 replies; 185+ messages in thread From: Richard Stallman @ 2013-06-20 4:10 UTC (permalink / raw) To: Jambunathan K; +Cc: emacs-devel "Eww" sounds like a common expression of disgust. Is the code really that ugly? ;-). -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. NSA and FBI agents reading my email: consider whether defending the US Constitution against all enemies, foreign or domestic, requires you to follow Snowden's path. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 4:10 ` eww Richard Stallman @ 2013-06-20 4:28 ` Paul Eggert 2013-06-20 7:18 ` eww Lars Magne Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Paul Eggert @ 2013-06-20 4:28 UTC (permalink / raw) To: emacs-devel On 06/19/2013 09:10 PM, Richard Stallman wrote: > "Eww" sounds like a common expression of disgust. Is the code really > that ugly? ;-). "Eww" stands for "Extreme web winning", right? So it should be OK. Eww, what a hack! ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-20 4:10 ` eww Richard Stallman 2013-06-20 4:28 ` eww Paul Eggert @ 2013-06-20 7:18 ` Lars Magne Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-20 7:18 UTC (permalink / raw) To: Richard Stallman; +Cc: Jambunathan K, emacs-devel Richard Stallman <rms@gnu.org> writes: > "Eww" sounds like a common expression of disgust. Is the code really > that ugly? ;-). I hope the code isn't, but I think the normal response to a non-pixel-based rendering of HTML is "eww". :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 14:53 eww Lars Magne Ingebrigtsen 2013-06-16 15:21 ` eww Adam Sjøgren 2013-06-18 2:19 ` eww Tom Tromey @ 2013-06-18 11:32 ` joakim 2013-06-18 12:16 ` eww Andreas Schwab 2013-06-18 13:57 ` eww Lars Magne Ingebrigtsen 2013-06-19 10:21 ` eww Ivan Kanis 2013-08-01 11:59 ` eww John Williams 4 siblings, 2 replies; 185+ messages in thread From: joakim @ 2013-06-18 11:32 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > eww probably has a lot of stuff that could still be fixed up, but the > basics are working now. That is, you can search for stuff on Google and > visit Wikipedia. :-) > > I wrote it up a bit here: > > http://lars.ingebrigtsen.no/2013/06/eww.html While you are at it, could you implement something like the patch below? I use it in the xwidget branch for simplifying browsing in emacs. diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 695b7a1..1fa52ce 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -667,7 +667,7 @@ regarding its parameter treatment." ;; functions allows them to be stand-alone commands, making it easier ;; to switch between browsers. -(defun browse-url-interactive-arg (prompt) +(defun browse-url-interactive-arg (prompt &optional default-url) "Read a URL from the minibuffer, prompting with PROMPT. If `transient-mark-mode' is non-nil and the mark is active, it defaults to the current region, else to the URL at or before @@ -684,7 +684,8 @@ for use in `interactive'." "[\t\r\f\n ]+" "" (buffer-substring-no-properties (region-beginning) (region-end)))) - (browse-url-url-at-point))) + (browse-url-url-at-point) + default-url)) (not (eq (null browse-url-new-window-flag) (null current-prefix-arg))))) @@ -791,6 +792,13 @@ narrowed." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Browser-independent commands +(defun url-tidy (url) + "Tidy up URL as much as possible." + (if (equal 0 (string-match ".*://" url)) + url + (concat "http://" url) ;;TODO guess more url forms, like mailto + )) + ;; A generic command to call the current browse-url-browser-function ;;;###autoload @@ -803,6 +811,7 @@ first, if that exists." (interactive (browse-url-interactive-arg "URL: ")) (unless (called-interactively-p 'interactive) (setq args (or args (list browse-url-new-window-flag)))) + (setq url (url-tidy url)) (let ((process-environment (copy-sequence process-environment)) (function (or (and (string-match "\\`mailto:" url) browse-url-mailto-function) -- Joakim Verona ^ permalink raw reply related [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:32 ` eww joakim @ 2013-06-18 12:16 ` Andreas Schwab 2013-06-18 13:57 ` eww Lars Magne Ingebrigtsen 1 sibling, 0 replies; 185+ messages in thread From: Andreas Schwab @ 2013-06-18 12:16 UTC (permalink / raw) To: joakim; +Cc: Lars Magne Ingebrigtsen, ding, emacs-devel joakim@verona.se writes: > + (if (equal 0 (string-match ".*://" url)) (string-match "://" url) Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 11:32 ` eww joakim 2013-06-18 12:16 ` eww Andreas Schwab @ 2013-06-18 13:57 ` Lars Magne Ingebrigtsen 2013-06-18 14:01 ` eww joakim 1 sibling, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-06-18 13:57 UTC (permalink / raw) To: joakim; +Cc: ding, emacs-devel joakim@verona.se writes: > (interactive (browse-url-interactive-arg "URL: ")) > (unless (called-interactively-p 'interactive) > (setq args (or args (list browse-url-new-window-flag)))) > + (setq url (url-tidy url)) I'm not sure I see the utility here. I think `browse-url' should (at least when called from a program) fetch exactly what it's being asked to fetch, and not do a DWIM analysis. That should be up to the callers. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-18 13:57 ` eww Lars Magne Ingebrigtsen @ 2013-06-18 14:01 ` joakim 0 siblings, 0 replies; 185+ messages in thread From: joakim @ 2013-06-18 14:01 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > joakim@verona.se writes: > >> (interactive (browse-url-interactive-arg "URL: ")) >> (unless (called-interactively-p 'interactive) >> (setq args (or args (list browse-url-new-window-flag)))) >> + (setq url (url-tidy url)) > > I'm not sure I see the utility here. I think `browse-url' should (at > least when called from a program) fetch exactly what it's being asked to > fetch, and not do a DWIM analysis. That should be up to the callers. It was meant only for interactive use. Maybe that wasnt obvious. -- Joakim Verona ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 14:53 eww Lars Magne Ingebrigtsen ` (2 preceding siblings ...) 2013-06-18 11:32 ` eww joakim @ 2013-06-19 10:21 ` Ivan Kanis 2013-06-19 11:52 ` eww Steinar Bang 2013-06-19 12:14 ` eww Ivan Kanis 2013-08-01 11:59 ` eww John Williams 4 siblings, 2 replies; 185+ messages in thread From: Ivan Kanis @ 2013-06-19 10:21 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel [-- Attachment #1: Type: text/plain, Size: 397 bytes --] June, 16 at 16:53 Lars Magne Ingebrigtsen wrote: > eww probably has a lot of stuff that could still be fixed up, but the > basics are working now. That is, you can search for stuff on Google and > visit Wikipedia. :-) Exciting stuff. I tried it on today's git mirror of bzr. It doesn't display anything. I have tried: - google.com - kanis.fr - ivan.kanis.fr I have attached a snapshot. [-- Attachment #2: 2013-06-19-121709_820x960_scrot.png --] [-- Type: image/png, Size: 32726 bytes --] ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 10:21 ` eww Ivan Kanis @ 2013-06-19 11:52 ` Steinar Bang 2013-06-19 12:14 ` eww Ivan Kanis 1 sibling, 0 replies; 185+ messages in thread From: Steinar Bang @ 2013-06-19 11:52 UTC (permalink / raw) To: emacs-devel; +Cc: ding >>>>> Ivan Kanis <ivan@kanis.fr>: > I tried it on today's git mirror of bzr. It doesn't display anything. I'm guessing Lars works directly against the gnus git repo, so both Emacs bzr and the git mirror of Emacs bzr would lag in comparison to that. The Gnus git repo is here: http://git.gnus.org/ ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-19 10:21 ` eww Ivan Kanis 2013-06-19 11:52 ` eww Steinar Bang @ 2013-06-19 12:14 ` Ivan Kanis 1 sibling, 0 replies; 185+ messages in thread From: Ivan Kanis @ 2013-06-19 12:14 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: ding, emacs-devel June, 19 at 12:21 Ivan wrote: > I tried it on today's git mirror of bzr. It doesn't display anything. I > have tried: > > - google.com > - kanis.fr > - ivan.kanis.fr > > I have attached a snapshot. It works with -Q. Something is wrong with my configuration. Sorry for the noise... -- Rule your mind or it will rule you. -- Horace ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-06-16 14:53 eww Lars Magne Ingebrigtsen ` (3 preceding siblings ...) 2013-06-19 10:21 ` eww Ivan Kanis @ 2013-08-01 11:59 ` John Williams 2013-08-02 0:20 ` eww John Williams 4 siblings, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-01 11:59 UTC (permalink / raw) To: emacs-devel; +Cc: ding I would like to help test eww, but I am not a Lisp programmer (although I have hobby-level development experience with other programming languages). I can see here: http://git.gnus.org/cgit/gnus.git/tree/lisp?id=d54fa592ab919f897f6d0505b70beb90153e561f that eww.el is in some git branch, but when I follow the instructions here: http://git.gnus.org/cgit/gnus.git/about/ and say: "git clone http://git.gnus.org/gnus.git && cd gnus && git checkout m0-7" I cannot see this file. Could someone help me check out a revision/branch/whatever that includes eew please? And also, tell me how a non-coder (or "a little knowledge is a dangerous thing" coder) could help with the development of this very, very exciting project? Thanks heaps, John ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-01 11:59 ` eww John Williams @ 2013-08-02 0:20 ` John Williams 2013-08-02 0:27 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-02 0:20 UTC (permalink / raw) To: emacs-devel; +Cc: ding Actually, never mind. I've downloaded (via git) and compiled the current version of Emacs (GNU Emacs 24.3.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.2) of 2013-08-02 on localhost.localdomain). But when I say "M-x eww RET http://www.gnu.org RET" I get a totally blank buffer. The eww menu shows up, but when I choose the option "Browse with external browser", I get the error: call-interactively: Symbol's value as variable is void: shr-external-browser Thanks for your work on this great project, John ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 0:20 ` eww John Williams @ 2013-08-02 0:27 ` Lars Magne Ingebrigtsen 2013-08-02 0:46 ` eww John Williams 2013-08-02 19:48 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-02 0:27 UTC (permalink / raw) To: John Williams; +Cc: ding, emacs-devel John Williams <john.williams@otago.ac.nz> writes: > But when I say "M-x eww RET http://www.gnu.org RET" I get a totally > blank buffer. I don't get a blank buffer. Have you compiled your Emacs with libxml support? -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 0:27 ` eww Lars Magne Ingebrigtsen @ 2013-08-02 0:46 ` John Williams 2013-08-02 12:27 ` eww Lars Magne Ingebrigtsen 2013-08-02 19:48 ` eww Richard Stallman 1 sibling, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-02 0:46 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > John Williams <john.williams@otago.ac.nz> writes: > >> But when I say "M-x eww RET http://www.gnu.org RET" I get a totally >> blank buffer. > > I don't get a blank buffer. Have you compiled your Emacs with libxml > support? Yes, AFAICT. When I ran `sh autogen.sh && configure' I get the result below. Thanks so much for your quick reply, Lars. You are amazing, and I really appreciate your work on Gnus and Gmane. Configured for `x86_64-unknown-linux-gnu'. Where should the build process find the source code? /home/john/Downloads/emacs What compiler should emacs be built with? gcc -std=gnu99 -g3 -O2 Should Emacs use the GNU version of malloc? yes (Using Doug Lea's new malloc from the GNU C Library.) Should Emacs use a relocating allocator for buffers? no Should Emacs use mmap(2) for buffer allocation? no What window system should Emacs use? x11 What toolkit should Emacs use? GTK3 Where do we find X Windows header files? Standard dirs Where do we find X Windows libraries? Standard dirs Does Emacs use -lXaw3d? no Does Emacs use -lXpm? yes Does Emacs use -ljpeg? yes Does Emacs use -ltiff? yes Does Emacs use a gif library? yes -lgif Does Emacs use -lpng? yes Does Emacs use -lrsvg-2? no Does Emacs use imagemagick? no Does Emacs support sound? yes Does Emacs use -lgpm? no Does Emacs use -ldbus? yes Does Emacs use -lgconf? no Does Emacs use GSettings? yes Does Emacs use a file notification library? yes -lgio (gfile) Does Emacs use access control lists? no Does Emacs use -lselinux? no Does Emacs use -lgnutls? yes Does Emacs use -lxml2? yes Does Emacs use -lfreetype? yes Does Emacs use -lm17n-flt? no Does Emacs use -lotf? no Does Emacs use -lxft? yes Does Emacs use toolkit scroll bars? yes ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 0:46 ` eww John Williams @ 2013-08-02 12:27 ` Lars Magne Ingebrigtsen 2013-08-02 21:39 ` eww John Williams 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-02 12:27 UTC (permalink / raw) To: John Williams; +Cc: emacs-devel John Williams <john.williams@otago.ac.nz> writes: > Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > >> John Williams <john.williams@otago.ac.nz> writes: >> >>> But when I say "M-x eww RET http://www.gnu.org RET" I get a totally >>> blank buffer. >> >> I don't get a blank buffer. Have you compiled your Emacs with libxml >> support? > Yes, AFAICT. [...] > Does Emacs use -lxml2? yes Hm. So that should be OK, then. And since it pops you to the eww buffer, then it means that it got a response. You just get a blank buffer? No error messages? `(setq debug-on-error t)' gives you no backtrace? -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 12:27 ` eww Lars Magne Ingebrigtsen @ 2013-08-02 21:39 ` John Williams 2013-08-03 11:08 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-02 21:39 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > John Williams <john.williams@otago.ac.nz> writes: > >> Lars Magne Ingebrigtsen <larsi@gnus.org> writes: >> >>> John Williams <john.williams@otago.ac.nz> writes: >>> >>>> But when I say "M-x eww RET http://www.gnu.org RET" I get a totally >>>> blank buffer. >>> >>> I don't get a blank buffer. Have you compiled your Emacs with libxml >>> support? >> Yes, AFAICT. > > [...] > >> Does Emacs use -lxml2? yes > > Hm. So that should be OK, then. And since it pops you to the eww > buffer, then it means that it got a response. > > You just get a blank buffer? No error messages? `(setq debug-on-error t)' > gives you no backtrace? Nope, nothing. Here is the entire contents of the *Messages* buffer after stating a new session and immediately saying `M-x eww RET RET', i.e. visiting "https://duckduckgo.com/html/?q=" : ------------------- Loading /home/john/.recentf...done Could not deduce mode name from keymap name [8 times] For information about GNU Emacs and the GNU system, type C-h C-a. Package assoc is obsolete! Contacting host: duckduckgo.com:443 gnutls.c: [1] Note that the security level of the Diffie-Hellman key exchange has been lowered to 256 bits and this may allow decryption of the session data ------------------- Is the message about assoc being obsolete relevant? Lars, thank you so much for your help. I know how busy you are and I really apreciate you taking the time to help me! Cheers, John ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 21:39 ` eww John Williams @ 2013-08-03 11:08 ` Lars Magne Ingebrigtsen 2013-08-04 3:59 ` eww John Williams 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-03 11:08 UTC (permalink / raw) To: John Williams; +Cc: emacs-devel John Williams <john.williams@otago.ac.nz> writes: > Loading /home/john/.recentf...done > Could not deduce mode name from keymap name [8 times] > For information about GNU Emacs and the GNU system, type C-h C-a. > Package assoc is obsolete! > Contacting host: duckduckgo.com:443 > gnutls.c: [1] Note that the security level of the Diffie-Hellman key > exchange has been lowered to 256 bits and this may allow decryption of > the session data > ------------------- > > Is the message about assoc being obsolete relevant? Is it output by eww, or something before you call eww? What does (url-retrieve "https://duckduckgo.com/" (lambda (&rest ignore) (switch-to-buffer (current-buffer)))) do for you? -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-03 11:08 ` eww Lars Magne Ingebrigtsen @ 2013-08-04 3:59 ` John Williams 2013-08-05 2:10 ` eww Lars Magne Ingebrigtsen 0 siblings, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-04 3:59 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > John Williams <john.williams@otago.ac.nz> writes: > >> Loading /home/john/.recentf...done >> Could not deduce mode name from keymap name [8 times] >> For information about GNU Emacs and the GNU system, type C-h C-a. >> Package assoc is obsolete! >> Contacting host: duckduckgo.com:443 >> gnutls.c: [1] Note that the security level of the Diffie-Hellman key >> exchange has been lowered to 256 bits and this may allow decryption of >> the session data >> ------------------- >> >> Is the message about assoc being obsolete relevant? > > Is it output by eww, or something before you call eww? By something I call before eww. > What does > > (url-retrieve "https://duckduckgo.com/" > (lambda (&rest ignore) > (switch-to-buffer (current-buffer)))) > > do for you? It retrieves and displays the requested page in its full HTML glory (i.e. as text, not rendered). As I mentioned, calling eww with my .emacs included produces an error, but `emacs -q` does not. I saved the two buffers and diffed them. The only difference was the timestamps ("Date" and "Expires"). But now something is different with the way the page is rendered. When I previously reported this (perhaps) bug, nothing was displayed at all. In the intervening time I've changed my .emacs (but don't have a changelog, sorry) and now the DDG page is _partially_ displayed. The top line of the buffer reads "https://duckduckgo.com/html/?q=" and the cursor is blinking on the next line. But I can't enter anything, and the text entry field is not displayed. The eww menu is displayed and works fine. Thanks for your help, John ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-04 3:59 ` eww John Williams @ 2013-08-05 2:10 ` Lars Magne Ingebrigtsen 2013-08-05 3:29 ` eww John Williams 2013-08-07 0:46 ` eww John Williams 0 siblings, 2 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-05 2:10 UTC (permalink / raw) To: John Williams; +Cc: emacs-devel John Williams <john.williams@otago.ac.nz> writes: > As I mentioned, calling eww with my .emacs included produces an error, > but `emacs -q` does not. I saved the two buffers and diffed them. > The only difference was the timestamps ("Date" and "Expires"). What two buffers are you diffing? > But now something is different with the way the page is rendered. When > I previously reported this (perhaps) bug, nothing was displayed at all. > In the intervening time I've changed my .emacs (but don't have a > changelog, sorry) and now the DDG page is _partially_ displayed. The > top line of the buffer reads "https://duckduckgo.com/html/?q=" and the > cursor is blinking on the next line. > > But I can't enter anything, and the text entry field is not displayed. > The eww menu is displayed and works fine. But if you start emacs with -Q, then everything works fine? Then I'd suggest trying to remove stuff from your .emacs until it starts working. -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-05 2:10 ` eww Lars Magne Ingebrigtsen @ 2013-08-05 3:29 ` John Williams 2013-08-07 0:46 ` eww John Williams 1 sibling, 0 replies; 185+ messages in thread From: John Williams @ 2013-08-05 3:29 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > John Williams <john.williams@otago.ac.nz> writes: > >> As I mentioned, calling eww with my .emacs included produces an error, >> but `emacs -q` does not. I saved the two buffers and diffed them. >> The only difference was the timestamps ("Date" and "Expires"). > > What two buffers are you diffing? Sorry, I should have been more explicit. The buffers are the data returned from DDG after saying `M-x eww RET RET`. One was the result after launching emacs with no arguments; the other was after launching `emacs -q`. > But if you start emacs with -Q, then everything works fine? Then I'd > suggest trying to remove stuff from your .emacs until it starts > working. You're absolutely right. I will do so and let you know what seems to be causing this problem. Thanks for your help! ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-05 2:10 ` eww Lars Magne Ingebrigtsen 2013-08-05 3:29 ` eww John Williams @ 2013-08-07 0:46 ` John Williams 2013-08-07 1:24 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: John Williams @ 2013-08-07 0:46 UTC (permalink / raw) To: emacs-devel Lars Magne Ingebrigtsen <larsi@gnus.org> writes: > John Williams <john.williams@otago.ac.nz> writes: > >> As I mentioned, calling eww with my .emacs included produces an error, >> but `emacs -q` does not. I saved the two buffers and diffed them. >> The only difference was the timestamps ("Date" and "Expires"). > > What two buffers are you diffing? > >> But now something is different with the way the page is rendered. When >> I previously reported this (perhaps) bug, nothing was displayed at all. >> In the intervening time I've changed my .emacs (but don't have a >> changelog, sorry) and now the DDG page is _partially_ displayed. The >> top line of the buffer reads "https://duckduckgo.com/html/?q=" and the >> cursor is blinking on the next line. >> >> But I can't enter anything, and the text entry field is not displayed. >> The eww menu is displayed and works fine. > > But if you start emacs with -Q, then everything works fine? Then I'd > suggest trying to remove stuff from your .emacs until it starts working. Ironically, it was the latest version of Gnus that seemed to be causing the problem! When I commented out: (setq load-path (cons (expand-file-name "~/.emacs.d/src/gnus/lisp") load-path)) (require 'gnus-load) the warning about package assoc being obsolete disappeared, and eww now works fine! The code in that directory was cloned from git a couple of weeks ago. I can't tell what version it is, because the ChangeLog does not seem to be current. Is there anything else I can do to help track down this behaviour? Cheers, John ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-07 0:46 ` eww John Williams @ 2013-08-07 1:24 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-07 1:24 UTC (permalink / raw) To: John Williams; +Cc: emacs-devel John Williams <john.williams@otago.ac.nz> writes: > (setq load-path (cons (expand-file-name "~/.emacs.d/src/gnus/lisp") load-path)) You're probably just picking up an old version of shr or something. > Is there anything else I can do to help track down this behaviour? I don't think there's anything much to track down. >"? -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 0:27 ` eww Lars Magne Ingebrigtsen 2013-08-02 0:46 ` eww John Williams @ 2013-08-02 19:48 ` Richard Stallman 2013-08-03 11:30 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Richard Stallman @ 2013-08-02 19:48 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: john.williams, ding, emacs-devel [ To any NSA and FBI agents reading my email: please consider [ whether defending the US Constitution against all enemies, [ foreign or domestic, requires you to follow Snowden's example. > But when I say "M-x eww RET http://www.gnu.org RET" I get a totally > blank buffer. I don't get a blank buffer. Have you compiled your Emacs with libxml support? Suppose he has done that: isn't it a bug that M-x eww gives a blank buffer rather than a clear and specific error message? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2013-08-02 19:48 ` eww Richard Stallman @ 2013-08-03 11:30 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-03 11:30 UTC (permalink / raw) To: Richard Stallman; +Cc: john.williams, ding, emacs-devel Richard Stallman <rms@gnu.org> writes: > Suppose he has done that: isn't it a bug that M-x eww gives a blank > buffer rather than a clear and specific error message? Definitely. But we're trying to determine what actually bugs out here, which is still unclear. -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php ^ permalink raw reply [flat|nested] 185+ messages in thread
* eww @ 2014-01-12 13:46 Richard Stallman 2014-01-12 13:50 ` eww Juanma Barranquero 0 siblings, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-12 13:46 UTC (permalink / raw) To: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Before the first release that contains eww, I think we should set up natural aliases for the commands, perhaps using the name "browse" or "www" or "web" instead of "eww". With natural names, users won't have to wonder, "What in the world did they call that?" We can avoid adding one more difficulty to learning to use Emacs. I think epa also needs a set of natural aliases, with "crypt" instead of "epa". -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-12 13:46 eww Richard Stallman @ 2014-01-12 13:50 ` Juanma Barranquero 2014-01-13 11:20 ` eww Bastien 2014-01-13 15:41 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Juanma Barranquero @ 2014-01-12 13:50 UTC (permalink / raw) To: Richard Stallman; +Cc: Emacs developers On Sun, Jan 12, 2014 at 2:46 PM, Richard Stallman <rms@gnu.org> wrote: > Before the first release that contains eww, I think we should set up > natural aliases for the commands, perhaps using the name "browse" or > "www" or "web" instead of "eww". With natural names, users won't have > to wonder, "What in the world did they call that?" We can avoid > adding one more difficulty to learning to use Emacs. > > I think epa also needs a set of natural aliases, with "crypt" instead > of "epa". We introduced define-alternatives for exactly that case. It's just that nobody has used it yet. j ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-12 13:50 ` eww Juanma Barranquero @ 2014-01-13 11:20 ` Bastien 2014-01-13 17:44 ` eww Davis Herring ` (3 more replies) 2014-01-13 15:41 ` eww Richard Stallman 1 sibling, 4 replies; 185+ messages in thread From: Bastien @ 2014-01-13 11:20 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Richard Stallman, Emacs developers [-- Attachment #1: Type: text/plain, Size: 1431 bytes --] Juanma Barranquero <lekktu@gmail.com> writes: > On Sun, Jan 12, 2014 at 2:46 PM, Richard Stallman <rms@gnu.org> wrote: > >> Before the first release that contains eww, I think we should set up >> natural aliases for the commands, perhaps using the name "browse" or >> "www" or "web" instead of "eww". With natural names, users won't have >> to wonder, "What in the world did they call that?" We can avoid >> adding one more difficulty to learning to use Emacs. >> >> I think epa also needs a set of natural aliases, with "crypt" instead >> of "epa". > > We introduced define-alternatives for exactly that case. It's just > that nobody has used it yet. Try this: (define-alternatives web) (setq web-alternatives '(("eww" . eww))) M-x web RET TAB RET Does not work without the attached patch. I think it's safe to recommend `define-alternatives' for commands only, not for function, and the docstring suggests this too. If so, I'll apply the patch. Two other problems: 1) when there is only one "alternative", the user is asked which one he wants. I think COMMAND should use the alternative without asking, and tell the user how to add other alternatives through COMMAND-alternatives for 2 secs the first time the alternative is chosen. 2) Once an alternative is chosen, setting COMMAND-alternatives will not take any effect, and I don't see a way to cancel the first choice. What do you think? [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: simple.el.patch --] [-- Type: text/x-diff, Size: 857 bytes --] === modified file 'lisp/simple.el' *** lisp/simple.el 2014-01-12 04:00:03 +0000 --- lisp/simple.el 2014-01-13 11:10:41 +0000 *************** *** 7694,7700 **** (customize-save-variable ',varimp-sym (cdr (assoc-string val ,varalt-sym)))))) (if ,varimp-sym ! (funcall ,varimp-sym) (message ,(format "No implementation selected for command `%s'" command-name))))))) --- 7694,7700 ---- (customize-save-variable ',varimp-sym (cdr (assoc-string val ,varalt-sym)))))) (if ,varimp-sym ! (call-interactively ,varimp-sym) (message ,(format "No implementation selected for command `%s'" command-name))))))) [-- Attachment #3: Type: text/plain, Size: 14 bytes --] -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 11:20 ` eww Bastien @ 2014-01-13 17:44 ` Davis Herring 2014-01-13 22:19 ` eww Bastien 2014-01-13 19:36 ` eww Richard Stallman ` (2 subsequent siblings) 3 siblings, 1 reply; 185+ messages in thread From: Davis Herring @ 2014-01-13 17:44 UTC (permalink / raw) To: Bastien; +Cc: Juanma Barranquero, Richard Stallman, Emacs developers > 2) Once an alternative is chosen, setting COMMAND-alternatives will > not take any effect, and I don't see a way to cancel the first > choice. So introduce a function `add-alternative' that extends the appropriate list and also cancels the user's choice (or rather, makes it the default for the next prompt). Of course, there's an issue of timing: you want the behavior I just described when installing a new package, but not when loading it in a new Emacs after the choice has been made (again). Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 17:44 ` eww Davis Herring @ 2014-01-13 22:19 ` Bastien 0 siblings, 0 replies; 185+ messages in thread From: Bastien @ 2014-01-13 22:19 UTC (permalink / raw) To: Davis Herring; +Cc: Juanma Barranquero, Richard Stallman, Emacs developers Davis Herring <herring@lanl.gov> writes: > So introduce a function `add-alternative' that extends the appropriate > list and also cancels the user's choice (or rather, makes it the default > for the next prompt). Yes, but let's go back to this after the release (and when `define-alternatives' is used at least once!) -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 11:20 ` eww Bastien 2014-01-13 17:44 ` eww Davis Herring @ 2014-01-13 19:36 ` Richard Stallman 2014-01-13 22:29 ` eww Bastien 2014-01-13 19:36 ` eww Richard Stallman 2014-01-13 22:18 ` eww Bastien 3 siblings, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-13 19:36 UTC (permalink / raw) To: Bastien; +Cc: lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] (define-alternatives web) (setq web-alternatives '(("eww" . eww))) M-x web RET TAB RET If the only user-level entry point for eww is `eww', this would do the right thing. Is that the case? For epa, there are several such entry points, including epa-mail-encrypt and epa-insert-keys. We could do (define-alternatives crypt-mail-encrypt) (define-alternatives crypt-insert-keys) with the suitable variable values, but that won't give the right result. The user would be asked to choose an alternative for crypt-mail-encrypt, and independently to choose an alternative for crypt-insert-keys. What we really want is for the two commands to be synced so that a single choice of alternative applies to both. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 19:36 ` eww Richard Stallman @ 2014-01-13 22:29 ` Bastien 2014-01-14 17:06 ` eww Richard Stallman 0 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-13 22:29 UTC (permalink / raw) To: Richard Stallman; +Cc: lekktu, emacs-devel Richard Stallman <rms@gnu.org> writes: > For epa, there are several such entry points, including > epa-mail-encrypt and epa-insert-keys. We could do > > (define-alternatives crypt-mail-encrypt) > (define-alternatives crypt-insert-keys) > with the suitable variable values, but that won't give > the right result. The user would be asked to choose an > alternative for crypt-mail-encrypt, and independently > to choose an alternative for crypt-insert-keys. > > What we really want is for the two commands to be synced > so that a single choice of alternative applies to both. I guess for epa-* what is really needed is a better prefix, not a UI level for the users to chose alternatives--but maybe that's just because I don't know alternatives to epa-*. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 22:29 ` eww Bastien @ 2014-01-14 17:06 ` Richard Stallman 2014-01-14 20:22 ` eww Bastien 0 siblings, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-14 17:06 UTC (permalink / raw) To: Bastien; +Cc: lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] I guess for epa-* what is really needed is a better prefix, not a UI level for the users to chose alternatives--but maybe that's just because I don't know alternatives to epa-*. Are there any alternatives to epa that we ought to support? If not, aliases would do fine. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 17:06 ` eww Richard Stallman @ 2014-01-14 20:22 ` Bastien 2014-01-15 12:29 ` eww Richard Stallman 0 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-14 20:22 UTC (permalink / raw) To: Richard Stallman; +Cc: lekktu, emacs-devel Richard Stallman <rms@gnu.org> writes: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > I guess for epa-* what is really needed is a better prefix, > not a UI level for the users to chose alternatives--but maybe > that's just because I don't know alternatives to epa-*. > > Are there any alternatives to epa > that we ought to support? I don't think there is one, but I just browse this page: http://www.emacswiki.org/emacs/CategoryCryptography From what I saw, mailcrypt and pgg used to be widely used, but mailcrypt is not active since 2002 and pgg is marked as `obsolete' in Emacs. > If not, aliases would do fine. The problem is: what is the set of epa-* command for which an alias is useful? PS: I'm not using epa-* enough to decide myself. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 20:22 ` eww Bastien @ 2014-01-15 12:29 ` Richard Stallman 0 siblings, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-15 12:29 UTC (permalink / raw) To: Bastien; +Cc: lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] The problem is: what is the set of epa-* command for which an alias is useful? I propose to make the alias for all the autoloaded functions in epa.el and epa-mail.el. Any counterproposals? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 11:20 ` eww Bastien 2014-01-13 17:44 ` eww Davis Herring 2014-01-13 19:36 ` eww Richard Stallman @ 2014-01-13 19:36 ` Richard Stallman 2014-01-13 22:25 ` eww Bastien 2014-01-13 22:18 ` eww Bastien 3 siblings, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-13 19:36 UTC (permalink / raw) To: Bastien; +Cc: lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] (define-alternatives web) (setq web-alternatives '(("eww" . eww))) M-x web RET TAB RET This calling convention has the drawback that (define-alternatives web) isn't recognized as a definition for the variable web-alternatives. Should we tell people to write a defvar for web-alternatives just after the define-alternatives for web? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 19:36 ` eww Richard Stallman @ 2014-01-13 22:25 ` Bastien 2014-01-14 0:00 ` eww Stefan Monnier 0 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-13 22:25 UTC (permalink / raw) To: Richard Stallman; +Cc: lekktu, emacs-devel Richard Stallman <rms@gnu.org> writes: > This calling convention has the drawback that (define-alternatives web) > isn't recognized as a definition for the variable web-alternatives. I'm not sure I understand. > Should we tell people to write a defvar for web-alternatives > just after the define-alternatives for web? I enhanced the docstring a bit---it now reads: Define the new command `COMMAND'. The argument `COMMAND' should be a symbol. Running `M-x COMMAND RET' for the first time prompts for which alternative to use and records the selected command as a custom variable. Running `C-u M-x COMMAND RET' prompts again for an alternative and overwrites the previous choice. The variable `COMMAND-alternatives' contains an alist with alternative implementations of COMMAND. `define-alternatives' does not have any effect until this variable is set. CUSTOMIZATIONS, if non-nil, should be composed of alternating `defcustom' keywords and values to add to the declaration of `COMMAND-alternatives' (typically :group and :version). I hope this is clearer. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 22:25 ` eww Bastien @ 2014-01-14 0:00 ` Stefan Monnier 2014-01-14 9:43 ` eww Bastien 2014-01-14 17:06 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2014-01-14 0:00 UTC (permalink / raw) To: Bastien; +Cc: lekktu, Richard Stallman, emacs-devel >> This calling convention has the drawback that (define-alternatives web) >> isn't recognized as a definition for the variable web-alternatives. > I'm not sure I understand. If you try to jump to the source from "C-h v web-alternatives", Emacs won't find the right spot. You should be able to work around this use by adding to the macro something like (put ',varname 'definition-name ',cmdname) -- Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 0:00 ` eww Stefan Monnier @ 2014-01-14 9:43 ` Bastien 2014-01-14 11:09 ` eww Nicolas Richard 2014-01-14 17:58 ` eww Stefan Monnier 2014-01-14 17:06 ` eww Richard Stallman 1 sibling, 2 replies; 185+ messages in thread From: Bastien @ 2014-01-14 9:43 UTC (permalink / raw) To: Stefan Monnier; +Cc: lekktu, Richard Stallman, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> This calling convention has the drawback that (define-alternatives web) >>> isn't recognized as a definition for the variable web-alternatives. >> I'm not sure I understand. > > If you try to jump to the source from "C-h v web-alternatives", Emacs > won't find the right spot. M-: (define-alternatives web) RET C-h web-alternatives RET will display a correct docstring for `web-alternatives'. What am I missing? -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 9:43 ` eww Bastien @ 2014-01-14 11:09 ` Nicolas Richard 2014-01-14 16:39 ` eww Bastien 2014-01-14 17:58 ` eww Stefan Monnier 1 sibling, 1 reply; 185+ messages in thread From: Nicolas Richard @ 2014-01-14 11:09 UTC (permalink / raw) To: emacs-devel Bastien <bzg@gnu.org> writes: > Stefan Monnier <monnier@iro.umontreal.ca> writes: > >>>> This calling convention has the drawback that (define-alternatives web) >>>> isn't recognized as a definition for the variable web-alternatives. >>> I'm not sure I understand. >> >> If you try to jump to the source from "C-h v web-alternatives", Emacs >> won't find the right spot. > > M-: (define-alternatives web) RET > C-h web-alternatives RET > > will display a correct docstring for `web-alternatives'. > > What am I missing? The link to the source (when (define-alternatives web) is done in an .el file) won't work right, and result in "Unable to find location in file". It's a common problem with macros that define things. Here's a patch to implement Stefan's solution: --- a/lisp/simple.el +++ b/lisp/simple.el @@ -7675,7 +7675,7 @@ ALTFUN - The function called to implement this alternative." command-name) :type '(alist :key-type string :value-type function) ,@customizations) - + (put ',varalt-sym 'definition-name ',command) (defvar ,varimp-sym nil "Internal use only.") (defun ,command (&optional arg) -- Nico. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 11:09 ` eww Nicolas Richard @ 2014-01-14 16:39 ` Bastien 2014-01-14 16:57 ` eww Nicolas Richard 0 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-14 16:39 UTC (permalink / raw) To: Nicolas Richard; +Cc: emacs-devel Hi Nicolas, "Nicolas Richard" <theonewiththeevillook@yahoo.fr> writes: > The link to the source (when (define-alternatives web) is done in an .el > file) won't work right, and result in "Unable to find location in file". > It's a common problem with macros that define things. Sorry, I still don't get it. Put this in ~/web.el (define-alternatives web) (setq web-alternatives '(("eww" . eww) ("w3m" . w3m))) M-x eval-buffer RET then C-h f web RET and C-h v web-alternatives RET will display the correct location. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 16:39 ` eww Bastien @ 2014-01-14 16:57 ` Nicolas Richard 2014-01-14 18:21 ` eww Bastien 0 siblings, 1 reply; 185+ messages in thread From: Nicolas Richard @ 2014-01-14 16:57 UTC (permalink / raw) To: Bastien; +Cc: emacs-devel Hi Bastien, Le 14/01/2014 17:39, Bastien a écrit : > then C-h f web RET and C-h v web-alternatives RET will > display the correct location. Put this in web.el : ;; some useful comments (define-alternatives web) (setq web-alternatives '(("eww" . eww) ("w3m" . w3m))) ;; End of file. now load it as emacs -Q -l /path/to/web.el and do: C-h v web-alternatives RET C-x b *Help* RET TAB at this point, your echo area should read: mouse-2, RET: find variable's definition now go ahead and hit RET. echo area now displays: Unable to find location in file and point is in a buffer visiting web.el, at beginning of buffer. With the patch, the last message will not show up, and point will be left at beginning of the line `(define-alternatives web)' -- Nico. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 16:57 ` eww Nicolas Richard @ 2014-01-14 18:21 ` Bastien 2014-01-14 21:31 ` eww Nicolas Richard 2014-01-15 12:29 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Bastien @ 2014-01-14 18:21 UTC (permalink / raw) To: Nicolas Richard; +Cc: emacs-devel Nicolas Richard <theonewiththeevillook@yahoo.fr> writes: > Put this in web.el : > ;; some useful comments > (define-alternatives web) > (setq web-alternatives '(("eww" . eww) ("w3m" . w3m))) > ;; End of file. > > now load it as emacs -Q -l /path/to/web.el > > and do: > C-h v web-alternatives RET > C-x b *Help* RET > TAB > > at this point, your echo area should read: > mouse-2, RET: find variable's definition > now go ahead and hit RET. echo area now displays: > Unable to find location in file > and point is in a buffer visiting web.el, at beginning of buffer. I cannot reproduce this, with the recipe above, RET jumps to the correct location. See http://bzg.fr/u/emacs-web-alternatives-jump.ogv define-alternatives uses defcustom and defun internally, the behavior I observe seems the right one to me. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 18:21 ` eww Bastien @ 2014-01-14 21:31 ` Nicolas Richard 2014-01-14 22:36 ` eww Bastien 2014-01-15 12:29 ` eww Richard Stallman 1 sibling, 1 reply; 185+ messages in thread From: Nicolas Richard @ 2014-01-14 21:31 UTC (permalink / raw) To: emacs-devel Bastien <bzg@gnu.org> writes: > Nicolas Richard <theonewiththeevillook@yahoo.fr> writes: > >> Put this in web.el : >> ;; some useful comments >> (define-alternatives web) >> (setq web-alternatives '(("eww" . eww) ("w3m" . w3m))) >> ;; End of file. >> >> now load it as emacs -Q -l /path/to/web.el >> >> and do: >> C-h v web-alternatives RET >> C-x b *Help* RET >> TAB >> >> at this point, your echo area should read: >> mouse-2, RET: find variable's definition >> now go ahead and hit RET. echo area now displays: >> Unable to find location in file >> and point is in a buffer visiting web.el, at beginning of buffer. > > I cannot reproduce this, with the recipe above, RET jumps to the > correct location. Oops, I'm sorry, I made the test with the wrong file and thus gave the wrong recipe. Try this as a web.el: ;; some useful comments (define-alternatives web) ;; End of file. > See http://bzg.fr/u/emacs-web-alternatives-jump.ogv Notice that point is moved in front of (setq ...), and not (define-alternatives ...) although that is where the defcustom happens. This is because the mechanism searches for the following regexp : "^([^ ]+\\(?:\\s-\\| \\|;.* \\)+['(]?web-alternatives\\_>" (this happens in find-function-search-for-symbol). -- Nico. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 21:31 ` eww Nicolas Richard @ 2014-01-14 22:36 ` Bastien 0 siblings, 0 replies; 185+ messages in thread From: Bastien @ 2014-01-14 22:36 UTC (permalink / raw) To: Nicolas Richard; +Cc: emacs-devel "Nicolas Richard" <theonewiththeevillook@yahoo.fr> writes: > Oops, I'm sorry, I made the test with the wrong file and thus gave the > wrong recipe. > > Try this as a web.el: > ;; some useful comments > (define-alternatives web) > ;; End of file. Ahhh, okay! (I did not try this use-case because I don't see the point of using (define-alternatives ...) without defining the set of alternatives.) I applied the patch, thanks for your patience. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 18:21 ` eww Bastien 2014-01-14 21:31 ` eww Nicolas Richard @ 2014-01-15 12:29 ` Richard Stallman 2014-01-15 14:07 ` eww Andreas Schwab 1 sibling, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-15 12:29 UTC (permalink / raw) To: Bastien; +Cc: theonewiththeevillook, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] I am pretty sure that etags can't see the definition of the variable that define-alternatives defines. It scans textually and can't recognize macros unless it is specifically taught about them. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-15 12:29 ` eww Richard Stallman @ 2014-01-15 14:07 ` Andreas Schwab 2014-01-15 16:10 ` eww Nicolas Richard 2014-01-16 17:57 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Andreas Schwab @ 2014-01-15 14:07 UTC (permalink / raw) To: rms; +Cc: Bastien, theonewiththeevillook, emacs-devel Richard Stallman <rms@gnu.org> writes: > I am pretty sure that etags can't see the definition of the variable > that define-alternatives defines. It scans textually and can't > recognize macros unless it is specifically taught about them. etags treats all toplevel forms with a symbol starting with "def" as defining a word, and registers the next word as a tag. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-15 14:07 ` eww Andreas Schwab @ 2014-01-15 16:10 ` Nicolas Richard 2014-01-16 17:56 ` eww Richard Stallman 2014-01-16 17:57 ` eww Richard Stallman 1 sibling, 1 reply; 185+ messages in thread From: Nicolas Richard @ 2014-01-15 16:10 UTC (permalink / raw) To: Andreas Schwab, rms; +Cc: Bastien, emacs-devel Le 15/01/2014 15:07, Andreas Schwab a écrit : > Richard Stallman <rms@gnu.org> writes: > >> I am pretty sure that etags can't see the definition of the variable >> that define-alternatives defines. It scans textually and can't >> recognize macros unless it is specifically taught about them. > > etags treats all toplevel forms with a symbol starting with "def" as > defining a word, and registers the next word as a tag. Which means that 'web' will be a tag, but not web-alternatives, right ? Is that a problem ? (I don't use tags for elisp) -- Nico. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-15 16:10 ` eww Nicolas Richard @ 2014-01-16 17:56 ` Richard Stallman 2014-01-16 18:19 ` eww Andreas Schwab 2014-01-17 13:06 ` eww Bastien 0 siblings, 2 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-16 17:56 UTC (permalink / raw) To: Nicolas Richard; +Cc: bzg, schwab, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > etags treats all toplevel forms with a symbol starting with "def" as > defining a word, and registers the next word as a tag. Which means that 'web' will be a tag, but not web-alternatives, right ? Right. Is that a problem ? (I don't use tags for elisp) It is a problem for anyone that uses tags for elisp. So I think we should recommend writing (defvar web-alternatives) after (define-alternatives 'web). -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-16 17:56 ` eww Richard Stallman @ 2014-01-16 18:19 ` Andreas Schwab 2014-01-17 14:10 ` eww Richard Stallman 2014-01-17 13:06 ` eww Bastien 1 sibling, 1 reply; 185+ messages in thread From: Andreas Schwab @ 2014-01-16 18:19 UTC (permalink / raw) To: rms; +Cc: bzg, Nicolas Richard, emacs-devel Richard Stallman <rms@gnu.org> writes: > So I think we should recommend writing (defvar web-alternatives) > after (define-alternatives 'web). That won't help, as etags will specifically ignore a defvar that just declares a variable. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-16 18:19 ` eww Andreas Schwab @ 2014-01-17 14:10 ` Richard Stallman 2014-01-17 15:04 ` eww Stefan Monnier ` (2 more replies) 0 siblings, 3 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-17 14:10 UTC (permalink / raw) To: Andreas Schwab; +Cc: bzg, theonewiththeevillook, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > So I think we should recommend writing (defvar web-alternatives) > after (define-alternatives 'web). That won't help, as etags will specifically ignore a defvar that just declares a variable. I forgot. What does it need, then? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 14:10 ` eww Richard Stallman @ 2014-01-17 15:04 ` Stefan Monnier 2014-01-17 15:28 ` eww Eli Zaretskii 2014-01-18 12:33 ` eww Richard Stallman 2014-01-17 15:06 ` eww Andreas Schwab 2014-01-17 15:23 ` eww Francesco Potortì 2 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2014-01-17 15:04 UTC (permalink / raw) To: Richard Stallman; +Cc: bzg, theonewiththeevillook, Andreas Schwab, emacs-devel > What does it need, then? Nothing at all. This problem with etags exists already with many other macros and noone cares. That's just life: etags is approximate, it includes unneeded elements and lacks some elements it should have. It is still 99% correct for Elisp, so some people use it very happily, but there's no point uglifying the code just to try and make it work 99.01% instead. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 15:04 ` eww Stefan Monnier @ 2014-01-17 15:28 ` Eli Zaretskii 2014-01-17 16:04 ` eww Stefan Monnier 2014-01-18 12:33 ` eww Richard Stallman 1 sibling, 1 reply; 185+ messages in thread From: Eli Zaretskii @ 2014-01-17 15:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, theonewiththeevillook, schwab, rms, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Fri, 17 Jan 2014 10:04:57 -0500 > Cc: bzg@gnu.org, theonewiththeevillook@yahoo.fr, > Andreas Schwab <schwab@linux-m68k.org>, emacs-devel@gnu.org > > > What does it need, then? > > Nothing at all. This problem with etags exists already with many other > macros and noone cares. That's just life: etags is approximate, it > includes unneeded elements and lacks some elements it should have. > It is still 99% correct for Elisp, so some people use it very happily, > but there's no point uglifying the code just to try and make it work > 99.01% instead. If tagging those is important, we could use the --regex option to etags. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 15:28 ` eww Eli Zaretskii @ 2014-01-17 16:04 ` Stefan Monnier 0 siblings, 0 replies; 185+ messages in thread From: Stefan Monnier @ 2014-01-17 16:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: bzg, theonewiththeevillook, schwab, rms, emacs-devel > If tagging those is important, we could use the --regex option to > etags. Since noone ever bothered to create those for define-derived-mode and other such macros, I can't imagine that it's important to do it for define-alternative which is used just about nowhere. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 15:04 ` eww Stefan Monnier 2014-01-17 15:28 ` eww Eli Zaretskii @ 2014-01-18 12:33 ` Richard Stallman 2014-01-19 2:12 ` eww Stefan Monnier 1 sibling, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-18 12:33 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, theonewiththeevillook, schwab, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Nothing at all. This problem with etags exists already with many other macros and noone cares. Are you sure no one cares? When people look for a tag, and it isn't defined, they will hunt around and find it somehow. These problems are sloppinesses, and we can avoid them by taking a little care in defining the macros, or by making etags recognize them specially. Since noone ever bothered to create those for define-derived-mode and other such macros, I can't imagine that it's important to do it for define-alternative which is used just about nowhere. It's bad in define-derived-mode, too. It's unfortunate that there is no tag for `...-mode-map'. However, at least the presence of `mode' will suggest to people where they should look. There is no comparable word in `web-alternatives' to suggest where to look. We could make find-tag know about these cases, so it will find the tags anyway. That won't even make tag tables do it. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-18 12:33 ` eww Richard Stallman @ 2014-01-19 2:12 ` Stefan Monnier 2014-01-19 11:35 ` eww Francesco Potortì 2014-01-20 9:14 ` eww Richard Stallman 0 siblings, 2 replies; 185+ messages in thread From: Stefan Monnier @ 2014-01-19 2:12 UTC (permalink / raw) To: Richard Stallman; +Cc: bzg, theonewiththeevillook, schwab, emacs-devel > Nothing at all. This problem with etags exists already with many other > macros and noone cares. > Are you sure no one cares? I guess that's a rhetorical question, since you seem to care, and obviously I can't be sure anyway. > When people look for a tag, and it isn't defined, they will hunt > around and find it somehow. As stated it's part of etags's problems, and it's true for uses of etags with any language that provides a macro facility, AFAIK. etags probably also suffers from similar problems (missed tags) in various other corner cases even for language without macros. People who care enough about these issues probably just use something else than etags. Otherwise we'd already have had plenty more bug reports along these lines. > These problems are sloppinesses, and we can avoid them by taking a little > care in defining the macros, or by making etags recognize them specially. I wouldn't call it "a little care defining the macro" but rather "disfiguring the macro". > It's bad in define-derived-mode, too. It's unfortunate > that there is no tag for `...-mode-map'. It's not just ..-mode-map, but also ..-abbrev-table, ..-syntax-table, and ..-mode-hook. > However, at least the presence of `mode' will suggest to people where > they should look. There is no comparable word in `web-alternatives' > to suggest where to look. My guess is that they'll do `C-h v web-alternatives' then click on the button to jump to the source code, and ... tadaa!! No problem with etags because they didn't need to use etags for that. > We could make find-tag know about these cases, so it will find > the tags anyway. `find-tag' works for dozens of different languages. Why should it suddenly be uglified with special hacks for one of those languages (and one where etags is particularly less important because this one language happens to be the one that's only edited from Emacs where things like `C-h v' and `C-h f' work even more reliably than etags and without having to build and update any TAGS table)? > That won't even make tag tables do it. If we want find-tag to do the right thing, the right way to do it is by teaching `etags' to recognizes macros like define-derived-mode and add corresponding entries in the TAGS file. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-19 2:12 ` eww Stefan Monnier @ 2014-01-19 11:35 ` Francesco Potortì 2014-01-20 9:14 ` eww Richard Stallman 1 sibling, 0 replies; 185+ messages in thread From: Francesco Potortì @ 2014-01-19 11:35 UTC (permalink / raw) To: Stefan Monnier Cc: bzg, theonewiththeevillook, schwab, Richard Stallman, emacs-devel >If we want find-tag to do the right thing, the right way to do it is by >teaching `etags' to recognizes macros like define-derived-mode and add >corresponding entries in the TAGS file. I agree, and it's very easy. Just create a file containing regexps to be distributed allong with the Makefile, or else (uglier but does not require a separate file) just put the regexps on the Makefile's etags command line. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-19 2:12 ` eww Stefan Monnier 2014-01-19 11:35 ` eww Francesco Potortì @ 2014-01-20 9:14 ` Richard Stallman 1 sibling, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-20 9:14 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, theonewiththeevillook, schwab, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > It's bad in define-derived-mode, too. It's unfortunate > that there is no tag for `...-mode-map'. It's not just ..-mode-map, but also ..-abbrev-table, ..-syntax-table, and ..-mode-hook. That's right. I mentioned just the one that matters most. The others add a little to the point. `find-tag' works for dozens of different languages. Why should it suddenly be uglified with special hacks for one of those languages The code would be a tiny bit more complex, but the behavior would be simpler and more regular. I think that is cleaner than generating extra tags. Also it's better to change Lisp code than change C code. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 14:10 ` eww Richard Stallman 2014-01-17 15:04 ` eww Stefan Monnier @ 2014-01-17 15:06 ` Andreas Schwab 2014-01-17 15:23 ` eww Francesco Potortì 2 siblings, 0 replies; 185+ messages in thread From: Andreas Schwab @ 2014-01-17 15:06 UTC (permalink / raw) To: rms; +Cc: bzg, theonewiththeevillook, emacs-devel Richard Stallman <rms@gnu.org> writes: > > So I think we should recommend writing (defvar web-alternatives) > > after (define-alternatives 'web). > > That won't help, as etags will specifically ignore a defvar that just > declares a variable. > > I forgot. > > What does it need, then? This is the only exception, otherwise it will take anything. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 14:10 ` eww Richard Stallman 2014-01-17 15:04 ` eww Stefan Monnier 2014-01-17 15:06 ` eww Andreas Schwab @ 2014-01-17 15:23 ` Francesco Potortì 2 siblings, 0 replies; 185+ messages in thread From: Francesco Potortì @ 2014-01-17 15:23 UTC (permalink / raw) To: rms; +Cc: bzg, theonewiththeevillook, Andreas Schwab, emacs-devel > > So I think we should recommend writing (defvar web-alternatives) > > after (define-alternatives 'web). > > That won't help, as etags will specifically ignore a defvar that just > declares a variable. > >I forgot. > >What does it need, then? A regexp file where elisp regexps are defined, or just definition of command-line regexps on the command line in the Makefile: -r REGEXP, --regex=REGEXP or --regex=@regexfile Make a tag for each line matching a regular expression pattern in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE files only. REGEXFILE is a file containing one REGEXP per line. REGEXP takes the form /TAGREGEXP/TAGNAME/MODS, where TAGNAME/ is optional. The TAGREGEXP pattern is anchored (as if preceded by ^). If TAGNAME/ is present, the tags created are named. For example Tcl named tags can be created with: --regex="/proc[ \t]+\([^ \t]+\)/\1/.". MODS are optional one-letter modifiers: `i' means to ignore case, `m' means to allow multi-line matches, `s' implies `m' and causes dot to match any character, including newline. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-16 17:56 ` eww Richard Stallman 2014-01-16 18:19 ` eww Andreas Schwab @ 2014-01-17 13:06 ` Bastien 2014-01-17 14:22 ` eww Stefan Monnier 2014-01-18 6:12 ` eww Richard Stallman 1 sibling, 2 replies; 185+ messages in thread From: Bastien @ 2014-01-17 13:06 UTC (permalink / raw) To: Richard Stallman; +Cc: Nicolas Richard, schwab, emacs-devel Richard Stallman <rms@gnu.org> writes: > So I think we should recommend writing (defvar web-alternatives) > after (define-alternatives 'web). I pushed a docstring fix and here is how the docstring reads now: Define the new command `COMMAND'. The argument `COMMAND' should be a symbol. Running `M-x COMMAND RET' for the first time prompts for which alternative to use and records the selected command as a custom variable. Running `C-u M-x COMMAND RET' prompts again for an alternative and overwrites the previous choice. The variable `COMMAND-alternatives' contains an alist with alternative implementations of COMMAND. Developers should use (defvar COMMAND-alternatives) to declare this variable after they write (define-alternatives COMMAND), otherwise the variable will not be handled by programs like etags. CUSTOMIZATIONS, if non-nil, should be composed of alternating `defcustom' keywords and values to add to the declaration of `COMMAND-alternatives' (typically :group and :version). Let me know if this is clearer and correct. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 13:06 ` eww Bastien @ 2014-01-17 14:22 ` Stefan Monnier 2014-01-17 14:59 ` eww Bastien 2014-01-18 6:12 ` eww Richard Stallman 1 sibling, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2014-01-17 14:22 UTC (permalink / raw) To: Bastien; +Cc: Nicolas Richard, schwab, Richard Stallman, emacs-devel > I pushed a docstring fix and here is how the docstring reads now: Bad idea, since (defvar web-alternatives) won't help etags anyway. Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 14:22 ` eww Stefan Monnier @ 2014-01-17 14:59 ` Bastien 0 siblings, 0 replies; 185+ messages in thread From: Bastien @ 2014-01-17 14:59 UTC (permalink / raw) To: Stefan Monnier; +Cc: Nicolas Richard, schwab, Richard Stallman, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I pushed a docstring fix and here is how the docstring reads now: > > Bad idea, since (defvar web-alternatives) won't help etags anyway. Yes, I reverted the change. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-17 13:06 ` eww Bastien 2014-01-17 14:22 ` eww Stefan Monnier @ 2014-01-18 6:12 ` Richard Stallman 1 sibling, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-18 6:12 UTC (permalink / raw) To: Bastien; +Cc: theonewiththeevillook, schwab, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > So I think we should recommend writing (defvar web-alternatives) > after (define-alternatives 'web). I pushed a docstring fix and here is how the docstring reads now: Unfortunately, someone pointed out that my recommendation won't actually do the job. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-15 14:07 ` eww Andreas Schwab 2014-01-15 16:10 ` eww Nicolas Richard @ 2014-01-16 17:57 ` Richard Stallman 1 sibling, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-16 17:57 UTC (permalink / raw) To: Andreas Schwab; +Cc: bzg, theonewiththeevillook, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I am pretty sure that etags can't see the definition of the variable > that define-alternatives defines. It scans textually and can't > recognize macros unless it is specifically taught about them. etags treats all toplevel forms with a symbol starting with "def" as defining a word, and registers the next word as a tag. Right. And the tag it registers is the next symbol. So (define-alternatives web ...) will define web as a tag but won't define web-alternative as a tag. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 9:43 ` eww Bastien 2014-01-14 11:09 ` eww Nicolas Richard @ 2014-01-14 17:58 ` Stefan Monnier 2014-01-14 18:22 ` eww Bastien 1 sibling, 1 reply; 185+ messages in thread From: Stefan Monnier @ 2014-01-14 17:58 UTC (permalink / raw) To: Bastien; +Cc: lekktu, Richard Stallman, emacs-devel >> If you try to jump to the source from "C-h v web-alternatives", Emacs >> won't find the right spot. > M-: (define-alternatives web) RET > C-h web-alternatives RET > will display a correct docstring for `web-alternatives'. > What am I missing? You're missing "you try to jump to the source". Stefan ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 17:58 ` eww Stefan Monnier @ 2014-01-14 18:22 ` Bastien 0 siblings, 0 replies; 185+ messages in thread From: Bastien @ 2014-01-14 18:22 UTC (permalink / raw) To: Stefan Monnier; +Cc: lekktu, Richard Stallman, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> If you try to jump to the source from "C-h v web-alternatives", Emacs >>> won't find the right spot. >> M-: (define-alternatives web) RET >> C-h web-alternatives RET >> will display a correct docstring for `web-alternatives'. >> What am I missing? > > You're missing "you try to jump to the source". Well, that's because define-alternatives already lets me jump to the source -- see my answer to Nicolas (with video inside :) -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 0:00 ` eww Stefan Monnier 2014-01-14 9:43 ` eww Bastien @ 2014-01-14 17:06 ` Richard Stallman 1 sibling, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-14 17:06 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] If you try to jump to the source from "C-h v web-alternatives", Emacs won't find the right spot. You should be able to work around this use by adding to the macro something like (put ',varname 'definition-name ',cmdname) That would help with some tools, but etags still won't recognize it. Writing a defvar for the variable after the define-alternatives would provide info to all the tools. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 11:20 ` eww Bastien ` (2 preceding siblings ...) 2014-01-13 19:36 ` eww Richard Stallman @ 2014-01-13 22:18 ` Bastien 2014-01-14 0:45 ` eww Juanma Barranquero 3 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-13 22:18 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Richard Stallman, Emacs developers Bastien <bzg@gnu.org> writes: > Try this: > > (define-alternatives web) > (setq web-alternatives '(("eww" . eww))) > M-x web RET TAB RET > > Does not work without the attached patch. I fixed the bug about using funcall where call-interactively is needed. > I think it's safe to recommend `define-alternatives' for commands > only, not for function, and the docstring suggests this too. If so, > I'll apply the patch. > > Two other problems: > > 1) when there is only one "alternative", the user is asked which > one he wants. I think COMMAND should use the alternative without > asking, and tell the user how to add other alternatives through > COMMAND-alternatives for 2 secs the first time the alternative is > chosen. I enhanced the macro like this: when the choice is made for the first time, the user gets a message telling him about C-u M-x web RET > 2) Once an alternative is chosen, setting COMMAND-alternatives will > not take any effect, and I don't see a way to cancel the first > choice. This is solved by C-u M-x web RET. Maybe it would be nice to chose an alternative temporarily (with C-u C-u M-x web RET) but let's wait after the release and... when this macro will be used for the first time. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 22:18 ` eww Bastien @ 2014-01-14 0:45 ` Juanma Barranquero 0 siblings, 0 replies; 185+ messages in thread From: Juanma Barranquero @ 2014-01-14 0:45 UTC (permalink / raw) To: Bastien; +Cc: Richard Stallman, Emacs developers On Mon, Jan 13, 2014 at 11:18 PM, Bastien <bzg@gnu.org> wrote: > I fixed the bug about using funcall where call-interactively is > needed. Thanks. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-12 13:50 ` eww Juanma Barranquero 2014-01-13 11:20 ` eww Bastien @ 2014-01-13 15:41 ` Richard Stallman 2014-01-13 18:05 ` eww Lars Magne Ingebrigtsen 1 sibling, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-13 15:41 UTC (permalink / raw) To: Juanma Barranquero; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I think epa also needs a set of natural aliases, with "crypt" instead > of "epa". We introduced define-alternatives for exactly that case. It's just that nobody has used it yet. We may be miscommunicating. I don't see a need for define-alternatives here, because simple defalias would work: e.g., (defalias 'crypt-mail-encrypt 'epa-mail-encrypt) Why not? Do you have in mind something else it should mean? It's easy enough to do this, but then the documentation needs updating. For browsing, perhaps define-alternatives should be used. I never use those features, so I am not sure what commands should be defined, or what their alternative meaning should be. The doc string of define-alternatives is not very clear but I think it does the wrong thing. I have think the user should be able to specify a choice of browsing package just once, and it should affect all such commands for browsing. My point is that this really needs to be done before the release. We should prevent an ugliness from ever getting into a release. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 15:41 ` eww Richard Stallman @ 2014-01-13 18:05 ` Lars Magne Ingebrigtsen 2014-01-14 17:05 ` eww Richard Stallman 0 siblings, 1 reply; 185+ messages in thread From: Lars Magne Ingebrigtsen @ 2014-01-13 18:05 UTC (permalink / raw) To: Richard Stallman; +Cc: Juanma Barranquero, emacs-devel `browse-web' is the alias for `eww'. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-13 18:05 ` eww Lars Magne Ingebrigtsen @ 2014-01-14 17:05 ` Richard Stallman 2014-01-14 19:39 ` eww Bastien 0 siblings, 1 reply; 185+ messages in thread From: Richard Stallman @ 2014-01-14 17:05 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: lekktu, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] `browse-web' is the alias for `eww'. That's a good, natural name. However, the Emacs manual mentions `eww', not `browse-web'. I think that is a bug and needs to be fixed. The manual section on EWW says that itcan be one of the browsers used by `browse-url'. In effect, `browse-url' is an instance of the sort of feature that `define-alternative' defines. Perhaps we should set it up to ask the user, as if it were defined with `define-alternative'. Perhaps `eww' should be the default. (Should it be the default?) Perhaps the manual should document only `browse-url', not the internals of the various alternatives. I am not sure what is best, since I don't use those features. But I am sure we should get the user interface maximally simplified before the release. What do people think is best? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 17:05 ` eww Richard Stallman @ 2014-01-14 19:39 ` Bastien 2014-01-15 12:29 ` eww Richard Stallman 0 siblings, 1 reply; 185+ messages in thread From: Bastien @ 2014-01-14 19:39 UTC (permalink / raw) To: Richard Stallman; +Cc: lekktu, Lars Magne Ingebrigtsen, emacs-devel Richard Stallman <rms@gnu.org> writes: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > `browse-web' is the alias for `eww'. > > That's a good, natural name. However, the Emacs manual mentions > `eww', not `browse-web'. I think that is a bug and needs to be > fixed. Before we go and fix the manual, I think the way people chose the program for browsing the web can be made simpler. Having both `browse-url' and `browse-web' is confusing IMHO. What about: 1. replace the `browse-web' alias with `emacs-web-browser'. 2. let `browse-url' use `browse-url-graphical' or `browse-url-text' depending on whether (display-graphic-p) and on a a user option (if the user always want to use a text browser, for example.) 3. set the options `browse-url-graphical-alternatives' and `browse-url-text-alternatives' with `define-alternatives' which would offer relevant choices depending on what the user can use on its system. When hitting `browse-url' for the first time in a terminal, the user would have the choice between eww, w3 or w3m, for example. When hitting `browse-url' for the first time in a window system, the user would first have the choice to browse with a text browser, or a window browser, then between (text or window) browsers. C-u M-x browse-url RET would let him pick up another alternative by passing the prefix universal argument to browse-url-graphical or browse-url-text (for now the prefix tells whether to open a new window/tab in the browser.) It's probably a lot of work, but it would makes life easier for users. For now they rely on `browse-url' and will hardly hear of `browse-web', wondering why there is a separate interface. -- Bastien ^ permalink raw reply [flat|nested] 185+ messages in thread
* Re: eww 2014-01-14 19:39 ` eww Bastien @ 2014-01-15 12:29 ` Richard Stallman 0 siblings, 0 replies; 185+ messages in thread From: Richard Stallman @ 2014-01-15 12:29 UTC (permalink / raw) To: Bastien; +Cc: lekktu, larsi, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Your proposal seems good to me, but maybe it could be simplified. I am not sure we need the complexity of choosing a text browser and separately a graphical browser. Most new users only use Emacs in graphical mode and will want only a graphical browser. So I suggest this: browse-url-text uses the preferred text browser. The first time, it asks the user to choose the preferred text browser. browse-url-graphical uses the preferred graphical browser. The first time, it asks the user to choose the preferred graphical browser. browse-url on a text terminal runs browse-url-text. browse-url on a graphical terminal runs browse-url-graphical. This way, most users will only need to remember browse-url, and will only be asked once to choose a preferred browser. Any comments? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call. ^ permalink raw reply [flat|nested] 185+ messages in thread
end of thread, other threads:[~2014-01-20 9:14 UTC | newest] Thread overview: 185+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-06-16 14:53 eww Lars Magne Ingebrigtsen 2013-06-16 15:21 ` eww Adam Sjøgren 2013-06-16 15:29 ` eww Lars Magne Ingebrigtsen 2013-06-16 15:46 ` eww Lars Magne Ingebrigtsen 2013-06-16 17:01 ` eww Dmitry Gutov 2013-06-16 17:06 ` eww Lars Magne Ingebrigtsen 2013-06-17 21:00 ` eww Lars Magne Ingebrigtsen 2013-06-17 21:13 ` eww Stefan Monnier 2013-06-17 21:30 ` eww Lars Magne Ingebrigtsen 2013-06-17 22:04 ` eww Lars Magne Ingebrigtsen 2013-06-17 22:39 ` eww Rasmus 2013-06-17 22:43 ` eww Lars Magne Ingebrigtsen 2013-06-17 23:35 ` eww Ted Zlatanov 2013-06-18 12:09 ` eww Thomas Fitzsimmons 2013-06-18 14:57 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:02 ` eww Thomas Fitzsimmons 2013-06-19 8:59 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:21 ` eww Tom Tromey 2013-06-19 6:53 ` eww Lars Magne Ingebrigtsen 2013-06-18 2:19 ` eww Tom Tromey 2013-06-18 11:23 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:34 ` eww Tom Tromey 2013-06-18 15:01 ` eww Lars Magne Ingebrigtsen 2013-06-18 15:43 ` eww Tom Tromey 2013-06-18 14:39 ` eww Tom Tromey 2013-06-18 15:14 ` eww Lars Magne Ingebrigtsen 2013-06-18 15:48 ` eww Lars Magne Ingebrigtsen 2013-06-18 17:40 ` eww Eli Zaretskii 2013-06-19 1:14 ` eww Stephen J. Turnbull 2013-06-19 6:58 ` eww Lars Magne Ingebrigtsen 2013-06-19 14:50 ` eww Eli Zaretskii 2013-06-18 18:04 ` eww Karl Fogel 2013-06-18 18:29 ` eww Eli Zaretskii 2013-06-19 7:13 ` eww Lars Magne Ingebrigtsen 2013-06-19 8:43 ` eww Andreas Schwab 2013-06-19 9:03 ` eww Lars Magne Ingebrigtsen 2013-06-19 9:13 ` eww Andreas Schwab 2013-06-19 12:27 ` eww Stefan Monnier 2013-06-19 13:50 ` eww Stefan Monnier 2013-06-19 14:02 ` eww Lars Magne Ingebrigtsen 2013-06-21 14:03 ` eww Stefan Monnier 2013-06-25 19:57 ` eww Lars Magne Ingebrigtsen 2013-06-19 14:55 ` eww Eli Zaretskii 2013-06-19 19:46 ` eww Lars Magne Ingebrigtsen 2013-06-19 19:59 ` eww Eli Zaretskii 2013-06-19 20:13 ` eww Lars Magne Ingebrigtsen 2013-06-19 22:12 ` eww Johan Bockgård 2013-06-19 20:22 ` eww Stefan Monnier 2013-06-18 19:00 ` eww Ted Zlatanov 2013-06-18 20:19 ` eww Stefan Monnier 2013-06-18 21:37 ` eww Ted Zlatanov 2013-06-18 23:21 ` eww Stefan Monnier 2013-06-19 4:15 ` eww Ted Zlatanov 2013-06-19 7:22 ` eww Lars Magne Ingebrigtsen 2013-06-19 10:38 ` eww Christopher Schmidt 2013-06-19 12:35 ` eww Stefan Monnier 2013-06-20 7:17 ` eww Lars Magne Ingebrigtsen 2013-06-20 20:10 ` eww Stefan Monnier 2013-06-21 6:58 ` eww Lars Magne Ingebrigtsen 2013-06-28 15:12 ` eww Ted Zlatanov 2013-07-06 15:17 ` eww Lars Ingebrigtsen 2013-06-25 23:11 ` eww Lars Magne Ingebrigtsen 2013-06-26 6:49 ` eww Daimrod 2013-06-26 11:55 ` eww Lars Magne Ingebrigtsen 2013-06-19 4:21 ` eww Ted Zlatanov 2013-06-19 7:25 ` eww Lars Magne Ingebrigtsen 2013-06-19 22:45 ` eww Ted Zlatanov 2013-06-20 9:01 ` eww Lars Magne Ingebrigtsen 2013-07-01 22:48 ` eww Ted Zlatanov 2013-07-02 6:03 ` eww Thierry Volpiatto 2013-07-06 15:19 ` eww Lars Ingebrigtsen 2013-07-06 22:32 ` eww Xue Fuqiao 2013-07-06 22:57 ` eww Lars Ingebrigtsen 2013-07-08 12:34 ` eww Ted Zlatanov 2013-07-08 12:55 ` eww Lars Magne Ingebrigtsen 2013-06-19 8:21 ` eww chad 2013-06-19 12:32 ` eww Stefan Monnier 2013-06-19 20:55 ` eww Juri Linkov 2013-06-19 21:16 ` eww Tom Tromey 2013-06-19 13:50 ` eww Tom Tromey 2013-06-18 16:17 ` eww Tom Tromey 2013-06-18 16:45 ` eww Christopher Schmidt 2013-06-18 19:06 ` eww Steinar Bang 2013-06-19 6:50 ` eww Lars Magne Ingebrigtsen 2013-06-19 17:13 ` eww Tom Tromey 2013-06-19 19:31 ` eww Lars Magne Ingebrigtsen 2013-06-18 19:07 ` eww Stefan Monnier 2013-06-18 11:31 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:42 ` eww Tom Tromey 2013-06-18 15:04 ` eww Lars Magne Ingebrigtsen 2013-06-18 19:13 ` eww Stefan Monnier 2013-06-18 19:17 ` eww Eli Zaretskii 2013-06-18 20:21 ` eww Stefan Monnier 2013-06-18 23:34 ` eww James Cloos 2013-06-19 2:50 ` eww Eli Zaretskii 2013-06-19 4:49 ` eww Stefan Monnier 2013-06-19 8:17 ` eww Stephen Leake 2013-06-18 23:03 ` eww Xue Fuqiao 2013-06-18 23:56 ` eww Paul Eggert 2013-06-19 7:52 ` eww Xue Fuqiao 2013-06-19 15:03 ` eww Eli Zaretskii 2013-06-19 3:03 ` eww Eli Zaretskii 2013-06-18 19:27 ` eww Tom Tromey 2013-06-18 23:40 ` eww Juri Linkov 2013-06-19 0:51 ` eww Stefan Monnier 2013-06-19 10:34 ` eww Christopher Schmidt 2013-06-19 7:34 ` eww Lars Magne Ingebrigtsen 2013-06-20 22:52 ` eww Juri Linkov 2013-06-21 6:56 ` eww Lars Magne Ingebrigtsen 2013-06-19 14:06 ` eww Drew Adams 2013-06-19 15:36 ` eww Jambunathan K 2013-06-20 4:10 ` eww Richard Stallman 2013-06-20 4:28 ` eww Paul Eggert 2013-06-20 7:18 ` eww Lars Magne Ingebrigtsen 2013-06-18 11:32 ` eww joakim 2013-06-18 12:16 ` eww Andreas Schwab 2013-06-18 13:57 ` eww Lars Magne Ingebrigtsen 2013-06-18 14:01 ` eww joakim 2013-06-19 10:21 ` eww Ivan Kanis 2013-06-19 11:52 ` eww Steinar Bang 2013-06-19 12:14 ` eww Ivan Kanis 2013-08-01 11:59 ` eww John Williams 2013-08-02 0:20 ` eww John Williams 2013-08-02 0:27 ` eww Lars Magne Ingebrigtsen 2013-08-02 0:46 ` eww John Williams 2013-08-02 12:27 ` eww Lars Magne Ingebrigtsen 2013-08-02 21:39 ` eww John Williams 2013-08-03 11:08 ` eww Lars Magne Ingebrigtsen 2013-08-04 3:59 ` eww John Williams 2013-08-05 2:10 ` eww Lars Magne Ingebrigtsen 2013-08-05 3:29 ` eww John Williams 2013-08-07 0:46 ` eww John Williams 2013-08-07 1:24 ` eww Lars Magne Ingebrigtsen 2013-08-02 19:48 ` eww Richard Stallman 2013-08-03 11:30 ` eww Lars Magne Ingebrigtsen -- strict thread matches above, loose matches on Subject: below -- 2014-01-12 13:46 eww Richard Stallman 2014-01-12 13:50 ` eww Juanma Barranquero 2014-01-13 11:20 ` eww Bastien 2014-01-13 17:44 ` eww Davis Herring 2014-01-13 22:19 ` eww Bastien 2014-01-13 19:36 ` eww Richard Stallman 2014-01-13 22:29 ` eww Bastien 2014-01-14 17:06 ` eww Richard Stallman 2014-01-14 20:22 ` eww Bastien 2014-01-15 12:29 ` eww Richard Stallman 2014-01-13 19:36 ` eww Richard Stallman 2014-01-13 22:25 ` eww Bastien 2014-01-14 0:00 ` eww Stefan Monnier 2014-01-14 9:43 ` eww Bastien 2014-01-14 11:09 ` eww Nicolas Richard 2014-01-14 16:39 ` eww Bastien 2014-01-14 16:57 ` eww Nicolas Richard 2014-01-14 18:21 ` eww Bastien 2014-01-14 21:31 ` eww Nicolas Richard 2014-01-14 22:36 ` eww Bastien 2014-01-15 12:29 ` eww Richard Stallman 2014-01-15 14:07 ` eww Andreas Schwab 2014-01-15 16:10 ` eww Nicolas Richard 2014-01-16 17:56 ` eww Richard Stallman 2014-01-16 18:19 ` eww Andreas Schwab 2014-01-17 14:10 ` eww Richard Stallman 2014-01-17 15:04 ` eww Stefan Monnier 2014-01-17 15:28 ` eww Eli Zaretskii 2014-01-17 16:04 ` eww Stefan Monnier 2014-01-18 12:33 ` eww Richard Stallman 2014-01-19 2:12 ` eww Stefan Monnier 2014-01-19 11:35 ` eww Francesco Potortì 2014-01-20 9:14 ` eww Richard Stallman 2014-01-17 15:06 ` eww Andreas Schwab 2014-01-17 15:23 ` eww Francesco Potortì 2014-01-17 13:06 ` eww Bastien 2014-01-17 14:22 ` eww Stefan Monnier 2014-01-17 14:59 ` eww Bastien 2014-01-18 6:12 ` eww Richard Stallman 2014-01-16 17:57 ` eww Richard Stallman 2014-01-14 17:58 ` eww Stefan Monnier 2014-01-14 18:22 ` eww Bastien 2014-01-14 17:06 ` eww Richard Stallman 2014-01-13 22:18 ` eww Bastien 2014-01-14 0:45 ` eww Juanma Barranquero 2014-01-13 15:41 ` eww Richard Stallman 2014-01-13 18:05 ` eww Lars Magne Ingebrigtsen 2014-01-14 17:05 ` eww Richard Stallman 2014-01-14 19:39 ` eww Bastien 2014-01-15 12:29 ` eww Richard Stallman
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.