Выход из пробелов при вызове (buffer-file-name) в emacs - PullRequest
2 голосов
/ 19 июля 2010

Итак, у меня возник вопрос о том, как правильно подсчитать количество слов в режиме emacs LaTeX (на самом деле auctex, но неважно.) На этот вопрос получен хороший ответ .Затем я обнаружил, что у меня были проблемы, когда (buffer-file-name) включал пробелы.Это испортило. Эта проблема тоже обошлась .Теперь проблема в том, что решение ломается, когда нет пробелов.

Так что в настоящее время у меня есть две команды emacs:

(defun latex-word-count ()
  (interactive)
  (shell-command (concat "/usr/local/bin/texcount.pl "
                         "-inc "
                     (shell-quote-argument (concat "'" (buffer-file-name) "'")))))

это работает, когда в папке, в которой находится пробел.

(defun latex-word-c-nospace ()
  (interactive)
  (shell-command (concat "/usr/local/bin/texcount.pl "
             "-inc "
             (shell-quote-argument (buffer-file-name)))))

Работает, когда в имени папки нет места.(Хорошо, так что отступ немного капризный, но неважно)

Мой вопрос: есть ли способ заставить одну и ту же функцию работать в обоих случаях? Этот ответ говорит о том, что проблема связана с texcount, а не с emacs.Есть ли способ сделать это без возни с texcount.pl?Или мой лучший выбор - ткнуть texcount.pl так, как Крис Джонсен предложил для SU?

Ответы [ 3 ]

5 голосов
/ 19 июля 2010

Ваша вторая подпрограмма должна работать независимо от того, есть ли пробелы в имени файла или нет. Например, я создал эту маленькую команду:

(defun ls-l ()
  (interactive)
  (shell-command (concat "ls -l "
                         (shell-quote-argument
                          (buffer-file-name)))))

Это работает, когда я вызываю его при редактировании файла с именем foo.txt и при редактировании файла с именем foo bar.txt.

1 голос
/ 23 июля 2010

Я являюсь разработчиком TeXcount и недавно натолкнулся на это сообщение.

Как уже отмечалось, проблема в TeXcount, поэтому лучшее решение - это исправить TeXcount, а не взломатьдругое решение.У меня есть обновление, доступное на веб-странице TeXcount, в котором, я надеюсь, проблема будет решена: http://folk.uio.no/einarro/TeXcount/download.html

Примечание: это временная версия новых веб-страниц, и я могу перейти позже, если я решуновый адрес для TeXcount.

Проблема возникла из-за того, что для разрешения подстановочных знаков в именах файлов под Windows я использовал <@files> для получения всех файлов, и это не понравилось пробелами.В Linux вы могли бы просто использовать @files без глобуса (<...>), но я бы хотел, чтобы TeXcount работал и в Windows, поэтому лучшим решением было бы избежать пробелов перед передачей их глобу.

Надеюсь, это поможет, и если это не поможет, свяжитесь со мной, и я посмотрю, смогу ли я помочь ... Я здесь не постоянный, поэтому я могу не заметить вопросов, если отправлю их как ответы.

Эйнар

1 голос
/ 21 июля 2010

У вас всегда есть возможность, чтобы emacs определял, есть ли в имени файла пробел:

(defun latex-word-count ()
  (interactive)
  (let* ((has-space (string-match " " buffer-file-name))
         (quoted-name (shell-quote-argument
                       (if has-space
                           (concat "'" buffer-file-name "'")
                         buffer-file-name))))
    (shell-command (concat "/usr/local/bin/texcount.pl "
                           "-inc "
                           quoted-name))))
...