setnu.el に下記のパッチを当てて setnu-mode にしたバッファで
M-> (end-of-buffer) するとバッファ末尾でない場所に移動する事がある。
またバッファ末尾から M-v (scroll-down) を押しっ放しにして
バッファ先頭まで移動しようとしてもたどり着けない事がある。
具体的には setnu.el 自体を読み込んだバッファでそのようになる。
-
setnu.el
| old |
new |
|
| 145 | 145 | (fset 'setnu-set-glyph-face 'ignore)) |
|---|
| 146 | 146 | (t ; FSF Emacs |
|---|
| 147 | 147 | (defun setnu-set-glyph-face (g face) |
|---|
| | 148 | (put-text-property 0 (length g) 'display `((margin left-margin) ,g) g) |
|---|
| 148 | 149 | (put-text-property 0 (length g) 'face face g)))) |
|---|
| 149 | 150 | |
|---|
| | 151 | (defun setnu-set-buffer-left-margin (n) |
|---|
| | 152 | (setq left-margin-width n) |
|---|
| | 153 | (mapcar (lambda (w) (set-window-margins w n)) |
|---|
| | 154 | (get-buffer-window-list (current-buffer)))) |
|---|
| | 155 | |
|---|
| 150 | 156 | (defun setnu-mode-off () |
|---|
| 151 | 157 | "Internal shutdown of setnu-mode. |
|---|
| 152 | 158 | Deletes the extents associated with setnu-mode." |
|---|
| 153 | 159 | (if (and setnu-running-under-xemacs |
|---|
| 154 | 160 | (fboundp 'remove-specifier)) |
|---|
| 155 | 161 | (remove-specifier left-margin-width (current-buffer))) |
|---|
| | 162 | (setnu-set-buffer-left-margin 0) |
|---|
| 156 | 163 | (if setnu-start-extent |
|---|
| 157 | 164 | (let (e ee) |
|---|
| 158 | 165 | (setq e setnu-start-extent) |
| … | … | |
| 168 | 175 | (if (and setnu-running-under-xemacs |
|---|
| 169 | 176 | (fboundp 'set-specifier)) |
|---|
| 170 | 177 | (set-specifier left-margin-width 6 (current-buffer))) |
|---|
| | 178 | (setnu-set-buffer-left-margin 8) |
|---|
| 171 | 179 | (let ((done nil) |
|---|
| 172 | 180 | (curr-e nil) |
|---|
| 173 | 181 | (n 1) |