
(defvar mouse-set-point-command nil "\
*Command that sets point to mouse cursor position.")

(defvar smart-key-other-mode-cmd (quote hui:menu) "\
*Symbol name of command run by the Smart Key in an unspecified context.")

(defvar smart-key-meta-other-mode-cmd (quote smart-key-summarize) "\
*Symbol name of command run by the secondary Smart Key in an unspecified context.")

(defvar smart-key-value nil "\
Communicates a value between a Smart Key predicate and its actions.")

(defvar smart-key-alist (quote (((and (> (minibuffer-depth) 0) (eq (selected-window) (minibuffer-window)) (not (eq hargs:reading-p (quote hmenu)))) (exit-minibuffer) smart-completion-help) ((and (> (minibuffer-depth) 0) (setq smart-key-value (hargs:at-p))) (hargs:select-p smart-key-value) hargs:select-p smart-key-value (quote meta)) ((and (not (eobp)) (or (eolp) (and selective-display (= (following-char) 13)))) (scroll-up-eol) scroll-down-eol) ((and (fboundp (quote hbut:at-p)) (or (hbut:at-p) (hbut:label-p))) (hui:hbut-act (quote hbut:current)) hui:hbut-help (quote hbut:current)) ((eq major-mode (quote smart-menu-mode)) (smart-menu-select) smart-menu-help) ((and (= (point) (point-max)) (string-match "Help\\*$" (buffer-name))) (smart-key-help-hide) smart-key-help-hide) ((and (fboundp (quote br-in-browser)) (br-in-browser)) (smart-br-dispatch) smart-br-meta-dispatch) ((and (memq major-mode (quote (c-mode c++-c-mode))) buffer-file-name (setq smart-key-value (smart-c-at-tag-p))) (smart-c) smart-c nil (quote next-tag)) ((and (smart-lisp-mode-p) (smart-lisp-at-tag-p)) (smart-lisp) smart-lisp (quote next-tag)) ((and (eq major-mode (quote c++-mode)) buffer-file-name (setq smart-key-value (or (fboundp (quote c++-to-definition)) (smart-c++-at-tag-p)))) (if (eq smart-key-value t) (smart-c++-oobr) (smart-c++)) if (eq smart-key-value t) (smart-c++-oobr) (smart-c++ nil (quote next-tag))) ((eq major-mode (quote occur-mode)) (occur-mode-goto-occurrence) occur-mode-goto-occurrence) ((eq major-mode (quote moccur-mode)) (moccur-mode-goto-occurrence) moccur-mode-goto-occurrence) ((eq major-mode (quote calendar-mode)) (smart-calendar) smart-calendar-meta) ((eq major-mode (quote unix-apropos-mode)) (smart-apropos) smart-apropos-meta) ((and (fboundp (quote smart-menu-choose-menu)) (setq smart-key-value (and smart-key-always-display-menu (smart-menu-choose-menu))) (not (and (get-buffer-window *smart-menu-buffer*) (eq smart-key-value *smart-menu-curr*)))) (smart-menu smart-key-value) smart-menu smart-key-value) ((eq major-mode (quote outline-mode)) (smart-outline) smart-outline-meta) ((eq major-mode (quote Info-mode)) (smart-info) smart-info-meta) ((and (boundp (quote hmail:reader)) (or (eq major-mode hmail:reader) (eq major-mode hmail:lister))) (smart-hmail) smart-hmail-meta) ((eq major-mode (quote gnus-Group-mode)) (smart-gnus-Group) smart-gnus-Group-meta) ((eq major-mode (quote gnus-Subject-mode)) (smart-gnus-Subject) smart-gnus-Subject-meta) ((eq major-mode (quote gnus-Article-mode)) (smart-gnus-Article) smart-gnus-Article-meta) ((eq major-mode (quote Buffer-menu-mode)) (smart-buffer-menu) smart-buffer-menu-meta) ((eq major-mode (quote dired-mode)) (smart-dired) smart-dired-meta) ((equal mode-name "View") (View-scroll-lines-forward) View-scroll-lines-backward) ((setq smart-key-value (smart-man-entry-ref)) (smart-man-display smart-key-value) smart-man-display smart-key-value) ((and (boundp (quote rolo-display-buffer)) (equal (buffer-name) rolo-display-buffer)) (smart-wrolo) smart-wrolo-meta) (selective-display (smart-outline) smart-outline-meta))) "\
Alist of predicates and form-conses for context-sensitive smart key actions.
When the smart-key or the smart-key-meta is pressed, the first or
second form, respectively, associated with the first non-nil predicate is
evaluated.")

(require (quote hargs))

(require (quote hmouse-key))

(require (quote hmouse-drv))

(if hyperb:window-system (progn (defvar smart-key-mouse-alist smart-key-alist "Alist of predicates and form-conses for context-sensitive smart key mouse actions.
When the smart-key or the smart-key-meta is pressed, the first or
second form, respectively, associated with the first non-nil predicate is
evaluated.") (load "hui-window")))

(load "smart-local" t)

(autoload (quote smart-c-at-tag-p) "hmouse-tag" "\
Jumps to C identifier definitions.")

(autoload (quote smart-lisp-mode-p) "hmouse-tag" "\
Jumps to Lisp identifier definitions.")

(autoload (quote smart-c++) "hmouse-tag" "\
Jumps to C++ identifier definitions.")

(autoload (quote smart-c++-oobr) "hmouse-tag" "\
Jumps to C++ identifier definitions.")

(autoload (quote smart-tags-file) "hmouse-tag" "\
Determines nearest etags file.")

(defun smart-completion-help nil "\
Offer completion help for current minibuffer argument, if any." (byte-code "ÀÁÂ \"…
 Á ‡" [where-is-internal minibuffer-completion-help current-local-map] 4))

(defun smart-symlink-expand (path) "\
Returns referent for possible symbolic link, PATH." (byte-code "ÅÆ!?ƒ ‚; ÇGÈÈ	
W…! ÉÊ	#‰…8 	ËÇ!‰OPÆ!‰ˆ‚ ˆ,‡" [path start len ref part fboundp symlink-referent 0 nil string-match "/[^/]*" match-end] 9))

(defun smart-buffer-menu (&optional in-browser) "\
Uses a single key or mouse key to manipulate buffer-menu entries.

Invoked via a key press when in Buffer-menu-mode.  It assumes that its
caller has already checked that the key was pressed in an appropriate buffer
and has moved the cursor there.

Optional non-nil IN-BROWSER indicates use within the OO-Browser.

If key is pressed:
 (1) on the first column of an entry, the selected buffer is marked for
     display; 
 (2) on the second column of an entry, the selected buffer is marked to be
     saved;
 (3) anywhere else within an entry line, all saves and deletes are done, and
     selected buffers are displayed, including the one just clicked on (if
     IN-BROWSER, only the selected buffer is displayed);
 (4) on or after the last line in the buffer, all saves and deletes are done." (interactive) (byte-code "Â ƒ
 Ã ‚- nƒ Ä ‚- Š`Sbˆn)ƒ\" Å ‚- 	ƒ+ Æ ‚- Ç ‡" [t in-browser last-line-p Buffer-menu-execute Buffer-menu-mark Buffer-menu-save br-buffer-menu-select Buffer-menu-select] 7))

(defun smart-buffer-menu-meta nil "\
Uses a single meta-key or mouse meta-key to manipulate buffer-menu entries.

Invoked via a meta-key press when in Buffer-menu-mode.  It assumes that its
caller has already checked that the meta-key was pressed in an appropriate
buffer and has moved the cursor there.

If meta-key is pressed:
 (1) on the first or second column of an entry, the selected buffer is unmarked
     for display and for saving or deletion; 
 (2) anywhere else within an entry line, the selected buffer is marked for
     deletion;
 (3) on or after the last line in the buffer, all display, save, and delete
     marks on all entries are undone." (interactive) (byte-code "À ƒ Á ˆÂÃ!‚( nƒ Ä ‚( Š`Sbˆn)ƒ& Ä ‚( Å ‡" [last-line-p list-buffers forward-line 3 Buffer-menu-unmark Buffer-menu-delete] 8))

(defun smart-calendar nil "\
Uses a single key or mouse key to manipulate the scrolling calendar.

Invoked via a key press when in calendar-mode.  It assumes that its
caller has already checked that the key was pressed in an appropriate buffer
and has moved the cursor there.

If key is pressed:
 (1) at the end of the buffer, the calendar is scrolled forward 3 months;
 (2) to the left of any dates on a calendar line, the calendar is scrolled
     backward 3 months;
 (3) on a date, the diary entries for the date, if any, are displayed." (interactive) (byte-code "mƒ À ˆÁÂ!‚\" iÃWƒ À ˆÄÂ!‚\" À ˆÅÂ!‡" [calendar-cursor-to-nearest-date scroll-calendar-left-three-months 1 5 scroll-calendar-right-three-months view-diary-entries] 8))

(defun smart-calendar-meta nil "\
Uses a single meta-key or mouse meta-key to manipulate the scrolling calendar.

Invoked via a meta-key press when in calendar-mode.  It assumes that its
caller has already checked that the meta-key was pressed in an appropriate
buffer and has moved the cursor there.

If meta-key is pressed:
 (1) at the end of the buffer, the calendar is scrolled backward 3 months;
 (2) to the left of any dates on a calendar line, the calendar is scrolled
     forward 3 months;
 (3) anywhere else, all dates with marking diary entries are marked in the
     calendar window." (interactive) (byte-code "mƒ À ˆÁÂ!‚ iÃWƒ À ˆÄÂ!‚ Å ‡" [calendar-cursor-to-nearest-date scroll-calendar-right-three-months 1 5 scroll-calendar-left-three-months mark-diary-entries] 7))

(defun smart-dired nil "\
Uses a single key or mouse key to manipulate directory entries.

Invoked via a key press when in dired-mode.  It assumes that its
caller has already checked that the key was pressed in an appropriate buffer
and has moved the cursor there.

If key is pressed:
 (1) within an entry line, the selected file/directory is displayed for editing;
 (2) on or after the last line in the buffer, if any deletes are to be
     performed, they are executed after user verification, otherwise, this
     dired invocation is quit." (interactive) (byte-code "Ã ƒ: ÁŠÄbˆÅÆÁÂ#‰)ˆƒ4 ÇÈ!ƒ# È ‚1 ÇÉ!ƒ. É ‚1 ÊË!‚6 Ì )‚> ÍÎ !‡" [flagged nil t last-line-p 1 re-search-forward "^D" fboundp dired-do-deletions dired-do-flagged-delete error "(smart-dired): No Dired expunge function." dired-quit hpath:find-other-window dired-get-filename] 12))

(defun smart-dired-meta nil "\
Uses a single meta-key or mouse meta-key to manipulate directory entries.

Invoked via a meta-key press when in dired-mode.  It assumes that its
caller has already checked that the meta-key was pressed in an appropriate
buffer and has moved the cursor there.

If meta-key is pressed:
 (1) on a '~' character, all backup files in the directory are marked for
     deletion;
 (2) on a '#' character, all auto-save files in the directory are marked for
     deletion;
 (3) anywhere else within an entry line, the selected buffer is marked for
     deletion;
 (4) on or after the last line in the buffer, all delete marks on all entries
     are undone." (interactive) (byte-code "À ƒ Ádb[!ˆdb‚) ÂÃ!ƒ Ä ‚) ÂÅ!ƒ& Æ ‚) ÇÈ!‡" [last-line-p dired-unflag looking-at "~" dired-flag-backup-files "#" dired-flag-auto-save-files dired-flag-file-deleted 1] 9))

(defun smart-gnus-Group nil "\
Uses a key or mouse key to move through Gnus Newsgroup listings.
Invoked via a key press when in gnus-Group-mode.  It assumes that its caller
has already checked that the key was pressed in an appropriate buffer and has
moved the cursor to the selected buffer.

If key is pressed within:
 (1) a GNUS-GROUP line, that newsgroup is read;
 (2) to the left of any GNUS-GROUP line, on any of the whitespace, the current
     group is unsubscribed or resubscribed;
 (3) at the end of the GNUS-GROUP buffer, after all lines, checks for new
     news." (interactive) (byte-code "Á ƒ
 Â ‚ ÃÄ!ˆnƒ Å ‚ ÆÀ!‡" [nil last-line-p gnus-Group-get-new-news skip-chars-backward " U" gnus-Group-unsubscribe-current-group gnus-Group-read-group] 7))

(defun smart-gnus-Group-meta nil "\
Uses a meta-key or meta-mouse key to move through Gnus Newsgroup listings.
Invoked via a meta-key press when in gnus-Group-mode.  It assumes that its
caller has already checked that the key was pressed in an appropriate buffer
and has moved the cursor to the selected buffer.

If key is pressed within:
 (1) a GNUS-GROUP line, that newsgroup is read;
 (2) to the left of any GNUS-GROUP line, on any of the whitespace, the user is
     prompted for a group name to subscribe or unsubscribe to;
 (3) at the end of the GNUS-GROUP buffer, after all lines, quits from the
     newsreader." (interactive) (byte-code "Á ƒ
 Â ‚ ÃÄ!ˆnƒ ÅÆ!‚ ÇÀ!‡" [nil last-line-p gnus-Group-exit skip-chars-backward " U" call-interactively gnus-Group-unsubscribe-group gnus-Group-read-group] 7))

(defun smart-gnus-Subject nil "\
Uses a key or mouse key to move through Gnus News article listings.
Invoked via a key press when in gnus-Subject-mode.  It assumes that its caller
has already checked that the key was pressed in an appropriate buffer and has
moved the cursor to the selected buffer.

If key is pressed within:
 (1) a GNUS-SUBJECT line, that article is read, marked deleted, and scrolled
     forward;
 (2) at the end of the GNUS-SUBJECT buffer, the next undeleted article
     is read or the next group is entered." (interactive) (byte-code "Ä ƒ, ƒ ebˆÅÆÇ\"ÁÂ#ˆÈ‰ˆÉÈ!‚) ebˆÊ‰ˆÉÊ!‚A ËÌ!ˆnƒ: ÍÎ!‚A È‰ˆÉÈ!‡" [gnus-current-article nil t this-command last-line-p re-search-forward format "^.[ ]+%d:" gnus-Subject-next-page call-interactively gnus-Subject-first-unread-article skip-chars-backward " D" gnus-Subject-mark-as-unread-forward 1] 9))

(defun smart-gnus-Subject-meta nil "\
Uses a meta-key or meta-mouse key to move through Gnus News articles.
Invoked via a meta-key press when in gnus-Subject-mode.  It assumes that its
caller has already checked that the key was pressed in an appropriate buffer
and has moved the cursor to the selected buffer.

If key is pressed within:
 (1) a GNUS-SUBJECT line, that article is read and scrolled backward;
 (2) at the end of the GNUS-SUBJECT buffer, the subject is exited, the user
     is returned to group mode." (interactive) (byte-code "Â ƒ Ã‰ˆÄÅ!‚$ ÆÇ!ˆnƒ ÈÉ!‚$ Ã‰ˆÄÃ!‡" [this-command t last-line-p gnus-Subject-prev-page call-interactively gnus-Subject-exit skip-chars-backward " D" gnus-Subject-mark-as-unread-backward 1] 6))

(defun smart-gnus-Article nil "\
Uses a key or mouse key to move through Gnus netnews articles.

Invoked via a key press when in gnus-Article-mode.
It assumes that its caller has already checked that the key was pressed in an
appropriate buffer and has moved the cursor to the selected buffer.

If key is pressed within:
 (1) the first line or end of an article, the next unread message is displayed;
 (2) the first line of an Info cross reference, the reference is followed;
 (3) anywhere else, the window is scrolled up one screen." (interactive) (byte-code "Ã † l?… Ä ƒ\" ÅŽqˆÆ‰ˆÆ ˆÇ
!)‚. l?…) È †. É ‡" [gnus-Subject-buffer this-command gnus-current-article last-line-p first-line-p ((byte-code "Â	!… Ã!)‡" [artic gnus-Article-buffer get-buffer-window select-window] 3)) gnus-Subject-next-unread-article gnus-Subject-goto-subject Info-handle-in-note scroll-up-eol] 8))

(defun smart-gnus-Article-meta nil "\
Uses a meta-key or mouse meta-key to move through Gnus netnews articles.

Invoked via a meta-key press when in gnus-Article-mode.
It assumes that its caller has already checked that the meta-key was pressed in
an appropriate buffer and has moved the cursor to the selected buffer.

If meta-key is pressed within:
 (1) the first line or end of an article, the previous message is displayed;
 (2) the first line of an Info cross reference, the reference is followed;
 (3) anywhere else, the window is scrolled down one screen." (interactive) (byte-code "Ä † l?… Å ƒ# ÆŽqˆÇ‰ˆÇÂ!ˆÈ!)‚/ l?…* É †/ Ê ‡" [gnus-Subject-buffer this-command nil gnus-current-article last-line-p first-line-p ((byte-code "Â	!… Ã!)‡" [artic gnus-Article-buffer get-buffer-window select-window] 3)) gnus-Subject-prev-article gnus-Subject-goto-subject Info-handle-in-note scroll-down-eol] 8))

(defun smart-hmail nil "\
Uses a key or mouse key to move through e-mail messages and summaries.

Invoked via a key press when in hmail:reader or hmail:lister mode.
It assumes that its caller has already checked that the key was pressed in an
appropriate buffer and has moved the cursor to the selected buffer.

If key is pressed within:
 (1) a msg buffer, within the first line or at the end of a message,
     the next undeleted message is displayed;
 (2) a msg buffer within the first line of an Info cross reference, the
     reference is followed;
 (3) anywhere else in a msg buffer, the window is scrolled up one screen; 
 (4) a msg summary buffer on a header entry, the message corresponding to
     the header is displayed in the msg window;
 (5) a msg summary buffer, on or after the last line, the messages marked
     for deletion are expunged." (interactive) (byte-code "	=ƒ) Â † l?… Ã ƒ Ä ‚& l?…! Å †& Æ ‚5 Â ƒ3 Ç ‚5 È ‡" [major-mode hmail:reader last-line-p first-line-p rmail:msg-next Info-handle-in-note scroll-up-eol lmail:expunge lmail:goto] 11))

(defun smart-hmail-meta nil "\
Uses a meta key or mouse key to move through e-mail messages and summaries.

Invoked via a meta key press when in hmail:reader or hmail:lister mode.
It assumes that its caller has already checked that the meta-key was pressed in
an appropriate buffer and has moved the cursor to the selected buffer.

If meta-key is pressed within:
 (1) a msg buffer, within the first line or at the end of a message,
     the previous undeleted message is displayed;
 (2) a msg buffer within the first line of an Info cross reference, the
     reference is followed;
 (3) anywhere else in a msg buffer, the window is scrolled down one screen; 
 (4) a msg summary buffer on a header entry, the message corresponding to
     the header is marked as deleted;
 (5) a msg summary buffer, on or after the last line, all messages are
     marked undeleted." (interactive) (byte-code "	=ƒ) Â † l?… Ã ƒ Ä ‚& l?…! Å †& Æ ‚5 Â ƒ3 Ç ‚5 È ‡" [major-mode hmail:reader last-line-p first-line-p rmail:msg-prev Info-handle-in-note scroll-down-eol lmail:undelete-all lmail:delete] 11))

(autoload (quote Info-handle-in-note) "hmous-info" "\
Follows Info documentation references.")

(autoload (quote smart-info) "hmous-info" "\
Follows Info documentation references.")

(autoload (quote smart-info-meta) "hmous-info" "\
Follows Info documentation references.")

(defun smart-apropos nil "\
Moves through UNIX man apropos listings by using one key or mouse key.

Invoked via a key press when in unix-apropos-mode.  It assumes that
its caller has already checked that the key was pressed in an appropriate
buffer and has moved the cursor to the selected buffer.

If key is pressed:
 (1) on a UNIX man apropos entry, the man page for that entry is displayed in
     another window;
 (2) on or after the last line, the buffer in the other window is scrolled up
     one screen." (interactive) (cond ((last-line-p) (scroll-other-window)) ((unix-apropos-get-man))))

(defun smart-apropos-meta nil "\
Moves through UNIX man apropos listings by using one meta-key or mouse meta-key.

Invoked via a meta-key press when in unix-apropos-mode.  It assumes that
its caller has already checked that the meta-key was pressed in an appropriate
buffer and has moved the cursor to the selected buffer.

If meta-key is pressed:
 (1) on a UNIX man apropos entry, the man page for that entry is displayed in
     another window;
 (2) on or after the last line, the buffer in the other window is scrolled down
     one screen." (interactive) (byte-code "À ƒ ÁÂÃ Z!‚ Ä ‡" [last-line-p scroll-other-window 3 window-height unix-apropos-get-man] 6))

(defun smart-man-display (lisp-form) "\
Evaluates LISP-FORM returned from 'smart-man-entry-ref' to display a man page." (eval lisp-form))

(defun smart-man-entry-ref nil "\
Returns form which displays referenced manual entry that point is on or nil.
Handles references in sections: NAME, SEE ALSO, or PACKAGES USED.  Also can
display C routine definitions selected in a man page, see
'smart-man-c-routine-ref'.

Man page buffer must either have an attached file or else a `man-path'
local variable containing its pathname." (interactive) (byte-code "ÉÊËÌp!\"… ÍÁ!… 	… Î	!‰ˆÂ†+ …+ ÊÏÎ!‰\"?ƒ5 Ä‰‚À Ð †` ÊÑÒ!\"…[ ÍÅ!…[ …[ ÓÔÕ#@‰…[ ÖD†` × ‰†À Š`ÄØÙÄÂ#…¾ ÚÛ!…¾ bˆÜÝ!ˆ`Þß!ˆà`\"‰ˆ…½ Êá\"…½ âãäå!æå!O\"ƒ³ çäç!O‚» çæè!OéP‰)*)ˆêÉ\"ƒÌ Ä‚Ø ;ƒ× ëD‚Ø )‡" [ref man-path t buffer-file-name nil br-env-dir opoint case-fold-search start "" string-match "Manual Entry\\|\\*man " buffer-name boundp smart-symlink-expand "/man/" smart-man-file-ref "/interviews\\|/iv" downcase directory-files full "interviews\\|iv" c++-man-ftr-to-def smart-man-c-routine-ref re-search-backward "^[.A-Z]" looking-at "\\(\\.SH[ 	]+\\)?\\(SEE ALSO\\|NAME\\|PACKAGES USED\\)" skip-chars-backward "-_a-zA-Z0-9?.(" skip-chars-forward "-_a-zA-Z0-9?.()" buffer-substring "(\\(.\\)\\(.+\\))" string= "I" match-beginning 2 match-end 0 1 ")" equal manual-entry] 26))

(defun smart-man-c-routine-ref nil "\
Returns form to jump to def of C function whose name is at point, if any.
Valid sections within the man page are: ROUTINES, MACROS or FUNCTIONS.
Uses (smart-tags-file) function to determine etags file from which to
locate the definition.

Returns etags file name if point is on an identifier in the appropriate
section and the jump is done, otherwise, returns nil." (byte-code "ÆÈÉÂ!…	 
ƒ 
‚ !`ÆŠÊËÆÇ#…D ÌÍ!…D bˆÎÏ!ˆÌÐ!†7 ÌÑ!…D ÒÓÔ!ÕÔ!\"‰)ˆ…n Ö	!…n ×	!…n ØÁ	DCÙÚ!…c Ú ƒj Û‚k ÜDE,‡" [ref tags-file-name man-path default-directory opoint case-fold-search nil t smart-tags-file boundp re-search-backward "^[.A-Z]" looking-at "^\\(FUNCTIONS\\|ROUTINES\\|MACROS\\)[ 	
]" skip-chars-backward "_~<>:a-zA-Z0-9(" "\\([_~<>:a-zA-Z0-9]+\\)[ 	
]*(" "\\([_~<:A-Z][_<>:A-Z0-9]+\\)" buffer-substring match-beginning 1 match-end file-exists-p file-readable-p let fboundp br-in-browser find-tag find-tag-other-window] 18))

(defun smart-man-file-ref nil "\
Returns form to eval to display file whose name point is on, within a FILES man page section.
If not on a file name, returns nil." (byte-code "Ã`ÃŠÅÆÃÄ#…, ÇÈ!…, 	bˆÉÊ!ˆÇË!…, ÌÍÎ!ÏÎ!\"‰)ˆ…D ÐÑ!…: Ñ ƒA Ò‚B ÓD+‡" [ref opoint case-fold-search nil t re-search-backward "^[.A-Z]" looking-at "^FILES[ 	
]" skip-chars-backward "^ 	" "/[^ 	
]+" buffer-substring match-beginning 0 match-end fboundp br-in-browser find-file find-file-other-window] 11))

(defvar smart-outline-cut nil "\
Non-nil means outline region was cut and is ready to be pasted at point.")

(byte-code "ÁÂÃ!ƒ Ä!‚ ÅÆ\")‡" [proc ((lambda nil (make-local-variable (quote smart-outline-cut)) (setq smart-outline-cut nil))) boundp outline-mode-map eval var:append outline-mode-hook] 5)

(defun smart-outline nil "\
Collapses, expands, and moves outline entries.
Invoked via a key press when in outline-mode.  It assumes that
its caller has already checked that the key was pressed in an appropriate
buffer and has moved the cursor to the selected buffer.

If key is pressed:
 (1) after an outline heading has been cut via the smart-key, then paste the
     cut heading at point;
 (2) at the end of buffer, show all buffer text 
 (3) at the beginning of a heading line, cut the headings subtree from the
     buffer;
 (4) on a header line but not at the beginning or end, if headings subtree is
     hidden then show it, otherwise hide it;
 (5) anywhere else, scroll up one screen." (interactive) (byte-code "ƒ Á‰ˆÄ ‚] mƒ Å ‚] n… Æ
!ƒ: Ã‰ˆÇ`È †6 É
ÁÃ#ˆÊÃË \"\"‚] l?…I ÌŠÍ ˆË )Î\"ƒ[ Ï ƒV Ð ‚X Ñ ‚] Ò ‡" [smart-outline-cut nil outline-regexp t yank show-all looking-at kill-region outline-get-next-sibling re-search-forward smart-outline-to-entry-end outline-level /= beginning-of-line 0 smart-outline-subtree-hidden-p show-subtree hide-subtree scroll-up-eol] 17))

(defun smart-outline-meta nil "\
Collapses, expands, and moves outline entries.
Invoked via a meta-key press when in outline-mode.  It assumes that
its caller has already checked that the meta-key was pressed in an appropriate
buffer and has moved the cursor to the selected buffer.

If meta-key is pressed:
 (1) after an outline heading has been cut via the smart-key, allow multiple
     pastes throughout the buffer (last paste should be done with smart key,
     not meta smart key);
 (2) at the end of buffer, hide all bodies in buffer;
 (3) at the beginning of a heading line, cut the current heading (sans
     subtree) from the buffer;
 (4) on a header line but not at the beginning or end, if heading body is
     hidden then show it, otherwise hide it;
 (5) anywhere else, scroll down one screen." (interactive) (byte-code "ƒ	 Ä ‚T mƒ Å ‚T n… Æ	!ƒ1 Â‰ˆÇ`È	ÃÂ#ˆÉÃÊ \"\"‚T l?…@ ËŠÌ ˆÊ )Í\"ƒR Î ƒM Ï ‚O Ð ‚T Ñ ‡" [smart-outline-cut outline-regexp t nil yank hide-body looking-at kill-region re-search-forward smart-outline-to-entry-end outline-level /= beginning-of-line 0 smart-outline-subtree-hidden-p show-entry hide-entry scroll-down-eol] 16))

(defun smart-outline-to-entry-end (&optional include-sub-entries curr-entry-level) "\
Goes to end of whole entry if optional INCLUDE-SUB-ENTRIES is non-nil.
CURR-ENTRY-LEVEL is an integer representing the length of the current level
string which matched to 'outline-regexp'.  If INCLUDE-SUB-ENTRIES is nil,
CURR-ENTRY-LEVEL is not needed." (byte-code "Æ	ÂÃ#‰… … ŠÇ ˆÈ V)… Âˆ‚  ˆƒ+ Ç ˆ`‚- db‡" [next-entry-exists outline-regexp nil t include-sub-entries curr-entry-level re-search-forward beginning-of-line outline-level] 5))

(defun smart-outline-subtree-hidden-p nil "\
Returns t if at least initial subtree of heading is hidden, else nil." (byte-code "ŠÂÃÀÁ#… hÄU)‡" [nil t re-search-forward "[
]" 13] 4))

(defun smart-wrolo nil "\
In wrolo match buffer, either narrows to selected entry or expands to all.
Uses one key or mouse key.

Invoked via a key press when in the 'rolo-display-buffer'.  It assumes that
its caller has already checked that the key was pressed in an appropriate
buffer and has moved the cursor to the selected buffer.

If key is pressed:
 (1) At the start of a rolodex match entry, the entry is edited in the
     other window;
 (2) anywhere else within an entry line, toggles between displaying only
     the selected rolodex item and displaying all matches." (interactive) (byte-code "ÁÂ ‰ƒ ÃÄ \"‚ Å )‡" [name nil rolo-name-at rolo-edit hbut:key-src rolo-toggle-narrow-to-entry] 6))

(byte-code "ÀÁMˆÂÃ!‡" [smart-wrolo-meta smart-wrolo provide hui-mouse] 2)
