Git Product home page Git Product logo

Comments (5)

cosmos72 avatar cosmos72 commented on May 16, 2024 5

Both :!ls -la and \!ls -la are feasible, but I think we can do better:

Special commands take a whole line, and can only used at top level, so exchanging data between a special command and Go must be implemented manually by the special command.

If instead I implement an expression that invokes the shell and returns its output (and error),
it can be used anywhere - inside functions, as for condition, etc.

What do you think about something like:

// plain shell syntax, prefix is $
$ls -al

to run a shell command and collect its output as []string, surround it with $()

for i, name := range $(ls -al) {
    println(name)
}

to pass Go expressions (variables, function/method calls...) to shell command, surround them with {} like ipython does:

dir := "/usr/bin"
for i, name := range $(ls -al {dir}) {
    println(name)
}

standard error would be available as second return value:

out, err := $(some_command)

from gomacro.

cosmos72 avatar cosmos72 commented on May 16, 2024

It would be useful - I am just wondering whether it's slightly out of scope or not...

If implemented, we will have to choose a different special char for shell commands:
! is negation in go, and can already appear at line start - for example !foo() && !bar().

Maybe $ ?

from gomacro.

j0hnsmith avatar j0hnsmith commented on May 16, 2024

: is used as a prefix to indicate interpreter commands, so how about :!ls -la (! is used for shell in many programs)?

As for being out of scope, I think it's a pretty common REPL feature.

from gomacro.

j0hnsmith avatar j0hnsmith commented on May 16, 2024

Mysql repl uses mysql> \! ls -la, psql uses the same syntax.

from gomacro.

vitesse-ftian avatar vitesse-ftian commented on May 16, 2024

Using ,? If the first char of an input is , the line is treated as shell.

I believe , cannot be a valid char to start an expression. Also , (and .) is right below finger tip and there is no need for shift key. Dot (.) would be nice but it can be the first char of a valid expression (.6 as floating point).

from gomacro.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.