On Friday, January 31, 2014 8:54:22 PM UTC+5:45, Tycho Andersen wrote:
>
> Hi,
>
> On Fri, Jan 31, 2014 at 06:25:59AM -0800, dwakar wrote:
> > I have installed Racket in my home folder. The path to the drracket
> > executable is added to the PATH environment variable, but the tab
> > completions in the prompt widget doesn't work for drracket executable.
> >
> > However the CommandCompleter class and its complete seems to be working
> > fine.
> > Here's a little test I did.
> >
> > > import os
> > > import glob
> > > class CommandCompleter:
> > > DEFAULTPATH = "/bin:/usr/bin:/usr/local/bin"
> > >
> > > def __init__(self, qtile, _testing=False):
> > > """
> > > _testing: disables reloading of the lookup table
> > > to make testing possible.
> > > """
> > > self.lookup, self.offset = None, None
> > > self.thisfinal = None
> > > self._testing = _testing
> > >
> > > def actual(self):
> > > """
> > > Returns the current actual value.
> > > """
> > > return self.thisfinal
> > >
> > > def executable(self, fpath):
> > > return os.access(fpath, os.X_OK)
> > >
> > > def reset(self):
> > > self.lookup = None
> > > self.offset = -1
> > >
> > > def complete(self, txt):
> > > """
> > > Returns the next completion for txt, or None if there is no
> > > completion.
> > > """
> > > if not self.lookup:
> > > if not self._testing:
> > > # Lookup is a set of (display value, actual value)
> tuples.
> > > self.lookup = []
> > > if txt and txt[0] in "~/":
> > > path = os.path.expanduser(txt)
> > > if os.path.isdir(path):
> > > files = glob.glob(os.path.join(path, "*"))
> > > prefix = txt
> > > else:
> > > files = glob.glob(path + "*")
> > > prefix = os.path.dirname(txt)
> > > prefix = prefix.rstrip("/") or "/"
> > > for f in files:
> > > if self.executable(f):
> > > display = os.path.join(prefix,
> > > os.path.basename(f))
> > > if os.path.isdir(f):
> > > display += "/"
> > > self.lookup.append((display, f))
> > > else:
> > > dirs = os.environ.get("PATH",
> > > self.DEFAULTPATH).split(":")
> > > for didx, d in enumerate(dirs):
> > > try:
> > > for cmd in glob.glob(os.path.join(d, "%s*"
> %
> > > txt)):
> > > if self.executable(cmd):
> > > self.lookup.append(
> > > (
> > > os.path.basename(cmd),
> > > cmd
> > > ),
> > > )
> > > except OSError:
> > > pass
> > > self.lookup.sort()
> > > self.offset = -1
> > > self.lookup.append((txt, txt))
> > > self.offset += 1
> > > if self.offset >= len(self.lookup):
> > > self.offset = 0
> > > ret = self.lookup[self.offset]
> > > self.thisfinal = ret[1]
> > > return ret[0]
> > >
> > > if __name__ == "__main__":
> > > cc = CommandCompleter("qtile")
> > > print cc.complete("dr") # gives "drracket"
> > > print cc.complete("dr") # and the 'lookup' list contains the tuple
> > > with "drracket" and its path.
>
> Your login shell evaluates ~/.bashrc, but your X shell probably won't,
> unless you explicitly tell it to. How are you starting qtile? If it's
> via a ~/.xsession file, you can just source your bashrc there (or just
> modify the path as needed), and things should work fine.
>
> \t
>
Adding the path to /etc/profile fixed the problem. Thanks.
--
You received this message because you are subscribed to the Google Groups
"qtile-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.