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.