Выполнение скрипта ниже на osx через emacs не работает, я получил сообщение об отказе в разрешении, ответ на этот вопрос был решен эта проблема: https://stackoverflow.com/a/12276562/912475Как запустить скрипт оболочки с помощью emacs keybinding, передавая слово под курсором как переменную
Tldr: Как настроить систему, чтобы автоматически передать слово под курсором в emacs прямо в мой сценарий оболочки как переменную, а затем запустить этот скрипт?
Я создал некоторую рудиментарную систему для «связывания» с папками из текстовых файлов надежным способом. Он использует временную метку, создаваемую скриптом, а затем устанавливает значение «значение» в буфере обмена. Из буфера обмена временная метка затем вставляется в txt со связанными заметками и в поле имени папки.
Чтобы найти папки при чтении txt, я использую функцию emacs с привязкой клавиш, которая позволяет скопировать временную метку (как слово, это все числа) в буфер обмена и искать ее в центре внимания (в osx) , Вместо этого я хотел бы автоматически запустить сценарий оболочки, который ищет каталог, имя которого заканчивается этой строкой, а затем открывает его. У меня уже есть скрипт, который делает что-то подобное, но я действительно не знаю, как связать функцию elisp и сценарий оболочки вместе. Я был бы очень признателен за решение, которое работает как с ОСО, так и с Linux (я использую оба). Вероятно, будет легко «портировать» решение, которое работает как на одном, так и на другом.
Это функция Emacs для копирования слово под курсором:
;;; function for copying a word under the cursor http://www.emacswiki.org/emacs/CopyWithoutSelection
(global-set-key (kbd "C-c o") (quote copy-word))
(defun copy-word (&optional arg)
"Copy words at point into kill-ring"
(interactive "P")
(copy-thing 'backward-word 'forward-word arg)
;;(paste-to-mark arg)
)
Это сценарий, чтобы найти и открыть каталог, имя которого заканчивается отметкой времени:
#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH #need this to make the gnu coreutils work on osx
file_number="20130812193913"
path_to_open=$(gfind ~/x/ | grep -e $file_number$) # $ means the end of the line, makes it possible to search for directories without finding their content
open "${path_to_open}"
отредактированной версия сценария, которая принимает аргументы из командной строки следующим образом:
me$ sh script_path.sh 20130812193913
Сценарий:
#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH #need this to make the gnu coreutils work on osx
file_number=$1
echo $file_number
path_to_open=$(gfind ~/x/ | grep -e $file_number$) # $ means the end of the line, makes it possible to search for directories without finding their content
open "${path_to_open}"
См: http://www.bashguru.com/2009/11/how-to-pass-arguments-to-shell-script.html
спасибо! Я получаю это сообщение об ошибке: определение функции Symbol void: call-my-script-with-word –
подсветка синтаксиса выглядит немного странно (много текста пурпурный, первая скобка фиолетовая), есть ли какие-то неуравновешенные вопрос о скобках? –
Я переписал сценарий выше, чтобы принимать аргументы из командной строки. Может быть, вы можете проверить это с помощью своего элипса? –