Как отключить автоматическую обрезку строк в emacs-term?

Я использую эмулятор терминала emacs. GNU Emacs 23.2.1 с GNU bash, выпуск версии 3.00.0(1). Когда какая-то команда, скажем, grep 1 file.txt выводит очень длинные строки, emacs транкирует их по ширине окна. Но он делает это правильно с этими строками, поэтому, когда я копирую такую ​​строку, я получаю не одну длинную строку, а несколько строк одинаковой ширины.

Например:

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

После повторения, скажем, с помощью cat lorem.ipsum я получаю (если у меня терминал шириной 38 символов):

Lorem ipsum dolor sit amet, consectet
ur adipisicing elit, sed do eiusmod t
empor incididunt ut labore et dolore 
magna aliqua. 

И теперь, если я скопирую его из терминала, у меня будет 4 строки, разделенные символами \n. Это очень раздражает, как избавиться от этого?


person Necto    schedule 05.10.2012    source источник


Ответы (1)


На самом деле я не нашел ответа, но я написал быстрый хак для легкой вставки таких сокращений в термин:

;; Linearize the last kill-ring entry
(defun make-single-line-in-clipboard ()
  (interactive)
  (with-temp-buffer
    (yank)
    (pop kill-ring)
    (goto-char 0)
    (while (search-forward "\n" nil t)
      (replace-match "" nil t))
    (kill-region (point-min) (point-max))))

;; Paste into terminal the linearized last killed text
(defun paste-into-term-singlelined ()
  (interactive)
  (term-line-mode)
  (make-single-line-in-clipboard)
  (end-of-buffer)
  (clipboard-yank)
  (term-char-mode))

И затем привязка для C-y (я использую расширение multi-term).

 (cons "C-y" 'paste-into-term-singlelined)
person Necto    schedule 30.10.2012