Size: a a a

Emacs — русскоговорящее сообщество

2020 September 06

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
Только я до конца не уверен, что должно происходить для remote-файлов, поэтому пока append
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
так tramp-remote-path чем не угодил?
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
так tramp-remote-path чем не угодил?
тем что executable-find не ищет в нем
источник

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
так tramp-remote-path чем не угодил?
ну я как раз и дописал, чтобы он искал там
источник

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
Я хз, почему в емаксе сделали не так
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
сууука, ну кто блидь из мантейнеров юзает табы в илисп коде
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Sergey Makarov
(defun executable-find (command &optional remote)
 "Search for COMMAND in `exec-path' and return the absolute file name.
Return nil if COMMAND is not found anywhere in `exec-path'.  If
REMOTE is non-nil, search on the remote host indicated by
`default-directory' instead."
 (if (and remote (file-remote-p default-directory))
     (let ((res (locate-file
          command
          (append (mapcar
           (lambda (x) (concat (file-remote-p default-directory) x))
           (exec-path)) tramp-remote-path)
          exec-suffixes 'file-executable-p)))
       (when (stringp res) (file-local-name res)))
   ;; Use 1 rather than file-executable-p to better match the
   ;; behavior of call-process.
   (let ((default-directory (file-name-quote default-directory 'top)))
     (locate-file command exec-path exec-suffixes 1))))
да уже, тут даже адвайсом никак не подхачить
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Valeriy L
да уже, тут даже адвайсом никак не подхачить
а если в эдвайсе сделать залетить exec-path?
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
чтобы tramp-remote-path аппендить
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
можно
источник

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
а если в эдвайсе сделать залетить exec-path?
так ведь tramp-remote-path добавляется как есть, подмена exec-path тут ничего не даст, если я правильно понимаю, как это работает
источник

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
(я не очень представляю, как работают advice)
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Sergey Makarov
(defun executable-find (command &optional remote)
 "Search for COMMAND in `exec-path' and return the absolute file name.
Return nil if COMMAND is not found anywhere in `exec-path'.  If
REMOTE is non-nil, search on the remote host indicated by
`default-directory' instead."
 (if (and remote (file-remote-p default-directory))
     (let ((res (locate-file
          command
          (append (mapcar
           (lambda (x) (concat (file-remote-p default-directory) x))
           (exec-path)) tramp-remote-path)
          exec-suffixes 'file-executable-p)))
       (when (stringp res) (file-local-name res)))
   ;; Use 1 rather than file-executable-p to better match the
   ;; behavior of call-process.
   (let ((default-directory (file-name-quote default-directory 'top)))
     (locate-file command exec-path exec-suffixes 1))))
короче, лучше не делать defun
а сделай адвайс с :override
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
чтобы в любой момент можно было вернуть назад
источник

SM

Sergey Makarov in Emacs — русскоговорящее сообщество
окей, попробую, спасибо
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
а вообще можно эдвайс :after и там вручную locate-file из tramp-remote-path если не найдено
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
еще вариант с адвайсом это в :around временно переопределить функцию exec-path
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
или посмотреть на сам exec-path
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
в 26 это переенная ещё
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
(let ((handler (find-file-name-handler default-directory 'exec-path)))
   (if handler
(funcall handler 'exec-path)
     exec-path)))
источник