Boruch-Baum / emacs-w3m

emacs full-featured web browser (using w3m back-end)

Home Page:https://emacs-w3m.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

emacs-w3m

[Emacs logo] License: GPL v2 MELPA Build Status

This is a fork of the emacs-w3m git repository. The master branch here provides my tested modifications to the original, while the bb-upstream branch here should track the official repository's master branch. Additionally, this fork will have unique branches for development experiments, projects, and pending pull requests.

See below for the project's README documentation.

Unique branches here

  • bb_download pr #27

    • New feature: Use wget for downloads, when available.
    • New feature: Allow resumption of aborted downloads.
    • Downloads are queued, and the queue can be examined and re-arranged from a special buffer.
    • New feature: Detailed individual progress buffers for each download.
    • New feature: Download status display buffer to view, resequence, pause, resume, or kill any download.
    • New feature: Ability to abort a download just by killing its progress buffer.
    • New feature: The number of simultaneous downloads may be controlled, and can be dynamically changed.
    • New feature: Option to save an image's caption as metadata (this requires external programs exif for png files and exiv2 for jpg files).
    • New feature: For file-systems that support extended attributes, it is possible to have wget save URL and HTTP header information as metadata.
    • New feature: Use youtube-dl when available, for downloading videos.
    • New file w3m-download.el collects most downloaded-related functions.
    • New feature: Optionally deep-search links from within HTML "SCRIPT" elements and other 'hidden' parts of HTML source code.
    • New feature: Smart auto-rename ambiguous and duplicate download names.
  • bb_history-scrubpr #2

    • New feature w3m-history-scrub (keybinding S-C-delete) to delete web browsing resources (history, cookies, cache, temporary files, form data).
    • Full screen messages. I snuck in a function to display important messages in a full-sized emacs-w3m buffer, not just in the echo area. This should really have been part of branch bb_messaging, and there is more related work to port over from my old development repository.
    • Quibble for w3m-save-list. Return a defined value based upon operation success or failure.
  • bb_history-displaypr #4

    • New option w3m-history-in-new-buffer.
    • Bugfixes: The global history display now properly handles page size control, ie. you can select where in the history to begin displaying and how many entries to display per page.
    • Cosmetic changes to the global history listing, including better timestamping.
    • Improved docstrings.
  • bb_messaging pr #14

    • Adds timeouts and colorization to w3m messages in the echo area. Also standardizes use of the w3m message function (use w3m--message) and the method of clearing the echo area (use (w3m-message nil)).
    • This is a large and hasn't been exhaustively tested, but the refactor was pretty straightforward, it seems to work, and if there is a mistake hiding in there, it shouldn't have earth-shattering consequences, so its ready for this master branch.
  • bb_clipboardpr #12

    • Functions that copy urls to the emacs kill-ring also copy them to the operating system clipboard.
    • NOTE: This is an imperfect pull-request in that it is only pre-configured for linux. For other operating systems, cons cells need to be added to the new variable w3m-gui-clipboard-commands with the OS type and the command string that OS would use to put text into its clipboard. At this point, do NOT use M-x customize-variable to modify the variable; the defcustom for the variable has a known bug. Other than that, it all seems to work great.
  • bb_ambiguous_navigationpr #81

    • Adds intelligence to quickly navigate series' of pages on the same web site to include cases of URL links with only 'next' / 'previous' in their text strings, not inside their HTML tags.
      • Additional logix to support google search pages' website design.
    • Improves scrolling behavior at end of page to maintain an entire window-full visible.
  • bb_tab_movepr #82

    • Fixes bug that moving a tab more than one position away would swap tabs instead.
  • bb_save-dir-updatepr #80

    • Updates the session-default save directory upon use.
  • bb_local_filespr #48

    • Expands environment variables (eg. $HOME, $TEMPDIR, ~)
    • Respects documentation for w3m-local-find-file-regexps, in terms of what the included and excluded regexes do.
    • Doesn't hide a new find-file buffer when creating it using function w3m-goto-url-new-session.
  • bb_sessionsbased upon pr #26

    • Change the way the session pop-up window behaves when deleting buffers and when exiting the pop-up, so that the currently displayed buffer is the one that remains 'on top'. This is mainly the contribution of Eugene Sharygin (@eush77) commit 390c4622eae.
  • bb_documentationpr #22

    • Suggested improvements to all documentation files.
  • bb_compiler_warningspr #24

Branches merged to upstream

  • bb_awesome_barpr #56 merged!

    • Adds bookmark urls and titles to the autocomplete i-search when prompting for a url, just like all the other modern browsers do!
  • bb_content_typepr #55 merged!

    • Fixes many bugs related to recognizing a URL's content-type and respecting user's wishes for how to handle them. See the commit message of c2917160b7162049 and the pull-request message, for a full explanation.
  • bb_quick-search_POST-DATA_issue_0052pr #54 merged!

    • Fixes bug that was preventing the likes of duckduckgo searches from functioning when using the emacs-w3m 'quick-saerch' feature, eg. ddg:foo.
  • bb_toggle_unreadpr #50 merged!

    • New feature: In the buffer select pop-up window, toggle whether a buffer is considered and labeled 'unread'. Bound to 'u'.
  • bb_sessions_copypr #49 merged!

    • New feature: copy a session, bound to 'c' and 'C'.
    • Bugfixes: properly position point after operations.
    • Bugfix: delete a session when deleting its last element.
  • bb_query_trackerspr #47 merged!

    • Allow users to remove trackers embedded in URLs.
    • See defcustom w3m-strip-queries-alist.
  • bb_page_anchorspr #46 merged!

    • Make old interactive feature usable: w3m-search-name-anchor to jump to an HTML anchor on the current page.
    • Default keybinding 'C-c j'.
  • bb_sessions_mergepr #43 merged!

    • New feature: copy session element(s) into another session.
    • Default keybinding 'm', 'M'.
  • bb_sessions_2pr #42 merged!

    • Bugfix: Don't quit the session buffer after opening a session.
    • Bugfix: Retain session buffer in its window (it was being replaced with the created buffer(s)).
    • Bugfix: Don't create duplicate buffers.
  • bb_magnet pr #37 merged!, pr #38 merged!

    • New feature: Download torrents and magnet links. This feature requires external command-line utilities from the transmission project (transmission-daemon, transmission-cli) and recommends transmission-remote-cli from the same source.
  • bb_bookmarks pr #40 merged!

    • Improvements: w3m-bookmark-add-all prompts only once for a section name, using a sane timestamp-based default, doesn't add bookmark buffers to the bookmark file, auto-refreshes bookmark buffers, and improve error handling.
    • Bugfixes: Operate in all display modes, correct coding errors for functions string-match and switch-to-buffer.
  • bb_filters

  • bb_history_on_historypr #89 merged!

    • BUGFIX: Instances of viewing a buffer's history should themselves not be added to the history.
    • Generalize the above for handling of all "about://" pages.
    • Side benefit. ow users can restore from "about://source" and "about://heading" by using keybinding 'B' w3m-view-previous-page.
  • bb_background_tabpr #32 merged!

    • BUGFIX: allow new tabs to be loaded in background
    • New options: Functions w3m-goto-url-new-session and w3m-copy-buffer accept C-u to invert your default setting for background / foreground of new tabs.
    • Use clone-buffer to copy tabs in order to improve performance.
  • bb_move_tabspr #33 merged!

    • New feature: Change the order of tabs from within the buffer listing (ie. w3m-select-buffer). The new functions are w3m-tab-move-next, w3m-tab-move-prior, aliased to w3m-tab-move-right, w3m-tab-move-left.
    • The docstring for w3m-select-mode was updated and improved.
    • Console-friendly keybindings were added for functions w3m-tab-move-left (C-c <) and w3m-tab-move-right (C-c >).
  • bb_quibbles

    • This isn't supposed to be a feature branch, or a bug-fixing branch; it's for issues of programming style, efficiency, and documentation, but occassionally some substantive stuff may creep in by accident ...
  • bb_utfpr #9 merged!

    • This branch is for converting the codebase to be fully UTF-8. The project is over 20 years old, and has a lot pre-unicode artifacts. I originally did this on a separate git repository in September 2018, before the project moved to git. With all the unrelated histories between the two, and an awful experience trying to work with those discrepancies, I'm trying here to perform a commit based upon a straight git diff. On that other repository, the code was tested by me for the period September 2018 - January 2019 without any trouble noticed; OTOH, I wasn't using it with Japansese or other CJK codesets ...
  • `bb_small_bug_fixes

    • w3m-dtree shouldn't abort on subdir permission restriction `pr #10 merged!
    • w3m-favicon-convert needed basic bounds checking `pr #21 merged!
  • bb_travispr #16 merged!

    • Adds multiple combinations of operating systems and emacs versions to .travis.yml

    • Demonstrates how to use travis 'badges' to embed images in README.md

    • Small bug fix to perform bounds checking.

  • bb_view_url _pr #44_

    • remove duplicate code by replacing use of `w3m-view-this-url-1' with calls to w3m-goto-url{,-new-session}.
  • bb_buffer_quit_functionpr #88 merged!

    • properly exit pop-up windows when attempting to ESCape them.

Branches now obsolete

  • bb_xemacs_kill pr #28
    • Remove support for xemacs. The upstream has not been in development for years, there doesn't seem to be a user-base, and I understand from the mailing list that it doesn't work anyway, so this will remove the cruft from the code-base.
    • Performed independently upstream.

Project README documentation

Use Emacs as a full-featured and secure internet browser!
(Does not support javascript).

license: GPL 2.0

NEWS! (2019-02): We are now on github!


  • Tabs
  • Images
  • Forms
  • HTTPS preferred
  • Bookmark management
  • Cookie management
  • Session management
  • History management
  • Asynchronous operations
  • Greasemonkey-type filtering
  • Quick-search
  • ELisp scripting
  • More (on-line Info documentation) ...

This project has been in active development continuously since 2000.

Originally, there had been a separate project Emacs/W3 which in its time was the most popular web browser on Emacs, but it suffered from slow operation. The decision was made to create this alternative, based upon Akinori Ito's w3m text-mode pager which had WWW capability.

As of 2019, the project has been actively developed and supported for nearly two decades, but since 2005 it has been releasing updates in a "rolling" manner, directly from its CVS repository. Since early 2019, the project has also been hosted on MELPA and github.

Here's the history of the old milestones under the prior system of issuing 'stable' releases:


Since 2019, the official current version is always available from MELPA and github, as well as from our legacy CVS repository. For most users, it will probably be most convenient to download, install, and maintain the package from within emacs via MELPA.

For people who would like to use the legacy cvs[1] repository, the following commands will download the package once you have cvs installed.

% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
CVS password: # No password is set.  Just hit Enter/Return key.
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

Source code access to the legacy cvs repository with ViewVC is also available.


  • Emacs versions

    Emacs-w3m supports the latest two major stable versions of Emacs. Thus, when the latest stable Emacs was 26.1, Emacs-w3m was supporting versions 26.1, 25.3, 25.2, and 25.1.

    Older versions of Emacs may still be able to successfully use the current version of emacs-w3m, but as the current versions of Emacs or ELisp themselves change, deprecate, or remove features, the latest version of emacs-w3m can be expected to keep pace, and thus will gradually lose functionality when run in older Emacs versions.

    Pre-release versions of Emacs and even development snapshots are unofficially supported, as we do try to keep the code up-to-date, so if you are using a "bleeding edge" Emacs version and do experience a problem, please do file a bug report by contacting us on our mailing list!

  • w3m

    Emacs-w3m requires the latest version of w3m.

Optionally, if you would like to use the shimbun library included in the emacs-w3m distribution, you have to install the Emacs packages APEL and FLIM.


If you are installing from the MELPA repository, the install process follows the standard MELPA procedure. The rest of this section describes how to install manually from source.

Before installing emacs-w3m, check whether your environment meets the requirements.

First, run the configure script.

% ./configure

However, if you've installed APEL and FLIM in non-standard directories (ie. somewhere not on the default load-path), you must specify them using the --with-addpath option as follows:

% ./configure --with-addpath=/your/path/to//apel:/your/path/to/flim

Next, execute the following commands to install emacs-w3m to an appropriate directory.

% make
# make install

If you cannot execute the configure script on your system, or if no make command is available, execute the following command:

# emacs -batch -q -no-site-file -l w3mhack.el NONE -f w3mhack-nonunix-install

However, if APEL, FLIM (or any other library) are installed in non-standard directories (ie. somewhere not on the default load-path), the installer won't find them. In such a case, it is necessary to tell the installer where they are, as shown below:

# emacs -batch -q -no-site-file -l w3mhack.el //c/your/path/to/apel://c/your/path/to/flim -f w3mhack-nonunix-install

Emacs-w3m has many configuration options, but the minimum that is required is just to put this line into your ~/.emacs file:

(require 'w3m-load)

Just type M-x w3m, and you can use emacs-w3m.

In order to handle text/html part with emacs-w3m under SEMI MUAs such as Wanderlust, put the following line in your ~/.emacs file:

(require 'mime-w3m)

For more details, see Info manual, or browse the emacs-w3m customization group within Emacs.


The project mailing list, emacs-w3m@namazu.org, is bi-lingual Japanese / English. It is open to the public, and its archive is accessible via the emacs-w3m mailing list archive. You can also subscribe to the gmane.emacs.w3m newsgroup which is gateway'd to this list bidirectionally (connect to news.gmane.org using nntp).

If you want to subscribe to this list, check the disclaimer and send a mail containing

subscribe Your Name

(not your email address) in the body to emacs-w3m-ctl@namazu.org. To unsubscribe, send a mail containing just

# bye

in the body to emacs-w3m-ctl@namazu.org.


Follow us on github

If you have a github account, you can use github's features to 'watch' and 'star' the project.

(alphabetical order in the family names)
  • Akihiro Arisawa
  • Boruch Baum
  • Tsuyoshi CHO
  • Shun-ichi GOTO
  • Kazuyoshi KOREEDA
  • MIYOSHI Masanori
  • Mikio NAKAJIMA
  • Yoichi NAKAYAMA
  • Keisuke Nishida
  • Masaru Nomiya
  • OHASHI Akira
  • Koichiro Ohba
  • Hideyuki SHIRAI
  • Taiki SUGAWARA
  • Satoru Takabayashi
  • Yuuichi Teranishi
  • TSUCHIYA Masatoshi
  • Katsumi Yamaoka

Thanks to the many other people for their great contributions.


In order to contact us, please send a mail to emacs-w3m@namazu.org. This mailing list is gateway'd to the gmane.emacs.w3m newsgroup bidirectionally and accepts even messages posted from nonsubscribers.


Bug reports and feature requests

Now that the project is on github, you can there submit bug reports or feature requests, using the github 'issues' interface.

Code contributions

Prior to migratng to git, the project accepted patch files via email. While that is still possible, in most casses it's probably best for all concerned to post submissions via github, prferably as a pull request.

last updated 2019-02-19

License: GPL v2

bb_download

About

emacs full-featured web browser (using w3m back-end)

https://emacs-w3m.github.io/

License:GNU General Public License v2.0


Languages

Language:Emacs Lisp 88.1%Language:Roff 10.0%Language:HTML 1.2%Language:Shell 0.4%Language:Makefile 0.3%