cleverfox / conque

Automatically exported from code.google.com/p/conque
0 stars 0 forks source link

Std output is stalled if not in INSERT mode #41

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Use ":split" to create multiple views
2. Use ":ConqueTerm tcsh" to start a tcsh shell
3. Do "ls -Rl /" from shell see a lot list of outputs
4. Press escape and do control-w to switch over to another view.
5. Observe stall in the tcsh shell view

What is the expected output? What do you see instead?
I expect the tcsh shell will keep on outputting results from "ls" command.

What version of the product are you using? On what operating system?
Vim 7.3, Python 2.3, Linux 2.4.21 (RedHead 3.0)

Please provide any additional information below.

Original issue reported on code.google.com by koka...@gmail.com on 21 Jan 2011 at 9:55

GoogleCodeExporter commented 9 years ago
Looks like this is the Vim scripting limitation mentioned in installation guide

Original comment by koka...@gmail.com on 21 Jan 2011 at 10:36

GoogleCodeExporter commented 9 years ago
Yeah. This is not possible to fix without adding new functionality to Vim 
itself.

It is a very important feature, however. I'm planning on submitting a Vim patch 
to fix this in the future. So leaving this ticket open.

Original comment by nicora...@gmail.com on 22 Jan 2011 at 2:25

GoogleCodeExporter commented 9 years ago
I was wondering, if we told Vim to visit Insert mode in the Conque window, 
would that be enough to cause a refresh?

I played around with some code like this:

function! MyTest()
  let l:startWin = winnr()    " Remember which window we started in
  wincmd b                    " Go to my Conque window (last window on screen)
  normal "a\<Esc>"            " Enter Insert mode and leave again
  exec l:startWin."wincmd w"  " Return to start window
endfunction

Unfortunately it didn't seem to work.  Perhaps the user must sit a while in 
Insert mode, before the update occurs.

So then I tried this:

function! MyTest()
  let s:startWin = winnr()
  wincmd b
  normal "a"
  " After some relaxation in insert mode in the Conque window,
  " call EndTest to put us back where we were.
  augroup Test
    autocmd CursorHoldI * call EndTest()
  augroup END
endfunction

function! EndTest()
  augroup Test
    autocmd!        " Clear the autocmd we created above
  augroup END
  normal "\<Esc>"
  exec s:startWin."wincmd w"
endfunction

This actually worked!  Conque updated, and I was left in my original window!  
Although it did not return to Normal mode afterwards, but that may be my other 
scripts interfering.  (Also of note, it did not wait updatetime before firing 
CursorHoldI, it fired immediately, which is fine for our purposes.)

Original comment by joeytwid...@gmail.com on 7 Nov 2011 at 12:30

GoogleCodeExporter commented 9 years ago
Ah, instead of normal "\<Esc>" (which didn't work) we can successfully leave 
insert mode with stopinsert.  I will see if I can turn this into a patch...

Original comment by joeytwid...@gmail.com on 12 Nov 2011 at 11:21

GoogleCodeExporter commented 9 years ago
Has this been released into a patch?
I'm trying to use the "Make" utility and it would be nice to see when it's done.

Original comment by popp0...@gmail.com on 20 Feb 2012 at 10:05

GoogleCodeExporter commented 9 years ago
Forget the above madness.  In autoload/conque_term.vim, find the function 
conque_term#on_blur, and remove or disable the following lines:

    " turn off subprocess fast polling
    if exists('b:ConqueTerm_Var')
        sil exe s:py . ' ' . b:ConqueTerm_Var . '.idle()'
    endif

I just added the check: && g:ConqueTerm_ReadUnfocused == 0

Does that work for you?  (I have made some other changes.)

I have a new problem now!  When full, the unfocused window does not autoscroll 
to the bottom as new lines is added, so I can't read them until I visit it!

Original comment by joeytwid...@gmail.com on 10 Jun 2012 at 12:29

GoogleCodeExporter commented 9 years ago
Fixed that!  To force scrolling, I went into term_obj.read(), switched focus to 
the conqueterm window with:

  call conque_term#get_instance().focus()

then to make the scrolling happen, set:

  set_cursor = True

Afterwards, I had to refocus the original window and restore insert/normal 
mode.  Somehow it even puts the cursor back when it was on the last space!

My script becomes: http://hwi.ath.cx/code/home/.vim/autoload/conque_term.vim

Original comment by joeytwid...@gmail.com on 10 Jun 2012 at 11:02

GoogleCodeExporter commented 9 years ago
I've tried to download your version a few times but haven't been able to 
connect to "hwi.ath.cx". Can you attach it to this issue?

Thanks.

Original comment by nicora...@gmail.com on 12 Jun 2012 at 10:26

GoogleCodeExporter commented 9 years ago
Sorry about that.  I fear ISPs are not giving us the full Internet.  =(

Here are my files from autoload/ and plugin/, I hope they contain all the 
relevant changes.

The changes I made to conque_term#read_all() may be important!

My apologies there are other additions to the code which are irrelevant to this 
issue.

(Another feature I have added uses the variable insertModeWhenEntered to 
remember and restore the previous mode when leaving a conqueterm that forced 
insert mode.)

Original comment by joeytwid...@gmail.com on 20 Jun 2012 at 6:49

Attachments:

GoogleCodeExporter commented 9 years ago
Hi, Joey.

I'm seeing the same scrolling issue even with your changes in comment #9 as I 
do with the standard Conque release.

Can you verify that nothing else is required to make your changes work?

Original comment by scott.ty...@gmail.com on 9 Apr 2014 at 10:17

GoogleCodeExporter commented 9 years ago
Hmmm I found another file in my plugin folder.  Hope this helps!

Original comment by joeytwid...@gmail.com on 20 Apr 2014 at 10:02

Attachments: