Откройте файл с su/sudo в Emacs

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

171
задан e18r 31 December 2015 в 08:45
поделиться

5 ответов

Хорошая вещь о Бродяге состоит в том, что Вы только платите за то распространение в прямом и обратном направлениях к SSH при открытии первого файла. Sudo тогда кэширует Ваши учетные данные, и Emacs сохраняет дескриптор, так, чтобы последующие sudo-открытые файлы заняли намного меньше времени.

я не нашел дополнительное время, которое требуется для сохранения обременения, также. Это достаточно быстро, IMO.

62
ответ дан EfForEffort 23 November 2019 в 20:44
поделиться

Ваш пример не запускает ssh вообще, по крайней мере, не с моей версией БРОДЯГИ ("2.1.13 - пред"). И находить-файл и сохранять-буфер работают отлично.

4
ответ дан jfm3 23 November 2019 в 20:44
поделиться

Тьфу. Возможно, Вы могли открыть оболочку в Emacs и должностном лице sudo emacs.

проблема состоит в том, что Вы, по-видимому, только хотите открыть файл. Вы хотите быть в состоянии сохранить его позже. Таким образом Вам нужен Ваш корень privs, чтобы сохраниться, не только существовать для открытия файла.

Кажется, что Вы хотите, чтобы Emacs стал Вашим менеджером окон. Это чрезмерно увеличилось в размерах достаточно без этого.:)

0
ответ дан JBB 23 November 2019 в 20:44
поделиться

Я думаю, что во многих языках этот подход невозможен, поскольку они просто не имеют понятия ординалов, которые могут быть составлены из числа с некоторыми буквами в качестве расширения. Для «1-го», т.е. в немецком языке можно написать только «1». или «erster »/« erste »/« erstes» в зависимости от рода того, что вы нумеруете.

-121--5044786-

Этот сценарий представляет собой небольшую проблему. Нет пути переносить более старое определение рабочего процесса в новый формат. Я провел ограниченное тестирование и некоторые сценарии с добавлением/удалением операций, которые еще не работали нормально. Но тогда у меня также есть сценарии, которые идут плохо, включая повторное выполнение уже завершенного действия.

Насколько мне известно, нет хорошего способа решения проблемы, кроме отслеживания версии XAML/сборки, используемой для создания рабочего процесса, и проверки, когда вы хотите перезапустить рабочий процесс для определения используемой версии рабочего процесса.

-121--3677789-

Tramp выполняет не передачу sudo в оба конца через SSH, он использует вложенную оболочку . Смотрите руководство: https://www.gnu.org/software/tramp/#Inline-methods

Поэтому рекомендую придерживаться TRAMP.

62
ответ дан 23 November 2019 в 20:44
поделиться

По крайней мере, для сохранения, пакет sudo-save был написан именно для такой проблемы.

5
ответ дан 23 November 2019 в 20:44
поделиться
Другие вопросы по тегам:

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