;ELC   
;;; Compiled
;;; in Emacs version 30.2
;;; with all optimizations.


#@50 Face used to highlight warnings in the tutorial.
(require 'help-mode)
(custom-declare-face 'tutorial-warning-face '((t :inherit font-lock-warning-face)) '(#$ . 83) :group 'help)#@38 Point before display of key changes.
(defvar tutorial--point-before-chkeys 0 (#$ . 266))#@37 Point after display of key changes.
(make-variable-buffer-local 'tutorial--point-before-chkeys)
(defvar tutorial--point-after-chkeys 0 (#$ . 360))#@20 Tutorial language.
(make-variable-buffer-local 'tutorial--point-after-chkeys)
(defvar tutorial--lang nil (#$ . 512))#@31 The selected tutorial buffer.
(make-variable-buffer-local 'tutorial--lang)
(defvar tutorial--buffer nil (#$ . 634))#@946 Give more information about a changed key binding.
This is used in `help-with-tutorial'.  The information includes
the key sequence that no longer has a default binding, the
default binding and the current binding.  It also tells in what
keymap the new binding has been done and how to access the
function in the default binding from the keyboard.

For `cua-mode' key bindings that try to combine CUA key bindings
with default Emacs bindings information about this is shown.

VALUE should have either of these formats:

  (cua-mode)
  (current-binding KEY-FUN DEF-FUN KEY WHERE)

Where
  KEY         is a key sequence whose standard binding has been changed
  KEY-FUN     is the actual binding for KEY
  DEF-FUN     is the standard binding of KEY
  WHERE       is a text describing the key sequences to which DEF-FUN is
              bound now (or, if it is remapped, a key sequence
              for the function it is remapped to)

(fn VALUE)#@10 

(fn S)
(defalias 'tutorial--describe-nonstandard-key #[257 "r\306\307 !q\210p\310 \210\311\211\312\211\312\313 \210\314\315!+\210\2117\316\317D\320\321!\"\210r\307 q\210\322\323\261\210\312@\324=\203E \325c\210\202 @\326=\203 A@\3278\3308\3318\311C\332 \311C\203\202 @\333\312#A\262\211	=\203} \240\210\311\262\266\202_ \242\203\220 \334\335\336#!\210\337\340\341!#c\210\342\203\251 \337\343	\"\202\252 \344\261\210\345c\210\211\242\203\276 \346\337\347\242\"\261\210\350\230\203\331 \351!\204\371 \352\353\354\"\355\261\266\202\373 \356\357\360\311\361\312$\266\203\203\356 \350\202\357 \362\337\363\"\261\210\266\364e`\"\210)\365 )\366!)\210\207" [default-directory buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only get-buffer-create help-buffer kill-all-local-variables nil t erase-buffer run-hooks temp-buffer-setup-hook help-setup-xref tutorial--describe-nonstandard-key called-interactively-p interactive "Your Emacs customizations override the default binding for this key:" "\n\n" cua-mode "CUA mode is enabled.\n\nWhen CUA mode is enabled, you can use C-z, C-x, C-c, and C-v to\nundo, cut, copy, and paste in addition to the normal Emacs\nbindings.  The C-x and C-c keys only do cut and copy when the\nregion is active, so in most cases, they do not conflict with the\nnormal function of these prefix keys.\n\nIf you really need to perform a command which starts with one of\nthe prefix keys even when the region is active, you have three\noptions:\n- press the prefix key twice very quickly (within 0.2 seconds),\n- press the prefix key and the following key within 0.2 seconds, or\n- use the SHIFT key with the prefix key, i.e. C-S-x or C-S-c." current-binding 2 3 4 current-active-maps lookup-key mapatoms make-closure #[257 "\300\242?\205% \302!\205% \303J!\205% \211\304=?\205% \301\242J=\205% \300\240\207" [V0 V1 boundp keymapp map] 3 (#$ . 1706)] format-message "The default Emacs binding for the key %s is the command `%s'.  " key-description "However, your customizations have " "rebound it to the command `%s'" "unbound it" "." "  (For the more advanced user:" " This binding is in the keymap `%s'.)" "" keymapp "\n\nYou can use M-x " format "%s" " RET instead." "\n\nWith your current key bindings" " you can use " "^the .*menus?$" string-match "the key" " to get the function `%s'." fill-region help-print-return-message internal-temp-output-buffer-show standard-output] 21 (#$ . 756)])#@236 Sort predicate for use with `tutorial--default-keys'.
This is a predicate function to `sort'.

The sorting is for presentation purpose only and is done on the
key sequence.

LEFT and RIGHT are the elements to compare.

(fn LEFT RIGHT)
(defalias 'tutorial--sort-keys #[514 "\300A@\301\"\300A@\301\"\203. \211\203. <\203. \211<\203. @@\232\203. A\262A\202\f @@\203I \211\203I <\203I \211<\203I \302\"\207\303!\203Y \303!\203Y V\207\303!\203a \304\207\303!\203i \301\2079\205z \2119\205z \305!\305!\231\207" [append nil tutorial--sort-keys wholenump t symbol-name] 9 (#$ . 4239)])#@58 Default Emacs key bindings that the tutorial depends on.
(defconst tutorial--default-keys (byte-code "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367B\2577\370\371\"\207" [(ESC-prefix [27]) (Control-X-prefix [24]) (mode-specific-command-prefix [3]) (save-buffers-kill-terminal [24 3]) (scroll-up-command [22]) (scroll-down-command [134217846]) (recenter-top-bottom [12]) (forward-char [6]) (backward-char [2]) (forward-word [134217830]) (backward-word [134217826]) (next-line [14]) (previous-line [16]) (move-beginning-of-line [1]) (move-end-of-line [5]) (backward-sentence [134217825]) (forward-sentence [134217829]) (newline "") (beginning-of-buffer [134217788]) (end-of-buffer [134217790]) (universal-argument [21]) (keyboard-quit [7]) (downcase-region [24 12]) (delete-other-windows [24 49]) (delete-backward-char "") (delete-char [4]) (backward-kill-word [134217855]) (kill-word [134217828]) (kill-line [11]) (kill-sentence [134217835]) (set-mark-command [0]) (set-mark-command [67108896]) (kill-region [23]) (yank [25]) (yank-pop [134217849]) (undo [24 117]) (find-file [24 6]) (save-buffer [24 19]) (list-buffers [24 2]) (switch-to-buffer [24 98]) (save-some-buffers [24 115]) (execute-extended-command [134217848]) (describe-mode [8 109]) (set-fill-column [24 102]) (fill-paragraph [134217841]) (isearch-forward [19]) (isearch-backward [18]) (split-window-below [24 50]) (scroll-other-window [134217750]) (other-window [24 111]) (find-file-other-window [24 52 6]) (keyboard-escape-quit [27 27 27]) (describe-key-briefly [8 99]) (describe-key [8 107]) suspend-frame ([26]) sort tutorial--sort-keys] 56) (#$ . 4845))#@53 Give detailed help about changed keys.

(fn BUTTON)#@15 

(fn BUTTON)#@10 

(fn B)
(defalias 'tutorial--detailed-help #[257 "r\306\307 !q\210p\310 \210\311\211\312\211\312\313 \210\314\315!+\210\2117\316\317D\320\321!\"\210r\307 q\210\322\323\"\322\324\"rq\210\212eb\210\3258!*\211\203\332 \326c\210\327\330\331\332\333$c\210\211\211\203\331 \211@\211A@@\3348\3358\3368\337!r\nq\210\340!)=\204\323 \230\203\216 \341\342G\343\344%\210\345\346\261\210\347j\210\350\351	\352\353\354\312&\210\355j\210<\203\256 \356\262\327\357\360\230\203\276 \327\361\"\202\277 \"c\210\350@\352\362\351A\354\312&\210\363c\210\266A\202V \210\364c\210\365 )\266\203\366!)\210\207" [default-directory buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only get-buffer-create help-buffer kill-all-local-variables nil t erase-buffer run-hooks temp-buffer-setup-hook help-setup-xref tutorial--detailed-help called-interactively-p interactive button-get tutorial-buffer explain-key-desc tutorial--find-changed-keys "The following key bindings used in the tutorial have been changed\nfrom the Emacs default:\n\n" format "   %-14s %-27s %-16s\n" "Standard Key" "Command" "In Your Emacs" 2 3 4 key-description key-binding put-text-property 0 face tutorial-warning-face "   " " " 18 insert-button value action #[257 "\300\301\302\"!\207" [describe-function button-get value] 5 (#$ . 6710) nil] follow-link 45 "list" " %-16s " "" "M-x %s" #[257 "\300\301\"\302!\207" [button-get value tutorial--describe-nonstandard-key] 4 (#$ . 6729) nil] "\n" "\nIt is OK to change key bindings, but changed bindings do not\ncorrespond to what the tutorial says.\n\n" help-print-return-message internal-temp-output-buffer-show standard-output tutorial--default-keys] 24 (#$ . 6653)])#@1086 Find the key bindings used in the tutorial that have changed.
Return a list with elements of the form

  (KEY DEF-FUN DEF-FUN-TXT WHERE REMARK QUIET)

where

  KEY         is a key sequence whose standard binding has been changed
  DEF-FUN     is the standard binding of KEY
  DEF-FUN-TXT is a short descriptive text for DEF-FUN
  WHERE       is a text describing the key sequences to which DEF-FUN is
              bound now (or, if it is remapped, a key sequence
              for the function it is remapped to)
  REMARK      is a list with info about rebinding. It has either of
              these formats:

                (TEXT cua-mode)
                (TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)

              Here TEXT is a link text to show to the user.  The
              rest of the list is used to show information when
              the user clicks the link.

              KEY-FUN is the actual binding for KEY.
  QUIET       is t if this changed keybinding should be handled quietly.
              This is used by `tutorial--display-changes'.

(fn DEFAULT-KEYS)
(defalias 'tutorial--find-changed-keys #[257 "\304\211\305\306\307\"r\211q\210\310\311\"\216\312 \210\211\203\221\211@\211A@@\313\314\"\315!\316!\2032 \317\"\2025 \320!\321\206; !\304\203\211 \210\211@\322!\262G\323V\203\214 \324\323O\325\230\203\214 \326!\203\203 \211\327\234\211\262\203\203 \330\317\331\"\"A@\211\262\203\203 \211;\203\203 \332\333\"\202\204 \334\262\202\214 \335\262\304\262=\203\233 \266\202\215\203\255 \315!=\203\255 \266\202\215	\203\323 \336\232\203\276 \337=\204\313 \340\232\203\323 \341=\203\323 \342\301D\262\202z	\203\343=\203\352 \344\232\203\352 \345\211\262\204\346=\203\375 \347\232\203\375 \350\211\262\204\351=\203\352\232\203\353\211\262\203\354\301D\262\355\262\202z\356\357!\203J\356\302!\203J\n\360=\203J\361=\2039\362=\204E\363=\203J\364=\203J\266\202\215\203m\365\232\203[\366=\204h\367\232\203m\370=\203m\266\202\215\371\372\n\257\262\304\257\fB\262\f\266A\202 *\266\207" [global-map cua-mode viper-current-state normal-erase-is-backspace nil generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] fundamental-mode format "%s" command-remapping keymapp lookup-key key-binding where-is-internal key-description 10 0 "<menu-bar>" vectorp 1 assoc [menu-bar] format-message "the `%s' menu" "the menus" "" [22] cua-paste [26] undo "cua-mode, more info" ESC-prefix (keymap (118 . cua-repeat-replace-region)) "\"ESC prefix\"" mode-specific-command-prefix (keymap (timeout . copy-region-as-kill)) "\"C-c prefix\"" Control-X-prefix (keymap (timeout . kill-region)) "\"C-x prefix\"" "cua-mode replacement" "Same key" boundp viper-mode-string vi-state isearch-forward viper-isearch-forward isearch-backward viper-isearch-backward [C-delete] kill-word [C-backspace] backward-kill-word "more info" current-binding] 19 (#$ . 8490)])#@12 

(fn KEY)
(defalias 'tutorial--key-description #[257 "\300!\211\301\230\203 \302\207\211\303\230\203 \304\207\211\305\230\203 \306\207\207" [key-description "ESC" "<ESC>" "RET" "<Return>" "DEL" "<Delback>"] 4 (#$ . 11519)])#@207 Display changes to some default key bindings.
If some of the default key bindings that the tutorial depends on
have been changed then display the changes in the tutorial buffer
with some explanatory links.#@11 

(fn CK)#@12 

(fn KDF)
(defalias 'tutorial--display-changes #[0 "\305!\306\307\"\310`\310\311\312\313\314#\315Q\316\317!\203 \320\321!\210\204' \316\317!\203W \322\n\323\"\322\n\324\"\203U \211\203U b\210\325\261\210\326\327p\330\331\332\333\334\335&	\210\336c\210\337`\340#\210\266eb\210\341d\333#\205\342\343\344!\"\262\203Z \345\344\224\346\"\204Z @A\211A@\3478\310\211\211\350\230\204\351\230\203\226 \352\353\"\262\354 \322\n\355\"\262\322\n\356\"\262\205\264 \205\264 \352#\262\337\344\224\344\225\357#\210\211\203\3608\203\326 \361\344\224\344\225\362$\266\202Z \212\360\233\333\240\210\310y\210\345`\346\"\363=\203\360 \310y\210\202\341 `\262	\364\325\261\210\326\327p\330\331\365\332\333\334\335&\210\366c\210\337	`\367#)\210\266\202Z )\207" [tutorial--default-keys case-fold-search tutorial--lang tutorial--point-before-chkeys tutorial--point-after-chkeys tutorial--find-changed-keys mapcar #[257 "\300@!B\207" [tutorial--key-description] 3 (#$ . 11965)] nil "\\(?:[[:space:]]\\|[[:punct:]]\\)\\(" mapconcat #[257 "\300\301A@!!\207" [regexp-quote tutorial--key-description] 4 (#$ . 11980)] "\\|" "\\)[[:punct:][:space:]]" boundp viper-mode-string require cus-edit get-lang-string tut-chgdhead tut-chgdhead2 " [" insert-button tutorial-buffer action tutorial--detailed-help follow-link t face link "]\n\n" add-text-properties (tutorial-remark remark face tutorial-warning-face read-only t) re-search-forward assoc match-string 1 get-text-property tutorial-remark 3 "Same key" "" format "M-x %s" point-marker tut-chgdkey tut-chgdkey2 (face tutorial-warning-face tutorial-remark key-sequence) 5 put-text-property help-echo remark "** " explain-key-desc "] **\n" (tutorial-remark remark rear-nonsticky t face tutorial-warning-face read-only t)] 24 (#$ . 11754)])#@41 Directory to which tutorials are saved.
(defalias 'tutorial--saved-dir #[0 "\300\301!\207" [locate-user-emacs-file "tutorial/"] 2 (#$ . 13801)])#@39 File name in which to save tutorials.
(defalias 'tutorial--saved-file #[0 "\301!\211\203 \211\302\230\203 \303P\262\304\305 \"\207" [tutorial--lang file-name-extension "" ".tut" expand-file-name tutorial--saved-dir] 5 (#$ . 13951)])#@64 Remove the remark lines that was added to the tutorial buffer.
(defalias 'tutorial--remove-remarks #[0 "\212eb\210\300\211\211\301`\302\"\203 `\211\262\202 \303`\302\"\211\262\205B \303\302\"\262\301\302\"\262\2042 d\262b\210\211\304=\204 |\210\202 )\207" [nil get-text-property tutorial-remark next-single-property-change key-sequence] 6 (#$ . 14196)])#@62 Query the user about saving the tutorial when killing Emacs.
(put 'tutorial--starting-point 'permanent-local t)
(defalias 'tutorial--save-on-kill #[0 "\302!\203# rq\210`	U\204\" \303\304!\203 \305\306 !\210\202\" \307\310!\210)\311\207" [tutorial--buffer tutorial--starting-point buffer-live-p y-or-n-p "Save your position in the tutorial? " tutorial--save-tutorial-to tutorial--saved-file message "Tutorial position not saved" t] 2 (#$ . 14570)])#@214 Save the tutorial buffer.
This saves the part of the tutorial before and after the area
showing changed keys.  It also saves the point position and the
position where the display of changed bindings was inserted.
(defalias 'tutorial--save-tutorial #[0 "\3001 \301\302!\203 \303\304 !\202 \305\306!0\207\305\307\310!\"\207" [(error) y-or-n-p "Save your position in the tutorial? " tutorial--save-tutorial-to tutorial--saved-file message "Tutorial position not saved" "Error saving tutorial state: %s" error-message-string] 5 (#$ . 15027)])#@110 Save the tutorial buffer to SAVED-FILE.
See `tutorial--save-tutorial' for more information.

(fn SAVED-FILE)
(defalias 'tutorial--save-tutorial-to #[257 "\304 \204 `\305V\205\237 \306 \307\310!\204- \3111! \312\307\"0\210\202- \313\262\314\315\316!#\266\310!\203\231 \317U\203= `\202K `W\203H `[\202K `Z`\307\313\320 \210eb\210\321!\322\321\323!!\322\261\210\3241r \325\307\211#0\210\202 \313\262\314\326\316!#\266\3271\206 \330 0\210\211b\210\203\224 \331\332!\202\227 \331\333!*\207\331\334\"\266\202\207" [tutorial--point-after-chkeys inhibit-read-only buffer-undo-list tutorial--point-before-chkeys buffer-modified-p 1 tutorial--saved-dir nil file-directory-p (error) make-directory t warn "Could not create directory %s: %s" error-message-string 0 tutorial--remove-remarks number-to-string "\n" marker-position (error) write-region "Could not save tutorial to %s: %s" (error) undo-only message "Could not save tutorial state." "Saved tutorial state." "Can't save tutorial: %s is not a directory"] 11 (#$ . 15576)])#@735 Select the Emacs learn-by-doing tutorial.
If there is a tutorial version written in the language
of the selected language environment, that version is used.
If there's no tutorial in that language, `TUTORIAL' is selected.
With ARG, you are asked to choose which language.
If DONT-ASK-FOR-REVERT is non-nil the buffer is reverted without
any question when restarting the tutorial.

If any of the standard Emacs key bindings that are used in the
tutorial have been changed then an explanatory note about this is
shown in the beginning of the tutorial buffer.

When the tutorial buffer is killed the content and the point
position in the buffer is saved so that the tutorial may be
resumed later.

(fn &optional ARG DONT-ASK-FOR-REVERT)
(defalias 'help-with-tutorial #[512 "\306\307!\203\" \310\311!\203 \312\313!\203 \314\315!\210\311\316!\207\314\317!\207\314\320!\207\203F \321\322!\211\323\324\325#M\210\323\326\"\216\327\330\"\210\331\332\333\334#)\262\202R \335\332\"\203Q \202R \334\335\332\"\336!\211\205a \337\340\"\205i \341!?\342\343e\203\200 \344\345\346\337\340\"!!!\210\202\210 \203\210 \347!\210\350 \210\203\237 \204\237 ?\205\235 \312\351!?\262?\205V\347\352!!\210p\204\266 \353\354!\210\355\356 !\262\340\357 )\210\314\360!\210\361\316!\210\342\327\362\363\342\340$\210\327\364\365\"\210\203\343 \342\262\203\354 \312\366!\262\203.\367\356 !\210\370\342\211@AB\371 +\210eb\210\372\373\374 \375 \"!\262\342y\210\372\373\374 \375 \"!C\342y\210e`|\210Cb\210\376 C\202K\367\377D\"!\210\370\342\211@AB\371 +\210\342y\210\376 C\201G  \210\204]\314\315!\210\361\316!\210\203~\211\316W\203l\211[\202o\211	\\\211\343W\203w\210\343\211b\266\202Cdb\210\201H \201I \342\340#\203\221`d|\210eb\210\201J \201K !\210\201L  \210\212\343y\210\201M \201N \340\")\262\203\276`\343y\210`|\210\202\363\201N \201O !\203\323\201P \201Q !\210\202\363\201N \201R !\210\201P \201S !\210\201J \201T !\210\201P \201U !\210\201L  \210\201V  \201W e`\"Z\201X Z\211\201Y W\203&`\342\210`|\210\211\316V\203?\201Z !\266\202@\201Z \201[ \245!\210\343y\210\201Z \211\201[ \245Z!\210\210eb\210\201\\ \201E !\210`E\342F\201] \342!\207" [current-language-environment tutorial--point-after-chkeys tutorial--buffer tutorial--lang inhibit-read-only buffer-auto-save-file-name boundp viper-current-state fboundp viper-tutorial y-or-n-p "You can not run the Emacs tutorial directly because you have enabled Viper.\nThere is however a Viper tutorial you can run instead.\nRun the Viper tutorial? " message "" 0 "Tutorial aborted by user" "You can not run the Emacs tutorial directly because you have enabled Viper." make-symbol "minibuffer-setup" make-closure #[0 "\302\303\300\"\210\301 \207" [V0 V1 remove-hook minibuffer-setup-hook] 3] minibuffer-completion-help #[0 "\301\302\300\"\207" [V0 remove-hook minibuffer-setup-hook] 3] add-hook minibuffer-setup-hook read-language-name tutorial "Language: " "English" get-language-info get-buffer get-buffer-window t buffer-modified-p nil 1 raise-frame window-frame select-window switch-to-buffer delete-other-windows "You have changed the Tutorial buffer.  Revert it? " get-buffer-create error "Variable lang is nil" file-exists-p tutorial--saved-file erase-buffer "Preparing tutorial ..." sit-for kill-buffer-hook tutorial--save-tutorial kill-emacs-query-functions tutorial--save-on-kill "Resume your last saved tutorial? " insert-file-contents :safe hack-local-variables string-to-number buffer-substring-no-properties line-beginning-position line-end-position point-marker expand-file-name enable-dir-local-variables enable-local-eval enable-local-variables tutorial--point-before-chkeys tutorial-directory tutorial--starting-point buffer-undo-list tutorial--display-changes search-backward ";;; arch-tag: " search-forward "\n<<" beginning-of-line "\\[" looking-at "<<Blank lines inserted.*>>" replace-match "[Middle of page left blank for didactic purposes.   Text continues below]" "<<" "[" ">>" "]" window-height count-lines 6 8 newline 2 make-local-variable set-buffer-modified-p] 15 (#$ . 16628) "P"])#@332 Language specific strings for Emacs.
This is an association list with the keys equal to the strings
that can be returned by `read-language-name'.  The elements in
the list are themselves association lists with keys that are
string ids and values that are the language specific strings.

See `get-lang-string' for more information.
(defconst lang-strings '(("English" (tut-chgdkey . "%s has been rebound, but you can use %s instead") (tut-chgdkey2 . "More") (tut-chgdhead . "\n NOTICE: The main purpose of the Emacs tutorial is to teach you\n the most important standard Emacs commands (key bindings).\n However, your Emacs has been customized by changing some of\n these basic editing commands, so it doesn't correspond to the\n tutorial.  We have inserted colored notices where the altered\n commands have been introduced.") (tut-chgdhead2 . "More"))) (#$ . 20749))#@637 Get a language specific string for Emacs.
In certain places Emacs can replace a string shown to the user with
a language specific string.  This function retrieves such strings.

LANG is the language specification.  It should be one of those
strings that can be returned by `read-language-name'.  STRINGID
is a symbol that specifies the string to retrieve.

If no string is found for STRINGID in the chosen language then
the English string is returned unless NO-ENG-FALLBACK is non-nil.

See `lang-strings' for more information.

Currently this feature is only used in `help-with-tutorial'.

(fn LANG STRINGID &optional NO-ENG-FALLBACK)
(defalias 'get-lang-string #[770 "\301\"\302\203 \301A\"\211\203 \211A\262\210\211\204& \204& \303\304\305#\262\207" [lang-strings assoc nil get-lang-string "English" t] 9 (#$ . 21622)])
(provide 'tutorial)
