fix(options): default 'titlestring' shows CWD #39233

Problem:
In the default 'titlestring', if the containing directory is the CWD, it renders as "."

Solution:
Add `:p` to the titlestring.

(cherry picked from commit e68e769352)
This commit is contained in:
Nick Krichevsky
2026-04-22 05:56:23 -04:00
committed by github-actions[bot]
parent b3b5674ac7
commit 4d4e196447
6 changed files with 38 additions and 16 deletions

View File

@@ -20,31 +20,51 @@ describe('title', function()
screen = Screen.new()
end)
it('has correct default title with unnamed file', function()
local expected = '[No Name] - Nvim'
it('defaults to "No Name" and the PWD in the title if the buffer is unnamed', function()
local expected = (is_os('win') and '[No Name] (C:\\) - Nvim' or '[No Name] (/) - Nvim')
command(is_os('win') and 'cd C:\\' or 'cd /')
command('set title')
screen:expect(function()
eq(expected, screen.title)
end)
end)
it('has correct default title with named file', function()
local expected = (is_os('win') and 'myfile (C:\\mydir) - Nvim' or 'myfile (/mydir) - Nvim')
command('set title')
command(is_os('win') and 'file C:\\mydir\\myfile' or 'file /mydir/myfile')
screen:expect(function()
eq(expected, screen.title)
end)
end)
it(
'defaults to the filename and its directory in the title if the buffer is named as a path outside the PWD',
function()
local expected = (is_os('win') and 'myfile (C:\\mydir) - Nvim' or 'myfile (/mydir) - Nvim')
command('set title')
command(is_os('win') and 'file C:\\mydir\\myfile' or 'file /mydir/myfile')
screen:expect(function()
eq(expected, screen.title)
end)
end
)
it(
'defaults to the filename and the PWD in the title if the buffer is a file in the PWD',
function()
local expected = (is_os('win') and 'myfile (C:\\) - Nvim' or 'myfile (/) - Nvim')
command('set title')
command(is_os('win') and 'cd C:\\' or 'cd /')
command('file myfile')
screen:expect(function()
eq(expected, screen.title)
end)
end
)
it('is updated in Insert mode', function()
command(is_os('win') and 'cd C:\\' or 'cd /')
api.nvim_set_option_value('title', true, {})
screen:expect(function()
eq('[No Name] - Nvim', screen.title)
local expected = (is_os('win') and '[No Name] (C:\\) - Nvim' or '[No Name] (/) - Nvim')
eq(expected, screen.title)
end)
feed('ifoo')
screen:expect(function()
eq('[No Name] + - Nvim', screen.title)
local expected = (is_os('win') and '[No Name] + (C:\\) - Nvim' or '[No Name] + (/) - Nvim')
eq(expected, screen.title)
end)
feed('<Esc>')
api.nvim_set_option_value('titlestring', '%m %f (%{mode(1)}) | nvim', {})