Откройте буфер Emacs, когда команда попытается открыть редактора в режиме оболочки

Вы всегда можете использовать статический метод printf from System.out - тогда вы должны реализовать соответствующий форматтер; это экономит кучу пространства, в котором вам нужны другие примеры.

Пример:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 

Сохраняет кучу пространства, которое является довольно большим бонусом, тем не менее я придерживаюсь мнения, что этот пример намного более управляем, чем любой другой ответ, тем более, что большинство программистов знать функцию printf из C (Java немного меняет функцию / метод).

19
задан Chris Conway 13 January 2009 в 06:28
поделиться

5 ответов

Можно присоединить к сессии Emacs до emacsclient. Во-первых, запустите emacs сервер с [1 112]

M-x server-start

или добавьте (server-start) к Вашему .emacs. Затем

export VISUAL=emacsclient

Редактирование далеко.

Примечание:

  • версии emacs и emacsclient должны согласиться. Если у Вас есть несколько версий установленного Emacs, удостоверьтесь, что Вы вызываете версию emacsclient соответствие версии Emacs, выполняющего сервер.
  • при запуске сервера в нескольких процессах/кадрах Emacs (например, потому что (server-start) находится в Вашем .emacs), буфер будет создан в последнем кадре для запуска сервера.
20
ответ дан 30 November 2019 в 04:37
поделиться

Существует emacsclient, gnuserv, и в Emacs 23, multi-tty, которые все полезны для этого. На самом деле я думаю в Emacs 23, emacsclient имеет всю интересную функциональность gnuserv.

3
ответ дан 30 November 2019 в 04:37
поделиться

Не совсем верный. ansi-term может выполнить emacs штраф (хотя я обычно выполняю mg для журналов фиксации, в редком случае я не фиксирую от emacs непосредственно). eshell может также выполнить emacs, если Вы запускаете screen первый и выполняете его из туда.

0
ответ дан 30 November 2019 в 04:37
поделиться

Наряду с использованием клиента / сервера emacs, я использую этот сценарий для вызова emacs.

Это запустит emacs, если он еще не запущен, или просто откроет новый буфер emacs в работающем emacs (используя gnuclient). По умолчанию он работает в фоновом режиме, но может быть запущен на переднем плане для процессов, ожидающих ввода. Например, я использую его в качестве редактора системы управления версиями при вводе описания списка изменений. У меня есть «SVN_EDITOR = emacs sync», поэтому я могу выполнить «svn commit» в оболочке emacs, и он откроет редактор svn в новом буфере emacs в том же самом emacs. Когда я закрываю буфер, "svn commit" продолжается. Довольно полезно.

#!/bin/sh

if [ -z $EMACS_CMD ]; then
  EMACS_CMD="/usr/bin/emacs"
fi

if [ -z $GNUCLIENT_CMD ]; then
  GNUCLIENT_CMD="/usr/bin/gnuclient"
fi

if [ "$1" = "sync" ]; then
    shift 1
    sync=true
else
    sync=false
fi

cmd="${EMACS_CMD} $*"
lsof $EMACS_CMD | grep $USER >/dev/null 2>&1
if [ "$?" -ne "1" ]; then
    cmd="${GNUCLIENT_CMD} $*"
fi

if [ $sync = "true" ]; then
    $cmd
else
    $cmd &
fi

0
ответ дан 30 November 2019 в 04:37
поделиться

Я хотел сделать нечто подобное для слияния в оболочке emacs через mercurial. Благодаря размещенным здесь плакатам я нашел способ. два шага:

  1. добавить: (start-server) в ваш файл .emacs (не забудьте загрузить файл после вашего изменения)

  2. в вашем hgrc:

     
     [merge-tools ] 
    emacs.executable = emacsclient 
    emacs.premerge = False 
    emacs.args = --eval "(ediff-merge-with-ancestor \" $ local \ "\" $ other \ "\" $ base \ "nil \" $ output \ ")" 
     
0
ответ дан 30 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: