Skip to main content
removed extra space in code block
Source Link
muru
  • 25.1k
  • 8
  • 83
  • 144

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

func JCWC(line1, line2)
  let wc_start_line = 1
  let wc_end_line = 1
  if a:line2 >= a:line1
    let wc_start_line = a:line1
    let wc_end_line = a:line2
  else
    let wc_start_line = a:line2
    let wc_end_line = a:line1
  endif

  let wc_count = 0

  let stop = ""
  let n = wc_start_line
  while n <= wc_end_line
      let line = getline(n)
      if match(line, "^--------") >= 0
          let stop = " until '^--------'"
          break
      endif
      let c = JCWC_line(line)
      let wc_count = wc_count + c
      let n = n + 1
  endwhile

  redraw " <----- Added this
  echo "counted " . wc_count . " words" . stop

endfunc
Fix copy-and-paste error
Source Link
cxw
  • 974
  • 2
  • 8
  • 17

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc
 
endif

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc
 
endif

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc
Source Link
cxw
  • 974
  • 2
  • 8
  • 17

I found a solution thanks to the lead from @lcd047, which I greatly appreciate! I edited the script to run redraw before the echo per :help :echo-redraw. At least in my particular situation, the message now stays visible until I start scrolling. The relevant portion of the script is below for anyone who would like it.

  func JCWC(line1, line2)
    let wc_start_line = 1
    let wc_end_line = 1
    if a:line2 >= a:line1
      let wc_start_line = a:line1
      let wc_end_line = a:line2
    else
      let wc_start_line = a:line2
      let wc_end_line = a:line1
    endif

    let wc_count = 0

    let stop = ""
    let n = wc_start_line
    while n <= wc_end_line
        let line = getline(n)
        if match(line, "^--------") >= 0
            let stop = " until '^--------'"
            break
        endif
        let c = JCWC_line(line)
        let wc_count = wc_count + c
        let n = n + 1
    endwhile

    redraw " <----- Added this
    echo "counted " . wc_count . " words" . stop

  endfunc

endif