新しいバッファで開くコマンド出力


選択したクエリを情報ウィンドウで開くように調整しました.私がポストの底で言及したように、単純なアプローチの上にこの問題に関するいくつかの問題があります.
今日、クエリ出力を独自のスクラッチバッファに移動することでプラグインを調整します.追加ボーナスとして、私はプラグインを一般化する任意の外部コマンドではなく、データベースだけで動作するようになります.
まず、プラグインを確認しましょう.
def eval-query \
  -override \
  -docstring "Evaluate current selection using given connection." \
  -params 1 \
  -shell-script-candidates %{
    cat .eval-query.json \
      | jq -r '.connections|keys|@sh' \
      | sed s/\'//g \
      | tr -s " " "\n"
  } \
%{
  info -title "Query output" %sh{
    psql `cat .eval-query.json | jq .connections.$1 | cut -d\" -f 2` \
      -c "${kak_selection}" 2>&1
  }
}
ここの顕著な情報はinfo コマンド.情報ダイアログをポップアップするのではなく、出力をキャプチャして| 使用登録set-register . 以下は修正コマンド本体です.
set-register | %sh{
  cmd=`cat .eval-query.json | jq .connections.$1 | cut -d\" -f 2`
  eval "$cmd "${kak_selection}" 2>&1"
}
我々は| レジスタ:doc registers 部分シェルを生成するコマンドによって使用されるべきであると述べます.私は100 %のコーシャであるかどうかわからないので、あなたがよりよく知っているならば、コメントを残してください!
次に、eval query outputという新しいスクラッチバッファを開き、そこにレジスタの内容を貼り付けます.これはとても簡単です.
edit -scratch *eval-query-output*
exec 'geA<ret><esc>"|p;'
The edit コマンドはよく知られているそれはちょうど新しいバッファを開きます.-scratch Cachouneに、我々はそれをファイルでリンクすることを気にしないと言います.最後に、私たちはexecute-keys ( exec ファイルの最後に移動し、新しい行を追加し、| レジスタ.
そして、それ!以下のアクションで参照してください.

クエリを実行するためのメカニズムはとても一般的ですので、このプラグインは、簡単にクエリの結果に制限されていない新しいバッファーで何かを開くために使用することができます.単に名前変更することによってconnections to commands そして、設定ファイルを更新しました.beval “バッファeval”の場合、可能性は無限になる!
空想を加えましょうls 新しいバッファでディレクトリリストを開くことができるコマンド
{
  "commands": {
    "ls": "ls -lah"
  }
}

最後に、私たちはeval 任意のコマンドを実行するキー
{
  "commands": {
    "eval": "eval"
  }
}

我々が基本的に今持っているものは| ステロイド(そして、よりよく設計されません).のは、スタンドアロンのこととしては、スタンドアロンのものとして“パイプにバッファ機能”を分割するリファクタ.
def eval-to-buffer \
  -override \
  -docstring "Evaluate current selection into scratch buffer." \
  -params 1..1000 \
%{
  set-register | %sh{ eval "$@ 2>&1" }

  # Open our output buffer
  edit -scratch *command-output*

  # Put output into the buffer
  exec '%"|pd'
}

def beval \
  -override \
  -docstring "Evaluate current selection using named command into scratch buffer." \
  -params 1 \
  -shell-script-candidates %{ cat .beval.json | jq -r '.commands|keys|@sh' | sed s/\'//g | tr -s " " "\n" } \
%{
  eval-to-buffer %sh{
    cmd=`cat .beval.json | jq .commands.$1 | cut -d\" -f 2`
    echo "$cmd \"${kak_selection}\""
  }
}
現在、私たちのプロジェクト特有の構成はパイピング出力のための我々のメカニズムからバッファに独立しています.
更なる改良はもちろんそこにあります、しかし、今のところ、私はこれをここで去ります.読書ありがとう!