On Sunday, January 8, 2017 at 5:43:58 PM UTC-5, ZyX wrote:
> 2017-01-09 0:18 GMT+03:00 Gary Johnson 
> > On 2017-01-08, justrajdeep wrote:
> >> On Saturday, January 7, 2017 at 1:20:14 PM UTC-5, Gary Johnson wrote:
> >> > On 2017-01-07, Justin M. Keyes wrote:
> >> >
> >> > > On Jan 6, 2017 17:09, "justrajdeep" wrote:
> >> >
> >> > >>     Having an issue while doing a system() call with 
> >> > >> fzy(https://github.com/
> >> > >>     Dkendal/fzy-vim)from inside gvim
> >> > >>
> >> > >>     Code snippet
> >> > >>
> >> > >>       silent let output = system("ag -l -g '' --nocolor | fzy")
> >> > >>
> >> > >>       Decho(1)
> >> > >>       Decho (output)
> >> > >>       Decho(2)
> >> > >>       Decho(3)
> >> > >>
> >> > >>
> >> > >>     The output is
> >> > >>
> >> > >>         1
> >> > >>         Failed to open /dev/tty^J
> >> > >>         2
> >> > >>         3
> >> > >>
> >> > >>
> >> > >>     If i remove fzy from the command the result is fine. Can someone 
> >> > >> please
> >> > >>     help me debugging the issue?
> >> >
> >> > > Most likely, fzy wants to write to a tty, not a file.
> >> >
> >> > Looking at the web page https://github.com/jhawthorn/fzy, it's
> >> > pretty clear that fzy writes directly to a terminal, separately from
> >> > its stdout, which vim running in a termina provides, but which gvim
> >> > doesn't.
> >> >
> >> > Regards,
> >> > Gary
> >>
> >>
> >> Thanks Gary,
> >>
> >> Can you please point me to the details of this in vim help or
> >> somewhere? Sorry I am new to vim programming and would like to
> >> understand the difference and try to see if I can somehow get it
> >> working.
> >
> > Hi Rajdeep,
> >
> > I couldn't find a very detailed explanation in the Vim help.  There
> > is a little bit here.
> >
> >     :help gui-pty
> >
> > I originally thought the problem was just that the terminal
> > emulation provided by gvim lacked some of the capabilities needed by
> > fzy, but that's not what fzy is complaining about when it says it
> > "Failed to open /dev/tty".
> >
> > fzy assumes that it is running in a terminal and that this terminal
> > can be accessed by the device name /dev/tty.  That is true when fzy
> > is run from the shell executed by a terminal emulator or by vim's or
> > gvim's :sh command, and it is true when fzy is run from the shell
> > executed by vim's system() function, but it is not true when fzy is
> > run from the shell executed by gvim's system() function.
> >
> > You can see that by running "tty < /dev/tty" in those environments.
> > In all cases but one the command prints "/dev/tty".  When run in
> > a system() function from within gvim, the results are different:
> >
> >     :echo system("tty < /dev/tty")
> >     /bin/bash: /dev/tty: No such device or address
> >
> > But you _can_ send output from a system() command to the pty that
> > gvim creates for shell commands.
> >
> >     :!tty
> >     /dev/pts/16
> >     :call system("ls > /dev/pts/16")
> >
> > So, if one could coerce gvim or the shell into creating a /dev/tty
> > for programs run from system() in a GUI environment, as is done now
> > for :! and :sh, then your fzy command should work.
> >
> > I don't know why gvim's system() doesn't do that already.
> 
> This is too much work: basically you need to reimplement terminal
> emulator and somehow integrate it with the rest of the UI. You should
> rather ask why Vim does not follow Neovim way which intentionally
> disallows access to /dev/tty from system() or :! so a set of dirty,
> unportable hacks do not work (hacks require both terminal Vim and
> *nix).
> 
> Note that GVim does not provide fully featured terminal emulator. Do
> not try to write just `ls` output there, try using something which
> emits control sequences which change color or move cursor: both are
> required for fzy to work and “terminal emulator” attached to the
> pseudo-terminal created by GVim will fail interpreting them correctly.
> 
> >
> > Regards,
> > Gary
> >
> > --
> > --
> > You received this message from the "vim_use" maillist.
> > Do not top-post! Type your reply below the text you are replying to.
> > For more information, visit http://www.vim.org/maillist.php
> >
> > ---
> > You received this message because you are subscribed to the Google Groups 
> > "vim_use" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to .
> > For more options, visit https://groups.google.com/d/optout.

Thanks for the detail explanation. Wish I were a software developer and could 
contribute in my small way to this awesome editor. 

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to