diff options
| author | Dmitry Safronov | 2018-01-22 12:19:00 +0100 |
|---|---|---|
| committer | Noam Postavsky | 2018-03-10 19:51:25 -0500 |
| commit | fda58fbc245a3f6f6722261ffb2e2262231bd4ea (patch) | |
| tree | 7722524e59d64356fa6004188c33f0bfee281800 | |
| parent | a8be860e17e2a737bda7a4c5075b71f0fb627a92 (diff) | |
| download | emacs-fda58fbc245a3f6f6722261ffb2e2262231bd4ea.tar.gz emacs-fda58fbc245a3f6f6722261ffb2e2262231bd4ea.zip | |
Fix wrong behavior of 'outline-headers-as-kill' command (Bug#30209)
* outline.el (outline-headers-as-kill): Fix heading duplication.
| -rw-r--r-- | lisp/outline.el | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/lisp/outline.el b/lisp/outline.el index 7cf56abd23a..669935bbc12 100644 --- a/lisp/outline.el +++ b/lisp/outline.el | |||
| @@ -1100,28 +1100,26 @@ convenient way to make a table of contents of the buffer." | |||
| 1100 | (save-restriction | 1100 | (save-restriction |
| 1101 | (narrow-to-region beg end) | 1101 | (narrow-to-region beg end) |
| 1102 | (goto-char (point-min)) | 1102 | (goto-char (point-min)) |
| 1103 | (let ((buffer (current-buffer)) | 1103 | (let ((buffer (current-buffer)) start end) |
| 1104 | start end) | 1104 | (with-temp-buffer |
| 1105 | (with-temp-buffer | 1105 | (let ((temp-buffer (current-buffer))) |
| 1106 | (with-current-buffer buffer | 1106 | (with-current-buffer buffer |
| 1107 | ;; Boundary condition: starting on heading: | 1107 | ;; Boundary condition: starting on heading: |
| 1108 | (when (outline-on-heading-p) | 1108 | (when (outline-on-heading-p) |
| 1109 | (outline-back-to-heading) | 1109 | (outline-back-to-heading) |
| 1110 | (setq start (point) | 1110 | (setq start (point) |
| 1111 | end (progn (outline-end-of-heading) | 1111 | end (progn (outline-end-of-heading) (point))) |
| 1112 | (point))) | 1112 | (with-current-buffer temp-buffer |
| 1113 | (insert-buffer-substring buffer start end) | 1113 | (insert-buffer-substring buffer start end) |
| 1114 | (insert "\n\n"))) | 1114 | (insert "\n\n"))) |
| 1115 | (let ((temp-buffer (current-buffer))) | 1115 | (while (outline-next-heading) |
| 1116 | (with-current-buffer buffer | 1116 | (unless (outline-invisible-p) |
| 1117 | (while (outline-next-heading) | 1117 | (setq start (point) |
| 1118 | (unless (outline-invisible-p) | 1118 | end (progn (outline-end-of-heading) (point))) |
| 1119 | (setq start (point) | 1119 | (with-current-buffer temp-buffer |
| 1120 | end (progn (outline-end-of-heading) (point))) | 1120 | (insert-buffer-substring buffer start end) |
| 1121 | (with-current-buffer temp-buffer | 1121 | (insert "\n\n")))))) |
| 1122 | (insert-buffer-substring buffer start end) | 1122 | (kill-new (buffer-string))))))) |
| 1123 | (insert "\n\n")))))) | ||
| 1124 | (kill-new (buffer-string))))))) | ||
| 1125 | 1123 | ||
| 1126 | (provide 'outline) | 1124 | (provide 'outline) |
| 1127 | (provide 'noutline) | 1125 | (provide 'noutline) |