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