Get "usable" window width in vim script

get thesaurus
how to pronounce get
get my payment
get abbreviation
get to definition
out to get you synonym
get past tense
to get'' in spanish

How do I get the width of 3 (marked with green color in the image) in vim script?

If there is no signs column, and there are no other "special columns", I can get it with

winwidth(0) - (max([len(line('$')), &numberwidth-1]) + 1)

I think, you should be able to get that width using:

:set virtualedit=all
:norm! g$
:echo virtcol('.')

Alternatively, you could check, whether a signcolumn is present (e.g. using redir)

:redir =>a |exe "sil sign place buffer=".bufnr('')|redir end
:let signlist=split(a, '\n')
:let width=winwidth(0) - ((&number||&relativenumber) ? &numberwidth : 0) - &foldcolumn - (len(signlist) > 2 ? 2 : 0)

Kids Definition of get. 1 : to gain possession of (as by receiving, earning, buying, or  Visit our Get My Payment Frequently Asked Questions page to answer your questions about using the application, eligibility, payment amounts, and more. Didn't file a return in 2018 or 2019? If you have a filing requirement and have not filed a tax return for 2018 or 2019, you must file a 2019 tax return to receive the payment.

Kale's answer corrected one corner case where the number of lines is exceeding what &numberwidth can display. Here I fix another corner case where the signcolumn option is not set to auto

function! BufWidth()
  let width = winwidth(0)
  let numberwidth = max([&numberwidth, strlen(line('$'))+1])
  let numwidth = (&number || &relativenumber)? numberwidth : 0
  let foldwidth = &foldcolumn

  if &signcolumn == 'yes'
    let signwidth = 2
  elseif &signcolumn == 'auto'
    let signs = execute(printf('sign place buffer=%d', bufnr('')))
    let signs = split(signs, "\n")
    let signwidth = len(signs)>2? 2: 0
  else
    let signwidth = 0
  endif
  return width - numwidth - foldwidth - signwidth
endfunction

Check on the status of your Economic Impact Payment. This application will let you: Get your payment status; See your payment type; Provide your bank account​  Get definition, to receive or come to have possession, use, or enjoyment of: to get a birthday present; to get a pension. See more.

My ingo-library plugin has a ingo#window#dimensions#NetWindowWidth() function for that.

VerbEdit. get (third-person singular simple present gets, present participle getting​, simple past got or (archaic)  Synonyms for get at Thesaurus.com with free online thesaurus, antonyms, and definitions. Find descriptive alternatives for get.

Answering because I can't comment yet:

Christian's answer gives the wrong result in the case that the actual number of lines in the file exceeds &numberwidth (because &numberwidth is just a minimum, as kshenoy pointed out). The fix is pretty simple, though, just take the max() of &numberwidth and the number of digits in the last line in the buffer (plus one to account for the padding vim adds):

redir =>a | exe "silent sign place buffer=".bufnr('') | redir end
let signlist = split(a, '\n')
let lineno_cols = max([&numberwidth, strlen(line('$')) + 1])
return winwidth(0)
            \ - &foldcolumn
            \ - ((&number || &relativenumber) ? lineno_cols : 0)
            \ - (len(signlist) > 2 ? 2 : 0)

jQuery.get( url [, data ] [, success ] [, dataType ] )Returns: jqXHR. Description: Load data from the server using a HTTP GET request. get definition: 1. to obtain, buy, or earn something: 2. to receive or be given something: 3. to go somewhere and…. Learn more.

get meaning: 1. to obtain, buy, or earn something: 2. to receive or be given something: 3. to go somewhere and…. Learn more. GET is a personalized web page with services and information tailored to you; it is available to Cal State LA applicants and continuing students. Within GET you can see: Personal Information. Update your addresses, phone numbers and personal email address. View your campus assigned email address. View your Holds.

Synonyms for get at Thesaurus.com with free online thesaurus, antonyms, and definitions. Find descriptive alternatives for get. Due to COVID-19 restrictions, our office is currently closed to walk-in visitors. If you have questions, please email us at getinfo@wsac.wa.gov or send a support ticket from your online account. We will respond from 8:00 a.m. to 5:00 p.m. weekdays, excluding state holidays.

GET is one of the most common HTTP methods. Note that the query string (name/​value pairs) is sent in the URL of a GET request: /test/demo_form.php  The two most common HTTP methods are: GET and POST. The Hypertext Transfer Protocol (HTTP) is designed to enable communications between clients and servers. HTTP works as a request-response protocol between a client and server. A web browser may be the client, and an application on a computer that hosts a web site may be the server.

Comments
  • I'm gonna go with the second one, the first solution will have visual effect, something you don't want in a script. I will not accept your answer, for now, (but thanks :-) to see if someone can come up with something like editareawidth().
  • There is no such function and it is not needed.
  • @ChristianBrabandt I would not say it is not needed. It is not needed if all you want buffers for is editing some text, but not if you want to have some interface there. Though just sane scripting interface for signs would be enough.
  • @ZyX As an author of several plugins that use the sign feature, I agree, one needs a better VimL integration. I even wrote patches for that. But not for having a editareawidth function
  • Its possible to have &numberwidth non-zero while no number column is being displayed. In the second snippet, one should probably replace &numberwidth with something like ((&l:number || &l:relativenumber) ? &numberwidth : 0).