From c194baf8b30a27ed0075ca0eece270431bdaa913 Mon Sep 17 00:00:00 2001 From: Victor S Date: Wed, 4 Oct 2023 19:25:19 -0300 Subject: refactor: split range getter into two parts Split the function that returns the visual selection range into two parts that return the start and the end of the range respectively, and use them in the CLI-command composer. This is part of a plan to use a general object with details about flags to compose the CLI command. --- autoload/prettier/resolver/config.vim | 22 +++++++++++++++++----- autoload/prettier/utils/buffer.vim | 14 ++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/autoload/prettier/resolver/config.vim b/autoload/prettier/resolver/config.vim index 9a18444..be36a7c 100644 --- a/autoload/prettier/resolver/config.vim +++ b/autoload/prettier/resolver/config.vim @@ -8,7 +8,8 @@ function! prettier#resolver#config#resolve(config, hasSelection, start, end) abo \ s:Flag_tab_width(a:config) . ' ' . \ s:Flag_print_width(a:config) . ' ' . \ s:Flag_parser(a:config) . ' ' . - \ s:Flag_range_delimiter(a:config, a:hasSelection, a:start, a:end) . ' ' . + \ s:Flag_range_start(a:config, a:hasSelection, a:start) . ' ' . + \ s:Flag_range_end(a:config, a:hasSelection, a:end) . ' ' . \ ' --semi=' . \ get(a:config, 'semi', g:prettier#config#semi) . \ ' --single-quote=' . @@ -38,15 +39,26 @@ function! prettier#resolver#config#resolve(config, hasSelection, start, end) abo return l:cmd endfunction -" Returns either '--range-start X --range-end Y' or an empty string. -function! s:Flag_range_delimiter(config, partialFormatEnabled, start, end) abort +" Returns either '--range-start X' or an empty string. +function! s:Flag_range_start(config, partialFormatEnabled, start) abort if (!a:partialFormatEnabled) return '' endif - let l:range = prettier#utils#buffer#getCharRange(a:start, a:end) + let l:rangeStart = prettier#utils#buffer#getCharRangeStart(a:start) - return '--range-start=' . l:range[0] . ' --range-end=' . l:range[1] + return '--range-start=' . l:rangeStart +endfunction + +" Returns either '--range-end Y' or an empty string. +function! s:Flag_range_end(config, partialFormatEnabled, end) abort + if (!a:partialFormatEnabled) + return '' + endif + + let l:rangeEnd = prettier#utils#buffer#getCharRangeEnd(a:end) + + return '--range-end=' . l:rangeEnd endfunction " Returns '--tab-width=NN' diff --git a/autoload/prettier/utils/buffer.vim b/autoload/prettier/utils/buffer.vim index 3125bcc..922a0db 100644 --- a/autoload/prettier/utils/buffer.vim +++ b/autoload/prettier/utils/buffer.vim @@ -61,10 +61,12 @@ function! s:getCharPosition(line, col) abort return line2byte(a:line) + (a:col - 2) endfun -" Returns [start, end] byte range when on visual mode -function! prettier#utils#buffer#getCharRange(startSelection, endSelection) abort - let l:range = [] - call add(l:range, s:getCharPosition(a:startSelection, col("'<"))) - call add(l:range, s:getCharPosition(a:endSelection, col("'>"))) - return l:range +" Return the start byte when on visual mode +function! prettier#utils#buffer#getCharRangeStart(startSelection) abort + return s:getCharPosition(a:startSelection, col("'<")) +endfunction + +" Return the end byte when on visual mode +function! prettier#utils#buffer#getCharRangeEnd(endSelection) abort + return s:getCharPosition(a:endSelection, col("'>")) endfunction -- cgit v1.3