From bcf8bd4420a1a94d6b5e406b322b134792648e1f Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Fri, 20 Jun 2025 19:55:01 +0200 Subject: [PATCH] autoloads for lisp direct single files --- lisp/loaddefs.el | 555 +++++++++++++++++++++++++++++++++++++++ lisp/update-autoloads.el | 36 +++ 2 files changed, 591 insertions(+) create mode 100644 lisp/loaddefs.el create mode 100644 lisp/update-autoloads.el diff --git a/lisp/loaddefs.el b/lisp/loaddefs.el new file mode 100644 index 00000000..c0defb74 --- /dev/null +++ b/lisp/loaddefs.el @@ -0,0 +1,555 @@ +;; + +;;;### (autoloads nil "ox-ipynb" "ox-ipynb.el" (0 0 0 0)) +;;; Generated autoloads from ox-ipynb.el + +(register-definition-prefixes "ox-ipynb" '("ox-ipynb-")) + +;;;*** + +;;;### (autoloads nil "update-autoloads" "update-autoloads.el" (0 +;;;;;; 0 0 0)) +;;; Generated autoloads from update-autoloads.el + +(setq load-path (cons (file-name-directory load-file-name) load-path)) + +(autoload 'update-autoloads-in-package-area "update-autoloads" "\ +Update autoloads for files in the diretory containing this file. + +\(fn &optional FILE)" t) + +(autoload 'update-autoloads-for-file-in-package-area "update-autoloads" "\ + + +\(fn FILE)" t) + +;;;*** + +;;;### (autoloads nil "dialog" "dialog.el" (0 0 0 0)) +;;; Generated autoloads from dialog.el + +(put 'dialog-define 'lisp-indent-function 'defun) + +(autoload 'dialog-define "dialog" "\ +Declare a dialog called DIALOG with items described in SPEC. +DIALOG does not need to be quoted. + +Second argument SPEC is the dialog specification. + +Third argument DOC is the dialog documentation. + +The SPEC argument value should have the following form: + + (STYLE FIELD...) + +Where STYLE specifies how dialog will be opened and FIELD is a +vector which specifies a dialog field. + +Valid values for STYLE are: + + :style window + Use the current frame with only one window. + + :style split-window-horizontally + :style (split-window-horizontally . ARG) + Split current window horizontally and select the window + at left. ARG is optional; if specified, it is passed as + argument to `split-window-horizontally' function (which + see). ARG must be an integer. + + :style split-window-vertically + :style (split-window-vertically . ARG) + Split current window vertically and select the window + above. ARG is optional; if specified, it is passed as + argument for `split-window-vertically' function (which + see). ARG must be an integer. + + :style frame + :style (frame . POSITION) + Make a new frame. POSITION is optional; it specifies the + position of the upper left corner of the new frame. + POSITION can have the following values: + + (X . Y) the position in pixels. + + point the current point position. + + mouse the current mouse position. + + center the new frame is centralized in the selected frame. + + frame the upper left corner of the selected frame. + + If POSITION is omitted, the frame position is given by + the system where Emacs is running. + + If there isn't a windowing system, it behaves as `window'. + + :parent DIALOG + :parent (DIALOG . DECORATION) + This dialog derives from dialog DIALOG (the parent + dialog). DECORATION specifies what to do with + decorations (box, hline and vline fields). + DECORATION can have the following values: + + keep keep all parent decoration. + + kill kill all parent decoration. + + kill-overlap kill parent decoration only when overlaps with + some derived dialog field (decoration or not). + + The DECORATION default value is keep. + + See _Dialog Derivation_ section. + +STYLE can be omitted, the default value is `window'. + +The window configuration is saved just before the dialog box +activation and it is restored just after dialog box termination. + +There exist the following FIELD types: + + box + button + button-cancel + button-next + button-ok + button-previous + button-quit + button-reset + checkbox + editable + hline + menu + navigation + radio + text + vline + +FIELD has the following forms: + + [box LINE COLUMN LINE2 COLUMN2 + :tag TAG] + + Draw a box which diagonal vertices are at LINE and + COLUMN, and at LINE2 and COLUMN2. + LINE(2) starts from 1. COLUMN(2) starts from 0. + TAG contains the characters used to draw the box border. + If TAG is omitted, the default value is \".-|++++\". + The TAG string specifies: + + \".-|++++\" + ::::::: + ::::::+--- bottom left corner + :::::+---- bottom right corner + ::::+----- top left corner + :::+------ top right corner + ::+------- vertical + :+-------- horizontal + +--------- null box (LINE = LINE2 and COLUMN = COLUMN2) + + [button LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Button\" is used. + When pressed, it executes FUNCTION, if FUNCTION is + specified. If FUNCTION is omitted, nothing happens. + See _Field Keywords_ section below. + + [button-cancel LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a cancel button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Cancel\" is used. + When pressed, it takes the following steps: + 1. Discard all temporary dialog values; + 2. Execute FUNCTION, if FUNCTION is specified; + 3. Finish the current dialog, that is, return to previous + dialog, if exists one. + See _Field Keywords_ section below. + + [button-next LINE COLUMN DIALOG + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a next button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Next\" is used. + If DIALOG is not a dialog, nothing happens. + If DIALOG is a dialog, when pressed, it takes the + following steps: + 1. Execute FUNCTION, if FUNCTION is specified; + 2. Go to next DIALOG. + See _Field Keywords_ section below. + + [button-ok LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify an ok button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Ok\" is used. + When pressed, it takes the following steps: + 1. All temporary dialog values are saved into + corresponding variables; + 2. Execute FUNCTION, if FUNCTION is specified; + 3. Finish the current dialog, that is, return to previous + dialog, if exists one. + See _Field Keywords_ section below. + + [button-previous LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a previous button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Previous\" is used. + If there isn't a previous dialog, nothing happens. + If there isn a previous dialog, when pressed, it takes + the following steps: + 1. Execute FUNCTION, if FUNCTION is specified; + 2. Go to previous dialog. + See _Field Keywords_ section below. + + [button-quit LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a quit button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Quit\" is used. + When pressed, it takes the following steps: + 1. Discard all temporary dialog values; + 2. Execute FUNCTION, if FUNCTION is specified; + 3. Finish all dialog chain. + See _Field Keywords_ section below. + + [button-reset LINE COLUMN + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a reset button at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + If TAG is omitted, \"Reset\" is used. + When pressed, it takes the following steps: + 1. Reset all temporary dialog values, that is, restore + the original value for each temporary dialog variable; + 2. Execute FUNCTION, if FUNCTION is specified. + See _Field Keywords_ section below. + + [checkbox LINE COLUMN VAR + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a checkbox at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + VAR is a symbol variable which will hold the checkbox value. + If TAG is omitted, it is created only the checkbox. + If TAG is specified, the first character indicates if the TAG + is positioned at left or right of the checkbox. If the first + character is `?-', the TAG is positioned at left of the + checkbox, that is: + + TAG [] + + If the first character is not `?-', the TAG is positioned at + right of the checkbox, that is: + + [] TAG + + The first character of the TAG is discarded, so, the minimum + TAG length is 2. + When pressed, it takes the following steps: + 1. Store VALUE into a temporary dialog variable; + 2. Execute FUNCTION passing VALUE as argument, if + FUNCTION is specified. + See _Field Keywords_ section below. + + [editable LINE COLUMN KIND VAR + :tag TAG :notify FUNCTION :help-echo HELP + :size SIZE :action FUNCTION :secret BOOL] + + Specify an editable field at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + VAR is a symbol variable which will hold the editable value. + KIND specifies the kind of editable field, it can have the + following values: + + character a character field. + + coding-system a MULE coding-system field. + + color choose a color name (with sample). + + directory a directory name field. + + file a file name field. + + float a floating point number field. + + integer an integer number field. + + key-sequence a key sequence field. + + number a number (floating point or integer) field. + + regexp a regular expression field. + + sexp an arbitrary Lisp expression field. + + string a string field. + + symbol a Lisp symbol field. + + text a multiline text area field. + + variable a Lisp variable field. + + See _Field Keywords_ section below. + + [hline LINE COLUMN LENGTH + :tag TAG] + + Draw a horizontal line starting at LINE and COLUMN until + LINE and (COLUMN + LENGTH - 1). + LINE starts from 1. COLUMN starts from 0. + TAG is a string which the very first character is used to + draw the line. If TAG is omitted, the default value is + \"-\". + + [menu LINE COLUMN VAR ALIST + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a menu at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + VAR is a symbol variable which will hold the menu value. + ALIST is an association list which has the following form: + + (VALUE . MENU-ITEM) + + Where VALUE is the value which will be stored in VAR when + this menu item is selected; MENU-ITEM is a string shown + as the menu item. VALUE can be a symbol or a string. + When a menu item is selected, it takes the following + steps: + 1. Store VALUE into a temporary dialog variable; + 2. Execute FUNCTION passing VALUE as argument, if + FUNCTION is specified. + See _Field Keywords_ section below. + + [navigation LINE COLUMN + :tag TAG :help-echo HELP] + + Specify a navigation field bar at LINE and COLUMN which + shows all dialogs before the current one. + LINE starts from 1. COLUMN starts from 0. + It has the following generic form: + + TAG: [dialog1] :: [dialog2] :: ... :: [dialogN-1] :: dialogN + + Where TAG, if specified, is given by :tag keyword; + [dialog1], [dialog2] until [dialogN-1] are buttons which + go to the dialog correspondent when the button is pressed. + See _Field Keywords_ section below. + + [radio LINE COLUMN VAR VALUE + :tag TAG :notify FUNCTION :help-echo HELP] + + Specify a radio at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + VAR is a symbol variable which will hold the radio value. + VALUE is the value used when this radio is selected. + If TAG is omitted, it is created only the radio. + If TAG is specified, the first character indicates if the TAG + is positioned at left or right of the radio. If the first + character is `?-', the TAG is positioned at left of the + radio, that is: + + TAG ( ) + + If the first character is not `?-', the TAG is positioned at + right of the radio, that is: + + ( ) TAG + + The first character of the TAG is discarded, so, the minimum + TAG length is 2. + When pressed, it takes the following steps: + 1. Store VALUE into a temporary dialog variable; + 2. Update all radio which share the same VAR; + 3. Execute FUNCTION passing VALUE as argument, if + FUNCTION is specified. + See _Field Keywords_ section below. + + [text LINE COLUMN TEXT + :size SIZE] + + Specify a TEXT string to be inserted at LINE and COLUMN. + LINE starts from 1. COLUMN starts from 0. + TEXT can be a string, a symbol or a list. If TEXT is a + symbol variable, the variable value must be a string. If + TEXT is a symbol function or a function, the function + will be evaluated without parameters and should returns a + string. If TEXT is a list, the list header should be a + function, this function will be evaluated and the list + tail will be the parameters for this function; this + function should return a string. + If TEXT is a symbol, `dialog-update-text' can be used by a + function updates this field. + See _Field Keywords_ section below. + + [vline LINE COLUMN LENGTH + :tag TAG] + + Draw a vertical line starting at LINE and COLUMN until + (LINE + LENGTH - 1) and COLUMN. + LINE starts from 1. COLUMN starts from 0. + TAG is a string which the very first character is used to + draw the line. If TAG is omitted, the default value is + \"|\". + + +Field Keywords +-------------- + +The keywords specified in a field are optionals. +Below is the keyword documentation. + + :action FUNCTION + Specify a function FUNCTION which is activated when RET + key is pressed. It is passed as argument the value of + the editable field. FUNCTION must return a value. + If the returned value is nil, it means that something + goes wrong, so the point stays in the current editable + field. If the returned value is not nil, the point goes + to the next field. + + :help-echo HELP + Specifies how to display a message whenever you move to + the field via keyboard or move the mouse over it. HELP + is either a string to display, a function of one + argument, the field widget, which should return a string + to display, or a form that evaluates to such a string. + + :notify FUNCTION + Specify a function FUNCTION which is activated at each + change of the editable field. It is passed as argument + the value of the field. + + :secret CHAR + Character used to display the value. You can set this to + e.g. `?*' if the field contains a password or other + secret information. By default, this is `nil', and the + value is not secret. + + :size SIZE + Specify the SIZE of string to be displayed. + It can have the following values: + + integer the size of string. + + (COLUMNS . LINES) rectangular text area, both values + are integers greater than zero. + + :tag TAG + Usually, specify a field label. + Some fields use TAG differently, see the field + documentation above. + + +Dialog Derivation +----------------- + +Sometimes you need to create a dialog B which is almost the same +as another dialog A, but it should add some extra fields in A, or +it should remove some fields from A. This is what the dialog +derivation do, that is, a way to add/remove some fields from a +dialog in order to create a new one. + +To derive a dialog from another one, just specify the :parent in a +dialog definition. For example: + + (dialog-define example2 + '(:style window + [navigation 1 1 :tag \"Navigation\"] + [text 3 1 \"Hello World 1!!\"] + [button-quit 5 1] + [button-previous 5 10 :tag \"Hello :(\"]) + \"This is the parent dialog.\") + + (dialog-define example1 + '(:style (frame . mouse) :parent example2 + ;; this is a new button + [button-quit 7 1 :tag \"New Quit Button\"] + ;; this text field removes the \"Hello :(\" button + [text 5 10 \" \"]) + \"This is the derived dialog.\") + +So, if the new dialog element overlaps one of parent dialog elements, +the parent dialog element is removed. + +The :parent specification have the following values: + + :parent DIALOG + :parent (DIALOG . DECORATION) + +Where DIALOG is the parent dialog and DECORATION specifies what to do +with decoration fields, that is, box, hline and vline fields. + +DECORATION can have the following values: + + keep keep all parent decoration. + + kill kill all parent decoration. + + kill-overlap kill parent decoration only when overlaps with some + derived dialog field (decoration or not). + +The DECORATION default value is keep. + + +Example +------- + +As an example, here is a very simple dialog specification: + + (require 'dialog) + + (dialog-define hello1 + '(:style window + [navigation 1 1 :tag \"Navigation\"] + [text 3 1 \"Hello World 1!!\"] + [button-quit 5 1] + [button-previous 5 10 :tag \"Hello :(\"]) + \"This is a Hello World example.\") + + (dialog-define hello2 + '(:style window + [navigation 1 1 :tag \"Navigation\"] + [text 3 1 \"Hello World 2 !!\"] + [button-quit 5 1] + [button-next 5 10 hello1 :tag \"Hello :)\"]) + \"This is another Hello World example.\") + + (hello2) ; or (dialog-run 'hello2) run dialog hello2 + +\(fn DIALOG SPEC DOC)" nil t) + +(autoload 'dialog-run "dialog" "\ +Execute DIALOG. See `dialog-define'. + +\(fn DIALOG)") + +(autoload 'dialog-make-empty "dialog" "\ +Define a new, empty dialog with name DIALOG. +If the dialog already exists, it is left unmodified. +Return DIALOG. + +\(fn DIALOG)") + +(autoload 'dialogp "dialog" "\ +Return t if OBJECT is a dialog object. + +\(fn OBJECT)") + +(register-definition-prefixes "dialog" '("dialog-" "set-dialog-")) + +;;;*** diff --git a/lisp/update-autoloads.el b/lisp/update-autoloads.el new file mode 100644 index 00000000..65a8cdf9 --- /dev/null +++ b/lisp/update-autoloads.el @@ -0,0 +1,36 @@ +;; https://stackoverflow.com/a/4189794 +;; (load-file (concat config-dir "lisp/update-autoloads.el")) + +;; `update-autoloads-in-package-area' will generate -autoloads.el +;; files and create a loaddefs.el + +;; (load-file (concat config-dir "lisp/loaddefs.el")) + +;; put this path into the load-path automatically +;;;###autoload +(progn + (setq load-path (cons (file-name-directory load-file-name) load-path))) + +;;;###autoload +(defun update-autoloads-in-package-area (&optional file) + "Update autoloads for files in the diretory containing this file." + (interactive) + (let ((base (file-truename + (file-name-directory + (symbol-file 'update-autoloads-in-package-area 'defun))))) +(require 'autoload) ;ironic, i know +(let ((generated-autoload-file (concat base "loaddefs.el"))) + (when (not (file-exists-p generated-autoload-file)) + (with-current-buffer (find-file-noselect generated-autoload-file) + (insert ";;") ;; create the file with non-zero size to appease autoload + (save-buffer))) + (cd base) + (if file + (update-file-autoloads file) + ;; (update-autoloads-from-directories base) ;; renamed to update-directory-autoloads + (update-directory-autoloads base))))) + +;;;###autoload +(defun update-autoloads-for-file-in-package-area (file) + (interactive "f") + (update-autoloads-in-package-area file))