FileOutputStream fos = new FileOutputStream("File_Name", true);
fos.write(data);
true позволяет добавлять данные в существующий файл. Если мы напишем
FileOutputStream fos = new FileOutputStream("File_Name");
, он перезапишет существующий файл. Итак, для первого подхода.
Это возможно, но немного сложнее. В режиме Fixme для выделения ключевых слов используется font-lock
, поэтому он работает по мере ввода для выделения ключевых слов. Перехватывает блокировку шрифта на очень низком уровне, в основном запускается после каждого изменения содержимого буфера. Однако он сильно оптимизирован, что позволяет мгновенно появляться на современных компьютерах.
Индикатор TODO слева не работает. Выполните функцию, и все текущие TODO будут выделены; изменение буфера (добавление или удаление TODO) не меняет индикатор бахромы; это изменяется только тогда, когда функция запускается снова.
Ваш подход должен заключаться в таблицах синтаксиса, сначала определяя, когда вы находитесь в комментарии, а затем ища ключевые слова. Сложность заключается в том, чтобы делать это в интерактивном режиме (то есть по мере ввода). Для этого у вас должна быть возможность подключиться к конструкциям font-lock
, но функция, которую вы предоставляете для поиска таблицы синтаксиса комментариев, а затем и ключевых слов, лучше будет очень эффективной, так как она будет запускаться каждый раз. и каждый раз при изменении буфера (хотя, я думаю, он будет работать только в измененном регионе). Вы бы хотели поместить все это в font-lock-syntactic-keywords
, а не в font-lock-keywords
, потому что проход syntactic-keyword происходит до синтаксического прохода (который происходит до ключевое слово pass), и вам нужно установить TODO внутри комментариев до того, как будут установлены сами комментарии.
Извините, это неполный ответ с рабочим кодом .....
Может быть, это поможет: есть fn c-in-literal
в
cc-mode и аналогичный csharp-in-literal
в режиме csharp. Возвращаемое значение
- c
, если в комментарии стиля C, c ++
, если в комментарии стиля C ++
. Вы можете добавить это в код в
Emacs: индикатор TODO слева
, чтобы получить то, что вы хотите.
(defun annotate-todo ()
"put fringe marker on TODO: lines in the curent buffer"
(interactive)
(let (lit)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "TODO:" nil t)
(progn
(setq lit (c-in-literal)) ;; or csharp-in-literal
(if (or (eq lit 'c) (eq lit 'c++))
(let ((overlay (make-overlay (- (point) 5) (point))))
(overlay-put overlay 'before-string
(propertize "A"
'display
'(left-fringe ;; right
horizontal-bar
better-fringes-important-bitmap))))))))))