Emacs - como corrigir um arquivo - Eshell não suporta redirecionamento de entrada

1

Ao tentar executar um patch a partir de um buffer Eshell (por exemplo, patch nsfns.m < nsfns.diff), recebo uma mensagem de erro (abaixo). Existe uma maneira de aplicar um patch usando um buffer Eshell? Caso contrário, existe outro modo principal de emulação de tipo de terminal que permitirá aplicar um patch?

Debugger entered--Lisp error: (error "Eshell does not support input redirection")
  signal(error ("Eshell does not support input redirection"))
  error("Eshell does not support input redirection")
  eshell-parse-redirection()
  run-hook-with-args-until-success(eshell-parse-redirection)
  #[0 "m?\205-�\302\303!\206�\304\305f!\305u\210\204�\211\202)� \204$�C\306C\244\210\210\202��\207" [eshell-current-argument eshell-arg-listified run-hook-with-args-until-success eshell-parse-argument-hook char-to-string nil t] 3 "\n\n(fn)"]()
  funcall(#[0 "m?\205-�\302\303!\206�\304\305f!\305u\210\204�\211\202)� \204$�C\306C\244\210\210\202��\207" [eshell-current-argument eshell-arg-listified run-hook-with-args-until-success eshell-parse-argument-hook char-to-string nil t] 3 "\n\n(fn)"])
  eshell-parse-argument()
  #[0 "m?\205#�`\301 `U\203�\302\303d{\"\210\211\203�\300C\244\210\266\202��\207" [(t "patch" "nsfns.m") eshell-parse-argument error "Failed to parse argument '%s'"] 6 "\n\n(fn)"]()
  funcall(#[0 "m?\205#�`\301 `U\203�\302\303d{\"\210\211\203�\300C\244\210\266\202��\207" [(t "patch" "nsfns.m") eshell-parse-argument error "Failed to parse argument '%s'"] 6 "\n\n(fn)"])
  eshell-parse-arguments(#<marker at 90 in *eshell*> 116)
  #[0 "\303\302\304\301\300\"\240\210\207" [116 #<marker at 90 in *eshell*> (nil) nil eshell-parse-arguments] 5 "\n\n(fn)"]()
  funcall(#[0 "\303\302\304\301\300\"\240\210\207" [116 #<marker at 90 in *eshell*> (nil) nil eshell-parse-arguments] 5 "\n\n(fn)"])
  eshell-hist-parse-arguments(#<marker at 90 in *eshell*> 116)
  eshell-expand-history-references(#<marker at 90 in *eshell*> 116)
  run-hook-with-args(eshell-expand-history-references #<marker at 90 in *eshell*> 116)
  #[0 "\300\304 `S\"\240\210\305\306    `S#\210\307 `S\"\211\205?�\310  !\210\300\304\nS\"\240\210\311\312!\210\313\314\315\316\317\320\321\300\"\322\"\323\324%D\215\205?�\325 \207" [("patch nsfns.m < nsfns.diff") eshell-last-output-end eshell-last-input-start eshell-last-input-end buffer-substring-no-properties run-hook-with-args eshell-expand-input-functions eshell-parse-command-input eshell-update-markers run-hooks eshell-input-filter-functions eshell-terminal funcall make-byte-code 0 "\302\303\301!\203\f�\304\301!\210\207\305\301\300\242\"\210\207" vconcat vector [nil eshell-invoke-directly eval eshell-eval-command] 4 "\n\n(fn)" eshell-life-is-too-much] 10 "\n\n(fn)"]()
  funcall(#[0 "\300\304 `S\"\240\210\305\306    `S#\210\307 `S\"\211\205?�\310  !\210\300\304\nS\"\240\210\311\312!\210\313\314\315\316\317\320\321\300\"\322\"\323\324%D\215\205?�\325 \207" [("patch nsfns.m < nsfns.diff") eshell-last-output-end eshell-last-input-start eshell-last-input-end buffer-substring-no-properties run-hook-with-args eshell-expand-input-functions eshell-parse-command-input eshell-update-markers run-hooks eshell-input-filter-functions eshell-terminal funcall make-byte-code 0 "\302\303\301!\203\f�\304\301!\210\207\305\301\300\242\"\210\207" vconcat vector [nil eshell-invoke-directly eval eshell-eval-command] 4 "\n\n(fn)" eshell-life-is-too-much] 10 "\n\n(fn)"])
  eshell-send-input(nil)
  funcall-interactively(eshell-send-input nil)
  call-interactively(eshell-send-input nil nil)
  command-execute(eshell-send-input)
lista de leis
fonte

Respostas:

2

Você pode contornar isso com cat nsfns.diff | patch nsfns.m.

legoscia
fonte