[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44983: Truncate long lines of grep output
From: |
Juri Linkov |
Subject: |
bug#44983: Truncate long lines of grep output |
Date: |
Wed, 02 Dec 2020 22:53:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) |
>> Or maybe the problem is caused by special characters
>> used in minified web assets that contain many '{' chars.
>> And indeed, after inserting 100 thousands of '{'
>>
>> (insert (propertize (make-string 100000 ?{)
>> 'display "[…]" 'invisible t) "\n")
>>
>> and saving to a file, later visiting such file
>> Emacs becomes unresponsive for indefinite time.
>> But visiting the file with 100 thousands '{'
>> with find-file-literally causes no such problem.
>
> Does it help to set bidi-inhibit-bpa non-nil?
This helped to open the file with a lot of '{'.
But on minified files grep.el is still very slow.
Then instead of hiding long lines using font-lock,
I tried to do the same using the process filter:
(defun grep-filter ()
(save-excursion
(let ((end (point-marker)))
(goto-char compilation-filter-start)
(forward-line 0)
(while (< (point) end)
(let ((eol (line-end-position)))
(when (> (- eol (point)) 64)
(put-text-property (+ 64 (point)) (line-end-position)
'display "[…]"))
(forward-line 1))))))
Still very slow. Then tried to delete the excessive parts of long lines:
(defun grep-filter-try ()
(save-excursion
(let ((end (point-marker)))
(goto-char compilation-filter-start)
(forward-line 0)
(while (< (point) end)
(let ((eol (line-end-position)))
(when (> (- eol (point)) 64)
(delete-region (min (+ 64 (point)) (point-max))
(line-end-position)))
(forward-line 1))))))
Now Emacs becomes more responsive. But still output processing
takes too much time.
Finally, the last thing to try was the same solution that Richard
showed in bug#44941:
grep -a "$@" | cut -c -200
that gives the best possible result.
I doubt that it would be possible to invent something better.
So the question is should this be customizable for adding
`cut -c` automatically to the end of the grep command line,
possibly with `stdbuf -oL` suggested by Andreas.
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/01
- bug#44983: Truncate long lines of grep output, Dmitry Gutov, 2020/12/01
- bug#44983: Truncate long lines of grep output, Eli Zaretskii, 2020/12/01
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/01
- bug#44983: Truncate long lines of grep output, Eli Zaretskii, 2020/12/01
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/02
- bug#44983: Truncate long lines of grep output, Eli Zaretskii, 2020/12/02
- bug#44983: Truncate long lines of grep output,
Juri Linkov <=
- bug#44983: Truncate long lines of grep output, Eli Zaretskii, 2020/12/03
- bug#44983: Truncate long lines of grep output, Rudolf Schlatte, 2020/12/03
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/03
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/05
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/06
- bug#44983: Truncate long lines of grep output, Dmitry Gutov, 2020/12/06
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/06
- bug#44983: Truncate long lines of grep output, Dmitry Gutov, 2020/12/06
- bug#44983: Truncate long lines of grep output, Juri Linkov, 2020/12/08
- bug#44983: Truncate long lines of grep output, Dmitry Gutov, 2020/12/08