[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
w3m-search feedback for whether in new or current session [PATCH]
- From: Boruch Baum <boruch_baum@xxxxxxx>
- Date: Thu, 7 Dec 2017 06:32:53 -0500
- X-ml-name: emacs-w3m
- X-mail-count: 12837
Just like emacs-w3m allows one to enter a url to be opened in the
current session (g)[`w3m-goto-url'] or in a new session
(G)[`w3m-goto-url-new-session'], it allows one to get a search result in
either the current session (S)[`w3m-search'] or in a new session
This patch gives the user visible feedback for which option was
selected, to avoid 'losing' the current session if one mistakenly
performs `w3m-search' instead of `w3m-search-new-session'.
But, There is more to consider for this issue than just the patch:
1] Default key-bindings:
The project doesn't by default bind a key to `w3m-search-new-session',
though I would think that would be a very desirable function. I wanted
to propose binding it to 's', but that binding is already used for
`w3m-history' (in my personal opinion and personal experience, rarely
What I've done on my personal system and what I propose, is to map 's'
to `w3m-search', and 'S' to `w3m-search-new-session'. The result is that
there is a parallel between the two search functions (s,S) the two go-to
functions (g,G), the two bookmark functions (v,V), and possibly others.
The loser would be `w3m-history'.
2] Terminology (sessions, buffers, tabs, windows)
The project has an annoying inconsistency in how it refers to `things'.
Emacs-w3m often uses the term 'session' to refer to an emacs buffer,
what most browsers would call a 'tab', but sometimes to refer to the
collection of all buffers. And although the project often refers to
emacs buffers as 'sessions', it also refers to them as buffers.
I'd like to propose that the project start changing documentation and
user-prompts to be more consistent, and to acknowledge the duplication
of terms. 'Sessions' should refer to the collection of all w3m 'buffers'
(or 'tabs') open at a time.
I'm raising the issue for this patch because it is a good example and
starting point. The patch as submitted respects the current terminology,
but I think it should be re-worded to replace session with either
'buffer' or 'tab'. My inclination is to favor 'buffer'.
The elephant in the room would be the matter of re-factoring the
code-base, which is do-able, and which can include defining aliases to
old symbol names, for a deprecation period.
 e.g., w3m-goto-url-new-session, w3m-search-new-session,
 e.g., the functions of file w3m-session.el.
 e.g., w3m-next-buffer, w3m-previous-buffer, w3m-copy-buffer.
CA45 09B5 5351 7C11 A9D1 7286 0036 9E45 1595 8BC0
RCS file: /storage/cvsroot/emacs-w3m/w3m-search.el,v
retrieving revision 1.82
diff -u -w -B -r1.82 w3m-search.el
--- w3m-search.el 2 Aug 2017 07:39:19 -0000 1.82
+++ w3m-search.el 7 Dec 2017 10:27:18 -0000
@@ -284,26 +284,27 @@
initial history default)))
-(defun w3m-search-read-variables ()
+(defun w3m-search-read-variables (session)
"Ask for a search engine and words to query and return them as a list."
Cannot run two w3m processes simultaneously \
\(Type `\\<w3m-mode-map>\\[w3m-process-stop]' to stop asynchronous process)")))
- (let* ((search-engine
+ (let* ((prompt-prefix (format "Search in %s session. " session))
(let ((default (or (car w3m-search-engine-history)
- (completing-read (format "Which engine? (default %s): "
+ (completing-read (format "%sWhich engine? (default %s): "
+ prompt-prefix default)
w3m-search-engine-alist nil t nil
- (format "%s search: " search-engine)
+ (format "%s %s search: " prompt-prefix search-engine)
(format "%s search (default %%s): " search-engine))))
(list search-engine query)))
@@ -331,13 +332,13 @@
If Transient Mark mode, use the region as an initial string of query
and deactivate the mark."
- (interactive (w3m-search-read-variables))
+ (interactive (w3m-search-read-variables "current"))
(w3m-search-do-search 'w3m-goto-url search-engine query))
(defun w3m-search-new-session (search-engine query)
"Like `w3m-search', but do the search in a new session."
- (interactive (w3m-search-read-variables))
+ (interactive (w3m-search-read-variables "new"))
(w3m-search-do-search 'w3m-goto-url-new-session search-engine query))
RCS file: /storage/cvsroot/emacs-w3m/ChangeLog,v
retrieving revision 1.3634
diff -u -w -B -r1.3634 ChangeLog
--- ChangeLog 7 Dec 2017 06:59:28 -0000 1.3634
+++ ChangeLog 7 Dec 2017 10:27:20 -0000
@@ -1,3 +1,9 @@
+2017-12-07 Boruch Baum <boruch_baum@xxxxxxx>
+ * w3m-search.el (w3m-search, w3m-search-new-session)
+ (w3m-search-read-variables): Provide visual feedback for whether search
+ will be in new or current session.
2017-12-07 Katsumi Yamaoka <yamaoka@xxxxxxx>
* w3mhack.el: Require seq.