yatex
annotate yatexhie.el @ 386:8d17b1902bdd
Update menu string of YaTeX-%-menu
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Tue, 06 Jan 2015 23:20:53 +0900 |
parents | d69fd7b1ac4d |
children |
rev | line source |
---|---|
yuuji@287 | 1 ;;; yatexhie.el --- YaTeX hierarchy browser |
yuuji@287 | 2 ;;; |
yuuji@294 | 3 ;;; (c)1995-2013 by HIROSE Yuuji [yuuji@yatex.org] |
yuuji@353 | 4 ;;; Last modified Sun Dec 21 14:05:20 2014 on firestorm |
yuuji@366 | 5 ;;; $Id$ |
yuuji@52 | 6 |
yuuji@287 | 7 ;;; Code: |
yuuji@52 | 8 ;; ----- Customizable variables ----- |
yuuji@53 | 9 (defvar YaTeX-hierarchy-ignore-heading-regexp |
yuuji@53 | 10 "\\$[A-Z][a-z]+: .* \\$\\|-\\*- .* -\\*-" |
yuuji@53 | 11 "*Regexp of lines to ignore as files' headline.") |
yuuji@52 | 12 |
yuuji@52 | 13 ;; ----- General variables ----- |
yuuji@52 | 14 (defvar YaTeX-default-TeX-extensions "\\.\\(tex\\|sty\\)") |
yuuji@52 | 15 (defvar YaTeX-hierarchy-current-main nil) |
yuuji@52 | 16 (defvar YaTeX-hierarchy-buffer-message |
yuuji@52 | 17 (concat |
yuuji@53 | 18 "n)ext p)rev N)extsame P)revsame u)p K)illbuf RET)select" |
yuuji@53 | 19 (if (and YaTeX-emacs-19 window-system) " Mouse2)select" "") |
yuuji@53 | 20 " ?)help")) |
yuuji@52 | 21 (defvar YaTeX-hierarchy-saved-wc nil "Saved window configuration.") |
yuuji@52 | 22 |
yuuji@52 | 23 ;; ----- Functions for parsing hierarchy ----- |
yuuji@52 | 24 |
yuuji@52 | 25 (defun YaTeX-all-included-files (&optional file) |
yuuji@52 | 26 "Return all included files from FILE as a list. |
yuuji@52 | 27 If FILE is nil, use current buffer." |
yuuji@52 | 28 (save-excursion |
yuuji@52 | 29 (let ((include-regex (concat YaTeX-ec-regexp |
yuuji@52 | 30 "\\(\\(input\\)\\|" ;match#2 |
yuuji@52 | 31 "\\(include\\)\\)\\b")) ;match#3 |
yuuji@52 | 32 list file (cb (current-buffer))) |
yuuji@52 | 33 (if file (set-buffer (YaTeX-switch-to-buffer file t))) |
yuuji@52 | 34 (goto-char (point-min)) |
yuuji@52 | 35 (while (YaTeX-re-search-active-forward |
yuuji@52 | 36 include-regex YaTeX-comment-prefix nil t) |
yuuji@52 | 37 (cond |
yuuji@52 | 38 ((match-beginning 2) ;\input, {} is optional, 1 argument |
yuuji@52 | 39 (skip-chars-forward " {") |
yuuji@52 | 40 (setq file (buffer-substring |
yuuji@52 | 41 (point) |
yuuji@52 | 42 (progn |
yuuji@52 | 43 (skip-chars-forward |
yuuji@52 | 44 (concat "^ \t\n\r" YaTeX-ec-regexp "{}")) |
yuuji@52 | 45 (point))))) |
yuuji@68 | 46 ((and (match-beginning 3) (looking-at "{")) |
yuuji@52 | 47 (skip-chars-forward "{") |
yuuji@52 | 48 (setq file (buffer-substring |
yuuji@52 | 49 (point) |
yuuji@52 | 50 (progn |
yuuji@52 | 51 (forward-char -1) (forward-list 1) (1- (point))))))) |
yuuji@52 | 52 (or (string-match YaTeX-default-TeX-extensions file) |
yuuji@52 | 53 (setq file (concat file ".tex"))) |
yuuji@52 | 54 (setq list (cons file list))) |
yuuji@52 | 55 (set-buffer cb) |
yuuji@52 | 56 (nreverse list)))) |
yuuji@52 | 57 |
yuuji@70 | 58 (defun YaTeX-document-hierarchy (&optional file basedir) |
yuuji@52 | 59 "Return the document hierarchy beginning from FILE as a list. |
yuuji@52 | 60 If FILE is nil, beginning with current buffer's file." |
yuuji@52 | 61 (setq file (or file buffer-file-name)) |
yuuji@70 | 62 (and YaTeX-search-file-from-top-directory |
yuuji@70 | 63 (not (file-exists-p file)) |
yuuji@70 | 64 (string-match "^[^/].*/" file) |
yuuji@70 | 65 (setq file (expand-file-name file basedir))) |
yuuji@52 | 66 (message "Parsing [%s]..." (file-name-nondirectory file)) |
yuuji@52 | 67 (prog1 |
yuuji@52 | 68 (save-excursion |
yuuji@52 | 69 (if (or (file-exists-p file) (null file)) |
yuuji@52 | 70 (progn |
yuuji@52 | 71 (if file |
yuuji@52 | 72 (let ((parent buffer-file-name)) |
yuuji@52 | 73 (YaTeX-switch-to-buffer file t) ;set buffer to file |
yuuji@52 | 74 (or YaTeX-parent-file |
yuuji@52 | 75 (YaTeX-get-builtin "!") |
yuuji@52 | 76 (setq YaTeX-parent-file parent)))) |
yuuji@52 | 77 (cons (buffer-file-name (current-buffer)) |
yuuji@353 | 78 (mapcar (function ;return value |
yuuji@353 | 79 (lambda (f) |
yuuji@353 | 80 (YaTeX-document-hierarchy f basedir))) |
yuuji@52 | 81 (YaTeX-all-included-files)))))) |
yuuji@52 | 82 (message "Parsing [%s]...done" (file-name-nondirectory file)))) |
yuuji@52 | 83 |
yuuji@52 | 84 ;; ----- Functions for displaying hierarchy ----- |
yuuji@52 | 85 |
yuuji@52 | 86 (defun YaTeX-hierarchy-get-file-heading (file) |
yuuji@52 | 87 "Get a FILE's heading." |
yuuji@52 | 88 (save-excursion |
yuuji@52 | 89 (set-buffer (find-file-noselect file)) |
yuuji@52 | 90 (save-excursion |
yuuji@53 | 91 (let (p) |
yuuji@53 | 92 (goto-char (point-min)) |
yuuji@53 | 93 (cond |
yuuji@53 | 94 ((re-search-forward |
yuuji@53 | 95 (concat YaTeX-ec-regexp YaTeX-sectioning-regexp) nil t) |
yuuji@53 | 96 (search-forward "{") |
yuuji@53 | 97 (forward-char -1) |
yuuji@53 | 98 (setq p (condition-case nil |
yuuji@53 | 99 (progn (forward-list 1) (1- (point))) |
yuuji@53 | 100 (error (point-end-of-line)))) |
yuuji@53 | 101 (goto-char (1+ (match-beginning 0))) |
yuuji@53 | 102 (skip-chars-forward " \t\n") |
yuuji@53 | 103 (buffer-substring (point) (min (point-end-of-line) p))) |
yuuji@53 | 104 ((catch 'found |
yuuji@53 | 105 (while (re-search-forward "^ *%\\([^#]\\)" nil t) |
yuuji@53 | 106 (or (re-search-forward |
yuuji@53 | 107 YaTeX-hierarchy-ignore-heading-regexp |
yuuji@53 | 108 (point-end-of-line) t) |
yuuji@53 | 109 (throw 'found t)))) |
yuuji@53 | 110 (beginning-of-line) |
yuuji@53 | 111 (search-forward "%") |
yuuji@53 | 112 (skip-chars-forward "% \t") |
yuuji@53 | 113 (buffer-substring (point) (point-end-of-line))) |
yuuji@53 | 114 (t "")))))) |
yuuji@52 | 115 |
yuuji@52 | 116 (defun YaTeX-display-a-hierachy (hier level) |
yuuji@52 | 117 "Put a HIER of document hierarchy. |
yuuji@52 | 118 LEVEL is including depth." |
yuuji@52 | 119 (message "Formatting hierarchy buffer...") |
yuuji@52 | 120 (let ((lastatomcol 0) list i p) |
yuuji@52 | 121 (cond |
yuuji@52 | 122 ((listp hier) |
yuuji@52 | 123 (setq list hier) |
yuuji@52 | 124 (while list |
yuuji@52 | 125 (YaTeX-display-a-hierachy (car list) (1+ level)) |
yuuji@52 | 126 (setq list (cdr list)))) |
yuuji@52 | 127 ((stringp hier) ;is an atom |
yuuji@52 | 128 (insert " ") |
yuuji@52 | 129 (setq i level) |
yuuji@52 | 130 (while (> i 2) |
yuuji@52 | 131 (insert "| ") |
yuuji@52 | 132 (setq i (1- i))) |
yuuji@52 | 133 (if (> level 1) (insert "+---")) |
yuuji@52 | 134 (setq p (point)) |
yuuji@52 | 135 (insert (or (buffer-name (get-file-buffer hier)) |
yuuji@52 | 136 (file-name-nondirectory hier))) |
yuuji@52 | 137 (if (and window-system YaTeX-emacs-19) |
yuuji@52 | 138 (put-text-property p (point) 'mouse-face 'underline)) |
yuuji@52 | 139 (insert " ") |
yuuji@52 | 140 (indent-to-column (1- (/ (window-width) 2))) |
yuuji@52 | 141 (insert "% " (YaTeX-hierarchy-get-file-heading hier)) |
yuuji@52 | 142 (insert "\n")))) |
yuuji@52 | 143 (message "Formatting hierarchy buffer...")) |
yuuji@52 | 144 |
yuuji@52 | 145 (defun YaTeX-display-hierarchy (file &optional use-default) |
yuuji@52 | 146 "Display document hierarchy that is beginning from FILE." |
yuuji@52 | 147 (interactive "P") |
yuuji@52 | 148 (setq YaTeX-hierarchy-saved-wc |
yuuji@52 | 149 (list (current-window-configuration) |
yuuji@52 | 150 (and (featurep 'windows) |
yuuji@52 | 151 (boundp 'win:current-config) |
yuuji@52 | 152 win:current-config))) |
yuuji@52 | 153 (let*((b-in (YaTeX-get-builtin "!")) |
yuuji@70 | 154 default) |
yuuji@52 | 155 ;;む・踉擦鵙髟阡鮫このへんの仕様どう瘢雹したらいいか良く分からん... |
yuuji@52 | 156 (if default (setq default (expand-file-name default))) |
yuuji@52 | 157 (YaTeX-visit-main t) ;move to parent file |
yuuji@70 | 158 (setq default buffer-file-name) |
yuuji@52 | 159 (setq file |
yuuji@52 | 160 (or (if use-default default file) |
yuuji@52 | 161 (read-file-name |
yuuji@52 | 162 (format |
yuuji@52 | 163 "Main .tex file%s: " |
yuuji@52 | 164 (if default |
yuuji@52 | 165 (format "(default %s)"(file-name-nondirectory default)) |
yuuji@52 | 166 "")) |
yuuji@52 | 167 "" default 1)))) |
yuuji@52 | 168 (setq file (expand-file-name file)) |
yuuji@52 | 169 (setq YaTeX-hierarchy-current-main file) |
yuuji@70 | 170 (let ((dbuf "*document hierarchy*") |
yuuji@70 | 171 (topdir default-directory)) |
yuuji@52 | 172 (YaTeX-showup-buffer dbuf nil t) |
yuuji@52 | 173 (set-buffer (get-buffer dbuf)) |
yuuji@52 | 174 (setq truncate-lines t) |
yuuji@52 | 175 (let ((buffer-read-only nil)) |
yuuji@52 | 176 (erase-buffer) |
yuuji@70 | 177 (YaTeX-display-a-hierachy (YaTeX-document-hierarchy file topdir) 0)) |
yuuji@52 | 178 (goto-char (point-min)) |
yuuji@52 | 179 (YaTeX-hierarchy-next 0) |
yuuji@52 | 180 (set-buffer-modified-p nil) |
yuuji@52 | 181 (YaTeX-hierarchy-mode) |
yuuji@52 | 182 )) |
yuuji@52 | 183 |
yuuji@52 | 184 (defun YaTeX-display-hierarchy-directly () |
yuuji@52 | 185 "Same as YaTeX-display-hierarchy. Call from mouse." |
yuuji@52 | 186 (interactive) |
yuuji@52 | 187 (YaTeX-display-hierarchy nil t)) |
yuuji@52 | 188 |
yuuji@52 | 189 (defun YaTeX-hierarchy-mode () |
yuuji@52 | 190 "Major mode to browse and select document hierarchy. |
yuuji@52 | 191 |
yuuji@52 | 192 \\[YaTeX-hierarchy-next] next line |
yuuji@52 | 193 \\[YaTeX-hierarchy-prev] previous line |
yuuji@53 | 194 \\[YaTeX-hierarchy-forward] move forward in the same level |
yuuji@53 | 195 \\[YaTeX-hierarchy-backward] move backward in the same level |
yuuji@52 | 196 \\[YaTeX-hierarchy-up-document] move to parent file |
yuuji@52 | 197 \\[delete-other-windows] delete other windows |
yuuji@52 | 198 \\[other-window] other window |
yuuji@53 | 199 \\[shrink-window] shrink window |
yuuji@53 | 200 \\[enlarge-window] enlarge window |
yuuji@53 | 201 \\[YaTeX-hierarchy-show] show file contents in the next window |
yuuji@53 | 202 \\[YaTeX-hierarchy-scroll-up] scroll up file contents buffer |
yuuji@53 | 203 \\[YaTeX-hierarchy-scroll-down] scroll down file contents buffer |
yuuji@53 | 204 \\[YaTeX-hierarchy-top] show the top of file contents |
yuuji@53 | 205 \\[YaTeX-hierarchy-bottom] show the bottom of file contents |
yuuji@53 | 206 \\[YaTeX-hierarchy-lastpos] return to the previous position |
yuuji@52 | 207 \\[YaTeX-hierarchy-select] select file |
yuuji@52 | 208 \\[YaTeX-hierarchy-mouse-select] select |
yuuji@52 | 209 " |
yuuji@52 | 210 (setq major-mode 'YaTeX-hierarchy-mode |
yuuji@52 | 211 mode-name "YaTeX hier") |
yuuji@52 | 212 (use-local-map YaTeX-hierarchy-mode-map) |
yuuji@52 | 213 (setq buffer-read-only t) |
yuuji@52 | 214 (message YaTeX-hierarchy-buffer-message)) |
yuuji@52 | 215 |
yuuji@52 | 216 ;; ----- Subfunctions for interactive functions ----- |
yuuji@52 | 217 (defun YaTeX-hierarchy-get-current-file-buffer () |
yuuji@52 | 218 "Return the buffer associated with current line's file." |
yuuji@52 | 219 (let ((file (buffer-substring |
yuuji@52 | 220 (point) |
yuuji@52 | 221 (save-excursion |
yuuji@52 | 222 (skip-chars-forward "^ \t" (point-end-of-line)) (point)))) |
yuuji@52 | 223 (hilit-auto-highlight) buffer) |
yuuji@52 | 224 (set-buffer (find-file-noselect YaTeX-hierarchy-current-main)) |
yuuji@52 | 225 (if (get-buffer file) ;buffer is active |
yuuji@52 | 226 (setq buffer (get-buffer file)) ;may contain `<2>' |
yuuji@52 | 227 (if (string-match "<[2-9]>$" file) |
yuuji@52 | 228 (setq file (substring file 0 -3))) |
yuuji@52 | 229 (save-excursion |
yuuji@52 | 230 (setq buffer (YaTeX-switch-to-buffer file t)))))) ; open it! |
yuuji@52 | 231 |
yuuji@52 | 232 ;; ----- Interactive functions ----- |
yuuji@52 | 233 (defun YaTeX-hierarchy-next (arg &optional quiet) |
yuuji@52 | 234 "Move to next line's file in YaTeX document hierarchy buffer." |
yuuji@52 | 235 (interactive "p") |
yuuji@52 | 236 (forward-line arg) |
yuuji@52 | 237 (skip-chars-forward "- +\\|") |
yuuji@53 | 238 (if (and (/= arg 0) (not quiet)) |
yuuji@52 | 239 (YaTeX-hierarchy-select t)) |
yuuji@52 | 240 (message YaTeX-hierarchy-buffer-message)) |
yuuji@52 | 241 |
yuuji@52 | 242 (defun YaTeX-hierarchy-prev (arg) |
yuuji@52 | 243 "Move to previous line's file in YaTeX document hierarchy buffer." |
yuuji@52 | 244 (interactive "p") |
yuuji@52 | 245 (YaTeX-hierarchy-next (- arg))) |
yuuji@52 | 246 |
yuuji@52 | 247 (defun YaTeX-hierarchy-next-line (arg) |
yuuji@52 | 248 (interactive "p") |
yuuji@52 | 249 (YaTeX-hierarchy-next arg t)) |
yuuji@52 | 250 |
yuuji@52 | 251 (defun YaTeX-hierarchy-prev-line (arg) |
yuuji@52 | 252 (interactive "p") |
yuuji@52 | 253 (YaTeX-hierarchy-next (- arg) t)) |
yuuji@52 | 254 |
yuuji@52 | 255 (defun YaTeX-hierarchy-forward (arg) |
yuuji@52 | 256 "Move to forward file in same hierarchy level." |
yuuji@52 | 257 (interactive "p") |
yuuji@52 | 258 (YaTeX-hierarchy-next 0) |
yuuji@52 | 259 (let ((p (point))(column (current-column)) (i (if (> arg 0) arg (- arg)))) |
yuuji@52 | 260 (if (= column 0) (error "Not on file line.")) |
yuuji@52 | 261 (while (> i 0) |
yuuji@52 | 262 (if (catch 'found |
yuuji@52 | 263 (while (and (not (eobp)) (not (bobp))) |
yuuji@52 | 264 (forward-line (if (> arg 0) 1 -1)) |
yuuji@52 | 265 (move-to-column column) |
yuuji@52 | 266 (if (looking-at "[- +\\|]") nil |
yuuji@52 | 267 (YaTeX-hierarchy-next 0) |
yuuji@52 | 268 (if (= (current-column) column) (throw 'found t))) |
yuuji@52 | 269 (beginning-of-line))) |
yuuji@52 | 270 nil |
yuuji@52 | 271 (goto-char p) |
yuuji@52 | 272 (error "No same level file.")) |
yuuji@52 | 273 (setq i (1- i))))) |
yuuji@52 | 274 |
yuuji@52 | 275 (defun YaTeX-hierarchy-backward (arg) |
yuuji@52 | 276 "Move to backward file in same hierarchy level." |
yuuji@52 | 277 (interactive "p") |
yuuji@52 | 278 (YaTeX-hierarchy-forward (- arg))) |
yuuji@52 | 279 |
yuuji@52 | 280 (defun YaTeX-hierarchy-up-document () |
yuuji@52 | 281 "Up level, that is, move to parent file position." |
yuuji@52 | 282 (interactive) |
yuuji@52 | 283 (YaTeX-hierarchy-next 0) ;adjust column |
yuuji@52 | 284 (let ((p (point)) (line (count-lines (point-min) (point))) column) |
yuuji@52 | 285 (if (or (<= line 1) (< (current-column) 6)) |
yuuji@52 | 286 (message "No more parent") |
yuuji@52 | 287 (backward-char 1) |
yuuji@52 | 288 (or (= (char-after (point)) ?-) (error "Unexpected hierarchy buffer")) |
yuuji@52 | 289 (setq column (current-column)) |
yuuji@52 | 290 (while (and (> line 1) (looking-at "[- +\\|]")) |
yuuji@52 | 291 (forward-line -1) |
yuuji@52 | 292 (move-to-column column)) |
yuuji@52 | 293 (YaTeX-hierarchy-next 0) |
yuuji@52 | 294 (push-mark p t) |
yuuji@52 | 295 (message "Mark set to last position")))) |
yuuji@52 | 296 |
yuuji@52 | 297 (defun YaTeX-hierarchy-kill-buffer (arg) |
yuuji@52 | 298 "Kill buffer associated with current line's file." |
yuuji@52 | 299 (interactive "p") |
yuuji@52 | 300 (YaTeX-hierarchy-next 0) ;move to file name column |
yuuji@52 | 301 (if (bolp) (error "Not on file name line")) |
yuuji@53 | 302 (let ((file (buffer-substring |
yuuji@53 | 303 (point) |
yuuji@53 | 304 (progn (skip-chars-forward "^ \t") (point))))) |
yuuji@52 | 305 (YaTeX-hierarchy-next arg) |
yuuji@52 | 306 (cond |
yuuji@52 | 307 ((get-buffer file) |
yuuji@52 | 308 (kill-buffer (get-buffer file)) |
yuuji@52 | 309 (message "Buffer [%s] was killed" file)) |
yuuji@52 | 310 (t (message "Buffer [%s] is not active." file))))) |
yuuji@52 | 311 |
yuuji@52 | 312 (defun YaTeX-hierarchy-select (arg) |
yuuji@52 | 313 "Select current line's file in YaTeX document hierarchy buffer. |
yuuji@52 | 314 If ARG is non-nil, show the buffer in the next window." |
yuuji@52 | 315 (interactive "P") |
yuuji@52 | 316 (beginning-of-line) |
yuuji@52 | 317 (skip-chars-forward "- +\\|") |
yuuji@52 | 318 (or (eolp) |
yuuji@52 | 319 (let ((buffer (YaTeX-hierarchy-get-current-file-buffer))) |
yuuji@52 | 320 (if buffer ;if file was found |
yuuji@52 | 321 (if arg |
yuuji@52 | 322 (YaTeX-showup-buffer buffer nil) |
yuuji@52 | 323 (if (and YaTeX-emacs-19 window-system |
yuuji@52 | 324 (get-buffer-window buffer t)) |
yuuji@52 | 325 (goto-buffer-window buffer) ;select currently displaying |
yuuji@52 | 326 (YaTeX-switch-to-buffer-other-window buffer))))))) |
yuuji@52 | 327 |
yuuji@52 | 328 (defun YaTeX-hierarchy-show () |
yuuji@52 | 329 "Show current line's file in the next window." |
yuuji@52 | 330 (interactive) |
yuuji@52 | 331 (YaTeX-hierarchy-select t)) |
yuuji@52 | 332 |
yuuji@52 | 333 (defun YaTeX-hierarchy-mouse-select (event) |
yuuji@52 | 334 (interactive "e") |
yuuji@52 | 335 (mouse-set-point event) |
yuuji@52 | 336 (YaTeX-hierarchy-select nil)) |
yuuji@52 | 337 |
yuuji@52 | 338 (defun YaTeX-hierarchy-quit () |
yuuji@52 | 339 "Quit from YaTeX-hierarchy buffer and restore window configuration." |
yuuji@52 | 340 (interactive) |
yuuji@52 | 341 (if (or (not (featurep 'windows)) |
yuuji@52 | 342 (car YaTeX-hierarchy-saved-wc) |
yuuji@52 | 343 (and (= (car (cdr YaTeX-hierarchy-saved-wc)) win:current-config))) |
yuuji@52 | 344 (set-window-configuration (car YaTeX-hierarchy-saved-wc)) |
yuuji@52 | 345 (bury-buffer nil))) |
yuuji@52 | 346 |
yuuji@53 | 347 (defun YaTeX-hierarchy-scroll-up (arg &optional action) |
yuuji@53 | 348 "Scroll up file contents of YaTeX-hierarchy." |
yuuji@52 | 349 (interactive "P") |
yuuji@53 | 350 (YaTeX-hierarchy-next 0 t) |
yuuji@53 | 351 (let*((bufname (buffer-substring |
yuuji@53 | 352 (point) |
yuuji@53 | 353 (save-excursion (skip-chars-forward "^ \t") (point)))) |
yuuji@53 | 354 (buf (get-buffer bufname)) |
yuuji@53 | 355 (cw (selected-window))) |
yuuji@53 | 356 (cond |
yuuji@53 | 357 ((and buf (get-buffer-window buf)) |
yuuji@53 | 358 (select-window (get-buffer-window buf))) |
yuuji@53 | 359 ((and buf (YaTeX-showup-buffer buf nil t)) t) |
yuuji@53 | 360 (t (YaTeX-hierarchy-select nil))) |
yuuji@53 | 361 (unwind-protect |
yuuji@53 | 362 (cond |
yuuji@53 | 363 ((eq action 'down) (scroll-down arg)) |
yuuji@53 | 364 ((eq action 'top) (beginning-of-buffer)) |
yuuji@53 | 365 ((eq action 'bottom) (end-of-buffer)) |
yuuji@53 | 366 ((eq action 'last) (exchange-point-and-mark)) |
yuuji@53 | 367 (t (scroll-up arg))) |
yuuji@53 | 368 (select-window cw)))) |
yuuji@53 | 369 |
yuuji@53 | 370 (defun YaTeX-hierarchy-scroll-down (arg) |
yuuji@53 | 371 "Scroll down file contents of YaTeX-hierarchy." |
yuuji@53 | 372 (interactive "P") |
yuuji@53 | 373 (YaTeX-hierarchy-scroll-up arg 'down)) |
yuuji@53 | 374 |
yuuji@53 | 375 (defun YaTeX-hierarchy-top () |
yuuji@53 | 376 "Show the top of YaTeX-hierarchy inspection buffer's." |
yuuji@53 | 377 (interactive) |
yuuji@53 | 378 (YaTeX-hierarchy-scroll-up nil 'top) |
yuuji@53 | 379 ) |
yuuji@53 | 380 |
yuuji@53 | 381 (defun YaTeX-hierarchy-bottom () |
yuuji@53 | 382 "Show the top of YaTeX-hierarchy inspection buffer's." |
yuuji@53 | 383 (interactive) |
yuuji@53 | 384 (YaTeX-hierarchy-scroll-up nil 'bottom) |
yuuji@53 | 385 ) |
yuuji@53 | 386 |
yuuji@53 | 387 (defun YaTeX-hierarchy-lastpos () |
yuuji@53 | 388 "Go to last position in YaTeX-hierarchy buffer." |
yuuji@53 | 389 (interactive) |
yuuji@53 | 390 (YaTeX-hierarchy-scroll-up nil 'last) |
yuuji@53 | 391 ) |
yuuji@52 | 392 |
yuuji@52 | 393 ;; ----- Setting up keymap ----- |
yuuji@52 | 394 (defvar YaTeX-hierarchy-mode-map nil "Keymap used in YaTeX-hierarchy-mode.") |
yuuji@52 | 395 (if YaTeX-hierarchy-mode-map nil |
yuuji@52 | 396 (setq YaTeX-hierarchy-mode-map (make-sparse-keymap)) |
yuuji@52 | 397 (define-key YaTeX-hierarchy-mode-map "n" 'YaTeX-hierarchy-next) |
yuuji@52 | 398 (define-key YaTeX-hierarchy-mode-map "p" 'YaTeX-hierarchy-prev) |
yuuji@52 | 399 (define-key YaTeX-hierarchy-mode-map "j" 'YaTeX-hierarchy-next-line) |
yuuji@52 | 400 (define-key YaTeX-hierarchy-mode-map "k" 'YaTeX-hierarchy-prev-line) |
yuuji@52 | 401 (substitute-all-key-definition |
yuuji@52 | 402 'next-line 'YaTeX-hierarchy-next-line YaTeX-hierarchy-mode-map) |
yuuji@52 | 403 (substitute-all-key-definition |
yuuji@52 | 404 'previous-line 'YaTeX-hierarchy-prev-line YaTeX-hierarchy-mode-map) |
yuuji@52 | 405 (define-key YaTeX-hierarchy-mode-map "N" 'YaTeX-hierarchy-forward) |
yuuji@52 | 406 (define-key YaTeX-hierarchy-mode-map "P" 'YaTeX-hierarchy-backward) |
yuuji@52 | 407 (define-key YaTeX-hierarchy-mode-map "u" 'YaTeX-hierarchy-up-document) |
yuuji@52 | 408 (define-key YaTeX-hierarchy-mode-map "K" 'YaTeX-hierarchy-kill-buffer) |
yuuji@52 | 409 (define-key YaTeX-hierarchy-mode-map "1" 'delete-other-windows) |
yuuji@52 | 410 (define-key YaTeX-hierarchy-mode-map "o" 'other-window) |
yuuji@53 | 411 (define-key YaTeX-hierarchy-mode-map "-" 'shrink-window) |
yuuji@53 | 412 (define-key YaTeX-hierarchy-mode-map "+" 'enlarge-window) |
yuuji@52 | 413 (define-key YaTeX-hierarchy-mode-map "." 'YaTeX-hierarchy-show) |
yuuji@53 | 414 (define-key YaTeX-hierarchy-mode-map " " 'YaTeX-hierarchy-scroll-up) |
yuuji@53 | 415 (define-key YaTeX-hierarchy-mode-map "b" 'YaTeX-hierarchy-scroll-down) |
yuuji@53 | 416 (define-key YaTeX-hierarchy-mode-map "\C-?" 'YaTeX-hierarchy-scroll-down) |
yuuji@52 | 417 (define-key YaTeX-hierarchy-mode-map "\C-m" 'YaTeX-hierarchy-select) |
yuuji@53 | 418 (define-key YaTeX-hierarchy-mode-map "<" 'YaTeX-hierarchy-top) |
yuuji@53 | 419 (define-key YaTeX-hierarchy-mode-map ">" 'YaTeX-hierarchy-bottom) |
yuuji@53 | 420 (define-key YaTeX-hierarchy-mode-map "'" 'YaTeX-hierarchy-lastpos) |
yuuji@53 | 421 (define-key YaTeX-hierarchy-mode-map "g" 'YaTeX-hierarchy-select) |
yuuji@52 | 422 (define-key YaTeX-hierarchy-mode-map "q" 'YaTeX-hierarchy-quit) |
yuuji@52 | 423 (define-key YaTeX-hierarchy-mode-map "?" 'describe-mode) |
yuuji@52 | 424 (if (and YaTeX-emacs-19 window-system) |
yuuji@52 | 425 (define-key YaTeX-hierarchy-mode-map |
yuuji@52 | 426 [mouse-2] 'YaTeX-hierarchy-mouse-select)) |
yuuji@52 | 427 ) |
yuuji@52 | 428 |
yuuji@52 | 429 (provide 'yatexhie) |
yuuji@52 | 430 ;;end of yatexhie.el |