|
| 1 | +# Overseer.nvim Issue #445 Reproducer |
| 2 | + |
| 3 | +This is a minimal reproducer for [overseer.nvim issue #445](https://github.com/stevearc/overseer.nvim/issues/445) - compiler output truncation based on PTY width. |
| 4 | + |
| 5 | +## Problem Description |
| 6 | + |
| 7 | +When overseer.nvim runs compilation tasks in a narrow terminal window using the `jobstart` strategy, long compiler error messages get truncated. This affects developers working in split windows or terminals with limited width. |
| 8 | + |
| 9 | +## Running the Reproducer |
| 10 | + |
| 11 | +The reproducer is contained in a single Nix flake that includes everything needed: |
| 12 | +- Neovim with overseer.nvim configured |
| 13 | +- A C++ test file with intentional compilation errors that generate long messages |
| 14 | +- Automated test script that demonstrates the truncation |
| 15 | + |
| 16 | +### Quick Run |
| 17 | + |
| 18 | +```bash |
| 19 | +# Run the test directly (from the overseer.nvim directory) |
| 20 | +nix run |
| 21 | + |
| 22 | +# Or from any other directory |
| 23 | +nix run /home/tim/src/overseer.nvim |
| 24 | + |
| 25 | +# Or build and run separately |
| 26 | +nix build |
| 27 | +./result/bin/test-issue445 |
| 28 | +``` |
| 29 | + |
| 30 | +## What the Test Does |
| 31 | + |
| 32 | +1. Sets up a Neovim environment with overseer.nvim plugin properly installed |
| 33 | +2. Configures the terminal width to 80 columns (narrow) to trigger potential truncation |
| 34 | +3. Attempts to compile a C++ file with intentional errors that generate very long error messages |
| 35 | +4. Provides fallback demonstrations of PTY width effects using other tools |
| 36 | +5. Shows direct compiler output for comparison |
| 37 | +6. Reports whether truncation occurred and provides educational information about the issue |
| 38 | + |
| 39 | +## Expected Output |
| 40 | + |
| 41 | +### Current Status (Overseer Compatibility Issue) |
| 42 | +``` |
| 43 | +📊 Test Results: |
| 44 | + ──────────────────────────────────────────────────────── |
| 45 | + ℹ️ Window width: 80 |
| 46 | + ℹ️ Window width: 80 columns |
| 47 | + ──────────────────────────────────────────────────────── |
| 48 | +
|
| 49 | +⚠️ OVERSEER SETUP ISSUE |
| 50 | +• The test couldn't run due to environment compatibility |
| 51 | +• This is a test limitation, not related to the actual issue |
| 52 | +``` |
| 53 | + |
| 54 | +### PTY Width Demonstration |
| 55 | +``` |
| 56 | +🧪 PTY Width Demonstration: |
| 57 | + Testing how terminal width affects output in PTY environments... |
| 58 | + 🎯 Key insight: This shows how PTY width can affect tool output |
| 59 | + 📋 Real issue: Compilers often format errors based on terminal width |
| 60 | + 🔧 Overseer fix: Set fixed pty_width to prevent truncation |
| 61 | +``` |
| 62 | + |
| 63 | +### Direct Compiler Output (For Reference) |
| 64 | +``` |
| 65 | +🔍 Direct compiler output (for comparison): |
| 66 | + Length: 580 characters |
| 67 | + test.cpp:12:9: error: 'SomeUndefinedTypeWithVeryLongNameThatDoesNotExist' was not declared... |
| 68 | +``` |
| 69 | + |
| 70 | +### Testing the Fix |
| 71 | +To test the fix, edit `flake.nix` and uncomment line 60: |
| 72 | +```lua |
| 73 | +-- pty_width = 500, -- Fixed width prevents truncation |
| 74 | +``` |
| 75 | +becomes: |
| 76 | +```lua |
| 77 | +pty_width = 500, -- Fixed width prevents truncation |
| 78 | +``` |
| 79 | + |
| 80 | +## Technical Details |
| 81 | + |
| 82 | +The issue occurs because: |
| 83 | +1. Overseer's `jobstart` strategy creates a PTY (pseudo-terminal) for running commands |
| 84 | +2. By default, the PTY width matches the current Neovim window width |
| 85 | +3. Many compilers format their output based on terminal width, truncating long lines |
| 86 | +4. This results in incomplete error messages in the quickfix list |
| 87 | + |
| 88 | +The fix allows setting a fixed `pty_width` that's independent of the window size, ensuring full error messages are captured regardless of terminal width. |
| 89 | + |
| 90 | +## Files |
| 91 | + |
| 92 | +- `flake.nix` - Complete self-contained reproducer flake (TEST ONLY - do not commit to main repo) |
| 93 | + |
| 94 | +That's all! The flake contains everything else needed (test C++ code, Neovim config, test script) embedded within it. |
| 95 | + |
| 96 | +**Note:** This `flake.nix` is only for reproducing the issue. It should not be committed to the main overseer.nvim repository. After testing, you can delete it or move it elsewhere. |
0 commit comments