Git Product home page Git Product logo

nyagos's People

Contributors

dear avatar erw7 avatar hami-jp avatar hattya avatar hayashi-masayuki avatar hogewest avatar hymkor avatar masamitsu-murase avatar matsuyanagi avatar mattn avatar nocd5 avatar orthographic-pedant avatar ousttrue avatar pine avatar tomato3713 avatar tsuyoshicho avatar tyochiai avatar zztkm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nyagos's Issues

nyagos.gethistory()の引数にヒストリ数を超える値を与えると落ちる

例えばヒストリ数が2000の場合に

lua_e "nyagos.gethistory(2002)"

とすると落ちます(2001でないのは、上記コマンドが実行時にヒストリに追加され、リスト長が2001になるため)。

リスト範囲外の参照なのですが、
落ちるのは期待動作ではないと思ったので報告させていただきます。

コマンドがエラーを返さない

エラー出力関係で変更があったようなので仕様かもしれませんが
506655f 以降エラーを返さなくなりました。

24247ed 以前

$ invalid_command
exec: "invalid_command": executable file not found in %PATH%

$ lua_e r,e=nyagos.exec('invalid_command');print(e)
exec: "invalid_command": executable file not found in %PATH%

506655f 以降

$ invalid_command
(何も表示されない)

$ lua_e r,e=nyagos.exec('invalid_command');print(e)
(何も表示されない)

環境

  • Windows 8.1 64bit
  • go version go1.3.1 windows/386
  • gcc version 4.8.1 (tdm-2)

nyagos.bindkeyの関数呼び出しで^Hが考慮されていない

nyagos.bindkeyで設定した関数実行前に、^Hや"KILL_LINE"で消した入力もtext.textに渡されてしまいます。

nyagos.bindkey("C_X",
    function(this)
        print("\nthis.text: " .. this.text .. "\n")
        return false
    end
)

のように^Xにキーバインドを設定している状態で、

$ test string^H^H^H^H^H^H^H^X
this.text: test string

期待値は

this.text: test

だと思います。

文字列がnull終端されてない感じでしょうか?

$ test string
       ^ ここにカーソルがある状態で^U^Xとすると
this.text: stringstring

と出力されます。

ls marks folders as executable if the folder name ends with an executable suffix (github.com).

The command "ls" marks the folder name as executable in cases like: "github.com"

It should be:
"github.com/" (green)
but shows:
"github.com*" (pink)

In "commands/ls/ls.go" there are two places "dos.IsExecutableSuffix�" is called. Perhaps the dos package could be altered to also check if the path points to a folder, though that would require a FS hit each time.

If you're inclined to fix, I could create a pull request.

-Daniel

nyagos.evalでコマンドの戻り値が取得できない

32ff056 以降
nyagos.evalでコマンド実行結果を受け取ることができないようです。

例えば以下のようなエイリアス

alias {
    hoge=function()
        local path = nyagos.eval('pwd')
        print("\"".. path .. "\"")
    end
}

hogeの実行結果の期待値は

"(カレントディレクトリ)"

だと思うのですが

""
(カレントディレクトリ)

となります。

crashed with "history -100"

panic: runtime error: slice bounds out of range

goroutine 16 [running]:
runtime.panic(0x50a6c0, 0x5cb40f)
        c:/go/src/pkg/runtime/panic.c:279 +0xe9
_/C_/Users/Hayama/gosrc/nyagos/history.CmdHistory(0x122f2a00, 0x122fa358, 0x0, 0x0)
        C:/Users/Hayama/gosrc/nyagos/history/history.go:232 +0x273
_/C_/Users/Hayama/gosrc/nyagos/commands.Exec(0x122f2a00, 0x122e9700, 0x2d0288, 0x0, 0x554420, 0x0, 0x0)
        C:/Users/Hayama/gosrc/nyagos/commands/commands.go:167 +0x412
_/C_/Users/Hayama/gosrc/nyagos/alias.Hook(0x122f2a00, 0x0, 0x2d0288, 0x0, 0x0, 0x0, 0x0)
        C:/Users/Hayama/gosrc/nyagos/alias/alias.go:87 +0xca

history.pointerの初期化

昨日のマージしていただいたPRなのですが、以下の不備がありました。申し訳ありません

  • 不要なhistory.ResetPointer関数の呼び出し
  • ヒストリ末尾のコマンド実行時にhistory.pointerのresetが行われない

昨日のPR失敗してしまったので、今回は内容を確認していただきたいのですがお願いできませんでしょうか? nocd5@458c1f5

一連のPRで期待する動作は
コンソールのコマンド入力行が更新されたら(コマンド実行やINTR)history.pointerを初期化し、
カーソルキー上を入力した場合、ヒストリ末尾のコマンドを表示する。

です(nyaosと同等の動作)。

変数を定義しようとすると `invalid escape sequence near '\R'`になる。

環境変数のPATHに値を追加するために ~/.nyagosの最終行に

set "PATH+=C:\RailsInstaller\Ruby2.0.0\bin"

と追加すると

C:\Users\ironsand\Dropbox\bin\nyagos\nyagos.lua:71: C:\Users\ironsand\.nyagos:9: invalid escape sequence near '\R'

というエラーになってしまいました。

コンソール上で同じコマンドを読んで echo %PATH%しても値が変わってないですし、
nyagosではどうやって環境変数を設定すればいいんでしょうか?

nyaosの関数機能からの書き換え

nyaosでこんな関数を使っていたのですが

rake{
    if exist "Gemfile" then
        bundle exec rake %*
    else
        cmd /c rake %*
    endif
}

これはnyagosではどう書き換えられるんでしょうか?

http://qiita.com/zetamatta/items/98cc2ac1fa1f9370667b の説明によると
nyagos.alias で置き換えができるとのことなので

nyagos.alias("rake",
    if exist "Gemfile" then
        bundle exec rake %*
    else
        cmd /c rake %*
    endif
)

としてみましたが構文エラーになってしまいました。

which コマンドの結果の途中に \\ が含まれる場合がある

以下のように、内臓コマンド which の結果の途中に \\ が含まれることがあるようです。

$ which powershell
C:\Windows\System32\WindowsPowerShell\v1.0\\powershell.exe
[~]
$ where powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

再現条件は、PATH の最後がスラッシュで終了している場合です。上記の場合、C:\Windows\System32\WindowsPowerShell\v1.0\ が PATH に含まれています。

NYAGOS のバグ、というよりも Go 標準ライブラリ exec.LookPath の仕様みたいですが、気づいたので報告させていただきました。

French Keyboard

I want to congratulate you for your nyagos. I'm using your software with a French keyboard and I don't understand why but some character doesn't work when I'm typing.
ex: @ (altgr + 0)
See French keyboard layout
French keyboard layout

It's possible that was an issue with 'altgr'

One-linear gawk errors against double quotations

On nyagos.exe :

$ gawk "BEGIN{ printf ""%d\n"",0 }"
gawk: コマンドライン:1: BEGIN{ printf "%d\n"",0 }"
gawk: コマンドライン:1:                           ^ 予想外の改行または文字列の終端があります。

On CMD.EXE :

$ gawk "BEGIN{ printf \""%d\n\"",0 }"
0

On nyagos.exe again :

$ gawk "BEGIN{ printf \""\%d\n\"",0 }"
gawk: BEGIN{ printf \"\%d\n\"",0 }"
gawk:               ^ バックスラッシュが行最後の文字になっていません。

nyagos -k "cd %USERPROFILE%" fails

$ nyagos -k "cd %USERPROFILE%"
Nihongo Yet Another GOing Shell
lua: C:\Users\Hayama\Share\bin\nyagos.lua:2: attempt to index a nil value (global 'nyagos')
stack traceback:
        C:\Users\Hayama\Share\bin\nyagos.lua:2: in main chunk
        [C]: in ?

Panic at "ls -ltr" on Virtual Machine of Windows8-64bit.

$ ls -ltr
-rw-Exception 0xc0000006 0x8 0x4aa690 0x4aa690
PC=0x4aa690

time.Unix(0x0, 0x0, 0x8a4bdea8, 0x13ce11ff, 0x1211efe0, 0x12, 0x1211efe0, 0x0)
        c:/go/src/time/time.go:969
os.(*fileStat).ModTime(0x12154140, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/os/types_windows.go:49 +0x94
_/C_/Users/Hayama/GoSrc/nyagos/commands/ls.lsOneLong(0x549700, 0x1, 0x192e00, 0x
12154140, 0x6f, 0x191d30, 0x120ef030)
        C:/Users/Hayama/GoSrc/nyagos/commands/ls/ls.go:102 +0x2a2
_/C_/Users/Hayama/GoSrc/nyagos/commands/ls.lsLong(0x549700, 0x1, 0x120a4250, 0x1
, 0x1, 0x6f, 0x191d30, 0x120ef030)
        C:/Users/Hayama/GoSrc/nyagos/commands/ls/ls.go:166 +0x9a
_/C_/Users/Hayama/GoSrc/nyagos/commands/ls.lsFolder(0x549700, 0x1, 0x6e, 0x191d3
0, 0x120ef030, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/commands/ls/ls.go:246 +0x6ee
_/C_/Users/Hayama/GoSrc/nyagos/commands/ls.lsCore(0x121397e4, 0x0, 0x0, 0x6e, 0x
191d30, 0x120ef030, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/commands/ls/ls.go:264 +0x77
_/C_/Users/Hayama/GoSrc/nyagos/commands/ls.Main(0x1211efa8, 0x2, 0x3, 0x191d30,
0x120ef030, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/commands/ls/ls.go:384 +0x72f
_/C_/Users/Hayama/GoSrc/nyagos/commands.cmd_ls(0x120bbe00, 0x1211efa0, 0x0, 0x0)

        C:/Users/Hayama/GoSrc/nyagos/commands/ls.go:12 +0x101
_/C_/Users/Hayama/GoSrc/nyagos/commands.Exec(0x120bbe00, 0x120a4118, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/commands/commands.go:81 +0x556
_/C_/Users/Hayama/GoSrc/nyagos/alias.hook(0x120bbe00, 0x192f50, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/alias/alias.go:82 +0x62
_/C_/Users/Hayama/GoSrc/nyagos/interpreter.(*Interpreter).Interpret(0x120bbd40,
0x1213cea0, 0xb, 0x12139cf4, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/interpreter/interpreter.go:147 +0x685
_/C_/Users/Hayama/GoSrc/nyagos/alias.(*AliasFunc).Call(0x120fc0f8, 0x120ba900, 0
x120fc0f8, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/alias/alias.go:54 +0x46a
_/C_/Users/Hayama/GoSrc/nyagos/alias.hook(0x120ba900, 0x192f50, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/alias/alias.go:97 +0x1fa
_/C_/Users/Hayama/GoSrc/nyagos/interpreter.(*Interpreter).Interpret(0x120ba600,
0x1213c307, 0x7, 0x7, 0x0, 0x0)
        C:/Users/Hayama/GoSrc/nyagos/interpreter/interpreter.go:147 +0x685
main.main()
        C:/Users/Hayama/GoSrc/nyagos/main/nyagos.go:191 +0xe0f

goroutine 5 [syscall, 10 minutes]:
os/signal.loop()
        c:/go/src/os/signal/signal_unix.go:21 +0x21
created by os/signal.initツキ1
        c:/go/src/os/signal/signal_unix.go:27 +0x34

goroutine 6 [chan receive, 10 minutes]:
_/C_/Users/Hayama/GoSrc/nyagos/conio.ctrlCHandler(0x12084ec0)
        C:/Users/Hayama/GoSrc/nyagos/conio/getch.go:55 +0x50
created by _/C_/Users/Hayama/GoSrc/nyagos/conio.DisableCtrlC
        C:/Users/Hayama/GoSrc/nyagos/conio/getch.go:63 +0xc3
eax     0x8a4bdea8
ebx     0x0
ecx     0x64
edx     0x13ce11ff
edi     0x1211ec5c
esi     0x1211efe0
ebp     0x13ce11e4
esp     0x1213944c
eip     0x4aa690
eflags  0x10206
cs      0x23
fs      0x53
gs      0x2b

alias + パイプ + & の場合、標準入力から値を受け取れない

aliasで定義したコマンドを&付きでバックグラウンド起動すると
パイプでつないでも標準入力から値が受け取れません

$ echo "hoge" | gvim.exe -
  -> OK
$ echo "hoge" | gvim.exe - &
  -> OK

$ alias g=gvim.exe
$ echo "hoge" | g -
  -> OK
$ echo "hoge" | g - &
  -> NG

GUIで標準入力から値を受け取るソフトがgvimくらいしかなく、
再現パターンのバリエーションがありませんが、よろしくお願いします。

組み込みのpwdコマンドがUNCパス上で正しく動作しない

UNCパス上でpwdコマンドを実行してもホスト名共有名を返しません。

例えば

\\foo\bar\hoge\fuga

pwdを実行した場合、実行結果は

hoge\fuga

となります。
commands/pwd.go内のdos.Getwdに原因があるようでos.Getwdだと大丈夫です。

nyagos.bindkeyのthis.posの値がずれている気がする

カーソル位置が一番左の場合
入力文字列なし→ this.pos: 0
入力文字列あり→ this.pos: 1

文字列入力(例:abc)ありで、カーソル位置が…
一番右(文字列の1つ右) → this.pos: 3
一番右の1つ手前(文字列の最後の文字の上) → this.pos: 3

と、なり、
カーソル位置が同じなのにthis.posの値が違うケースと、
カーソル位置が違うのにthis.posの値が同じになるケースが存在します。

index

diff --git a/lua_bindkey.go b/lua_bindkey.go
index 566379e..63f1617 100644
--- a/lua_bindkey.go
+++ b/lua_bindkey.go
@@ -96,7 +96,7 @@ func (this *KeyLuaFuncT) Call(buffer *readline.Buffer) readlin
                text.WriteRune(c)
        }
        if pos < 0 {
-               pos = text.Len()
+               pos = text.Len() + 1
        }
        this.L.PushInteger(pos)
        this.L.SetField(-2, "pos")

とするとカーソル位置でthis.posの値が一意に決まりますが如何でしょうか?

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.