
Show HN: Funky – Easier, flexible, and more interactive shell functions - bbugyi200
https://github.com/bbugyi200/funky
======
scrollaway
"Python Meets ZSH" is a very weird way to describe this. What this looks like
is more of a zsh alias/function manager.

Which is pretty cool, btw! But if you are actually interested in "Python Meets
ZSH", have a look at Xonsh instead :)

[https://xon.sh/](https://xon.sh/)

~~~
chrisweekly
You beat me to it, was gonna mention xonsh too...

------
your-nanny
took me forever to actually figure out what this software is supposed to do.
the gif intro was too fast and hard to read on my phone. consider adding one
or two sentences summarising project

~~~
air7
Could you explain it then? Just gave up after a few moments...

~~~
bbugyi200
Funky manages funks, which are just basically (exactly really) shell
functions. What makes them cool is how easy they are to define and the way
that Funky manages them.

One of it's key features is that it enables you to define shell functions that
are local to a specific directory, but Funky also does a bit more behind the
scenes to add some value. For example it also:

* Checks for aliases of the same name and disables them if any exist (this can cause annoying ZSH errors if you tried to define the function manually).

* Appends special bash paraemeters (e.g. "$@") when appropriate so funks act more like aliases without the drawbacks.

* Tries to predict how ZSH completion should be defined, running a `compdef` command if it succeeds. (It needs a little more work in this area I think.)

And I think there's definitely some potential for greater functionality going
forward.

------
xte
Nice, I'll give a try :-) IMO it's another step toward a transformation from
classic shells to modern REPL, xonsh is one, eshell (Emacs) is another and
probably many others exists.

Traditional shells have some nice things mostly due to the power of UNIX
software, but also limitations for the very same reason.

Personally having choose to live in Emacs I notice a significant reduction of
shell usage, eshell included, but it still can't substitute a real terminal
for me, I tried xonsh and find the same: sometime python power rocks,
sometimes does not. Perhaps we still need many new step before achieve a new
game changing interface...

------
aaaaaaaaaab
What the hell is a “funk”?

I’m getting tired of people making up ad-hoc cutesy names for no reason
whatsoever. E.g. why do we call Rust packages “crates”?

~~~
steveklabnik
Technically, rust’s packages are called packages, and they’re made up of one
or more crates.

“Compilation unit” just doesn’t roll off the tounge the same way as “crate.”

(And “funk” is how many pronounce “func” as in “function”, they’re using the
short name to reinforce the tool’s name. That’s not “no reason.”)

~~~
dymk
But a lot of people already know what a "compilation unit" is, or have heard
of it, or have some intuition for what it means. So why make up a new word for
it?

"Rolls off the tongue" is at best an "eh" reason, at worst just an opinion
about how a word sounds to some people, which isn't a very strong argument for
coming up with new words.

~~~
steveklabnik
Naming things is a classically hard problem in our field. There’s always room
to improve.

~~~
dymk
So why is "crate" such an improvement over "compilation unit" that it warrants
inventing a new term? Especially when a large number of engineers learning
Rust come from a language that uses "compilation unit"?

~~~
steveklabnik
More come from those that don’t than those that do, these days.

Conciseness is a virtue. Additionally, “compilation unit” can also be
misleading; for example, incremental recompilation compiles just a portion of
a compilation unit, so it’s not really a unit anymore.

------
zonko
How is this any better than the usual bash C-x C-e?

