Size: a a a

2021 April 03

AM

AlexShell Makise in pro.vim
Emmanuel Goldstein
local function setopt(mode, opt, value)
 vim[mode][opt] = value
 if mode ~= 'o' then
   vim.o[opt] = value
 end
end
А mode это что?
источник

AM

AlexShell Makise in pro.vim
AlexShell Makise
А mode это что?
А, понял
источник

EG

Emmanuel Goldstein in pro.vim
AlexShell Makise
А mode это что?
Это фактор того, является ли опция глобальной (o), локальной для окна (wo) или локальной для буфера (bo)
источник

AM

AlexShell Makise in pro.vim
А, я тупой
источник

SB

Sergey Batalev in pro.vim
Ок
источник

pl

peach lasagna in pro.vim
Emmanuel Goldstein
Забыл сделать маппинг?
какой?
источник

EG

Emmanuel Goldstein in pro.vim
peach lasagna
какой?
gD на :h vim.lsp.buf.definition
источник

V

Vim Help in pro.vim
peach lasagna
какой?
источник

pl

peach lasagna in pro.vim
Emmanuel Goldstein
gD на :h vim.lsp.buf.definition
источник

AM

AlexShell Makise in pro.vim
Emmanuel Goldstein
local function setopt(mode, opt, value)
 vim[mode][opt] = value
 if mode ~= 'o' then
   vim.o[opt] = value
 end
end
Не, не работает
Делаю setopt('o', 'number', true) и ничего
источник

EG

Emmanuel Goldstein in pro.vim
AlexShell Makise
Не, не работает
Делаю setopt('o', 'number', true) и ничего
Потому что :h 'number' local to window
источник

V

Vim Help in pro.vim
AlexShell Makise
Не, не работает
Делаю setopt('o', 'number', true) и ничего
источник

EG

Emmanuel Goldstein in pro.vim
Нужно setopt('wo', 'number', true)
источник

AM

AlexShell Makise in pro.vim
Emmanuel Goldstein
Потому что :h 'number' local to window
Хм
А как тогда до этого работало, интересно
источник

GK

Georgy Komarov in pro.vim
Чат, я тут обнаружил странное поведение getpos — функции, которая возвращает позицию в тексте: номер строки и столбца  (см. :he getpos). Если попытаться с её помощью определить диапазон выделения visual selection, то каждый unicode-символ считается в два столбца в ширину.

Рассмотрим на минимальном примере (из сорцов nvim-treesitter):

function M:visual_selection_range()
 local _, csrow, cscol, _ = unpack(vim.fn.getpos("'<"))
 local _, cerow, cecol, _ = unpack(vim.fn.getpos("'>"))
 if csrow < cerow or (csrow == cerow and cscol <= cecol) then
   print(cscol - 1, cecol)
   return csrow - 1, cscol - 1, cerow - 1, cecol
 else
   print(cecol - 1, cscol)
   return cerow - 1, cecol - 1, csrow - 1, cscol
 end
end

Вызов этой функции печатает начальную и конечную колонку для выделенной строки.
Для строки test test она выдаёт 0 9, для тест тест0 16.

Меня интересует, как с её помощью вернуть настоящую ширину выделения, чтобы один символ соответствовал одной колонке.
Может, кто-нибудь сталкивался? Или знает, как решить такую задачу без использования getpos?
источник

V

Vim Help in pro.vim
Georgy Komarov
Чат, я тут обнаружил странное поведение getpos — функции, которая возвращает позицию в тексте: номер строки и столбца  (см. :he getpos). Если попытаться с её помощью определить диапазон выделения visual selection, то каждый unicode-символ считается в два столбца в ширину.

Рассмотрим на минимальном примере (из сорцов nvim-treesitter):

function M:visual_selection_range()
 local _, csrow, cscol, _ = unpack(vim.fn.getpos("'<"))
 local _, cerow, cecol, _ = unpack(vim.fn.getpos("'>"))
 if csrow < cerow or (csrow == cerow and cscol <= cecol) then
   print(cscol - 1, cecol)
   return csrow - 1, cscol - 1, cerow - 1, cecol
 else
   print(cecol - 1, cscol)
   return cerow - 1, cecol - 1, csrow - 1, cscol
 end
end

Вызов этой функции печатает начальную и конечную колонку для выделенной строки.
Для строки test test она выдаёт 0 9, для тест тест0 16.

Меня интересует, как с её помощью вернуть настоящую ширину выделения, чтобы один символ соответствовал одной колонке.
Может, кто-нибудь сталкивался? Или знает, как решить такую задачу без использования getpos?
источник

GK

Georgy Komarov in pro.vim
Собственно, как вариант, можно вытащить выделенный текст через nvim_buf_get_lines, пройтись по нему циклом и пересчитать настоящий размер выделения, вычитая оффсет для unicode-символов. Но мне кажется, должно быть решение проще.
источник

pl

peach lasagna in pro.vim
как можно удалить все до конца файла?  что-то вроде dd$
источник

AS

Aleksander Samoylenk... in pro.vim
peach lasagna
как можно удалить все до конца файла?  что-то вроде dd$
dG
источник

pl

peach lasagna in pro.vim
спс
источник