This commit completes Phase 3 (Event System) and includes a thorough
midpoint review that identified and fixed critical gaps from earlier phases.
Major accomplishments:
• Complete event system with addEventListener/removeEventListener API
• Event dispatch system with preventDefault/stopPropagation support
• Click event integration with w3m's existing mouse handling system
• Enhanced document.write() from stub to functional implementation
• Fixed critical anchor-DOM integration gap from Phase 2
• Comprehensive code review and stub elimination
• Full DOM element extraction and JavaScript object conversion
• Working noscript tag suppression when JavaScript is enabled
Testing verified:
• JavaScript execution and DOM manipulation working correctly
• document.write() creates DOM elements and displays content properly
• noscript content correctly hidden when JavaScript is enabled
• Click events integrate properly with w3m's mouse system
• No compilation errors or warnings (except minor unused variable)
Phase status: Phases 1-3 now complete and fully functional.
Remaining stubs are safe and won't cause unexpected behavior.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit completely overhauls the heading navigation feature (d/shift+D keys)
to use actual HTML tag information instead of unreliable text-based heuristics.
Key improvements:
- Navigation now works 100% reliably by tracking actual <h1>-<h6> HTML tags
- Eliminates false positives from bold text, links, and buttons
- No longer navigates to blank lines around headings
- Provides true screen reader-style heading navigation
Technical implementation:
- Added LINE_FLAG_HEADING flag to mark heading lines during HTML processing
- Enhanced readbuffer with in_heading field to track heading tag state
- Modified HTML parser to set/clear heading flags on <h>/<\/h> tags
- Updated TextLine and Line structures to preserve heading information
- Simplified navigation functions to use reliable flag-based detection
- Added content length check to avoid marking blank spacing lines
Also includes compilation fixes for modern GCC:
- Fixed function pointer type compatibility issues
- Updated signal handler declarations
- Resolved deprecation warnings for various system calls
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Introduce a separate TU for utility functions util.c. Add a function
exec_cmd to simplify execution of system commands with error handling.
While at it, suppress a warning about unused result when executing a
shell command. As we only display the command's output we do not care
about the exit code.
This fixes Debian bug #398989[0]
[0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=398989
When w3m is launched, if no other options are specified, it attempts to
read HTTP_HOME and WWW_HOME from the environment and upon finding a
value for one of these load the url specified. Once launched, though,
w3m provides no convenience for navigating to the home page.
Here, that ability is added. A new command GOTO_HOME is defined with a
default key binding of C-_.
Adding on command line the user agent add a duplicate header:
```
./w3m -header "User-Agent: Mozilla" http://localhost:9999
GET / HTTP/1.0
User-Agent: w3m/0.5.3+git20190105
Accept: text/html, text/*;q=0.5, image/*, application/*, message/*, x-scheme-handler/*, audio/*, video/*, inode/*
Accept-Encoding: gzip, compress, bzip, bzip2, deflate
Accept-Language: en;q=1.0
Host: localhost:9999
Pragma: no-cache
Cache-control: no-cache
User-Agent: Mozilla
```
As a result most server will take the first given; the default
w3m_version or the one defined on config `user_agent`
With this patch we can now override `User-Agent` from command line