;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (require 'rx) #@27 Alist of log level value. (defconst log4e-log-level-alist '((fatal . 6) (error . 5) (warn . 4) (info . 3) (debug . 2) (trace . 1)) (#$ . 101)) #@44 Alist of logging function name at default. (defconst log4e-default-logging-function-name-alist '((fatal . "log-fatal") (error . "log-error") (warn . "log-warn") (info . "log-info") (debug . "log-debug") (trace . "log-trace")) (#$ . 250)) (defalias 'log4e--def-symmaker '(macro . #[(symnm) "\301\302\303\304P!\305\303\306\307\310\"\311BBDFD\207" [symnm progn defsubst intern "log4e--make-symbol-" (prefix) concat format "log4e--%s-" (prefix)] 9])) (defalias 'log4e--make-symbol-log-buffer #[(prefix) "\301\302P!\207" [prefix intern "log4e--log-buffer-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-log-buffer speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-msg-buffer #[(prefix) "\301\302P!\207" [prefix intern "log4e--msg-buffer-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-msg-buffer speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-log-template #[(prefix) "\301\302P!\207" [prefix intern "log4e--log-template-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-log-template speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-time-template #[(prefix) "\301\302P!\207" [prefix intern "log4e--time-template-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-time-template speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-min-level #[(prefix) "\301\302P!\207" [prefix intern "log4e--min-level-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-min-level speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-max-level #[(prefix) "\301\302P!\207" [prefix intern "log4e--max-level-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-max-level speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-toggle-logging #[(prefix) "\301\302P!\207" [prefix intern "log4e--toggle-logging-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-toggle-logging speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-toggle-debugging #[(prefix) "\301\302P!\207" [prefix intern "log4e--toggle-debugging-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-toggle-debugging speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-buffer-coding-system #[(prefix) "\301\302P!\207" [prefix intern "log4e--buffer-coding-system-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-buffer-coding-system speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--make-symbol-author-mail-address #[(prefix) "\301\302P!\207" [prefix intern "log4e--author-mail-address-"] 3]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--make-symbol-author-mail-address speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--def-level-logger '(macro . #[(prefix suffix level) "\203\306\202 \307 \310\311 P!) \310\312 P!) \310\313 P!) \310\314 P!) \310\315 P!) \310\316 P!) \310\317 P!) \310\320 P!),*(&3\321\322\310 \323\206a\324Q!3\325\326\203p\202q\327\203y\330\202z\331#\332\333(DC\334\335&*, \f \n\203\226\202\227\336\337BBBBBBBBBBE\257\340\310 \323\206\256\324\341R!3\325\342\203\276\202\277\327\203\307\330\202\310\331\203\321\202\322\343$\332\344\205\340\336\345DDC\346\347 DD\350\351 DD\352\353 DD\354\355 DD\305\356 DD\304\357 DD\303\360 DD\302\361 DD\257\"\362BB\257E. \207" [suffix prefix logging-p maxlvl minlvl timetmpl (msg &rest msgargs) (level msg &rest msgargs) intern "log4e--log-buffer-" "log4e--msg-buffer-" "log4e--buffer-coding-system-" "log4e--log-template-" "log4e--time-template-" "log4e--min-level-" "log4e--max-level-" "log4e--toggle-logging-" progn defun "--" "log" format "Do logging for %s level log.\n%sMSG/MSGARGS are passed to `format'." "any" "" "LEVEL is symbol as a log level in '(trace debug info warn error fatal).\n" let log4e--current-msg-buffer apply 'log4e--logging level (msg msgargs) defmacro "*" "Do logging for %s level log.\n%sMSG/MSGARGS are passed to `format'.\nEvaluation of MSGARGS is invoked only if %s level log should be printed." "the" append quote buff log4e--make-symbol-log-buffer msgbuff log4e--make-symbol-msg-buffer codsys log4e--make-symbol-buffer-coding-system logtmpl log4e--make-symbol-log-template log4e--make-symbol-time-template log4e--make-symbol-min-level log4e--make-symbol-max-level log4e--make-symbol-toggle-logging (`(let ((log4e--current-msg-buffer ,msgbuff)) (when (and ,logging-p (log4e--logging-level-p ,minlvl ,maxlvl ,level)) (log4e--logging ,buff ,codsys ,logtmpl ,timetmpl ,minlvl ,maxlvl ,logging-p ,level ,msg ,@msgargs)))) argform] 19])) (defalias 'log4e--logging-level-p #[(minlevel maxlevel currlevel) "\306 \"\206\307\306\n \"\206\310\306 \"\206\311\n\f\nY\205&\f X+\207" [minlevel log4e-log-level-alist maxlevel currlevel currlvlvalue maxlvlvalue assoc-default 1 6 0 minlvlvalue] 5]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--logging-level-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defalias 'log4e--get-or-create-log-buffer #[(buffnm &optional codesys) "\304!\206\305!r q\210\306 \210\n\203\n) )\207" [buffnm buff codesys buffer-file-coding-system get-buffer get-buffer-create log4e-mode] 2]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--get-or-create-log-buffer speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defvar log4e--regexp-msg-format (rx-to-string '(and "%" (* (any "+#-0")) (* (any "0-9")) (32 "." (+ (any "0-9"))) (any "a-zA-Z")))) (defalias 'log4e--insert-log #[(logtmpl timetmpl level msg msgargs propertize-p) "\306!\307\310\311 !\226\"\312 \203$\313\314\fG\315\316\f%\210\313\314 G\315\317 %\210\"#\320\321\f###\320\322 ###\320\323$###`%#\324\261\210 \203W\313%\211T\325 $\210%b\210&\203\323\326'\312\327#\203\323\330\314!(&\211A&\242)\312*\3311\210\307()\"0\202\225+\327*\307\332\333+!\"),\334 -\335\216 \203\307\3361\306*\203\267\313\314,G\315\337,%\202\301\313\314,G\315\340,%0\210\202\307\210*\341,\327\211#\210,\202[%b.\207" [timetmpl level buffer-read-only lvltext timetext propertize-p format-time-string format "%-05s" symbol-name nil put-text-property 0 face font-lock-doc-face font-lock-keyword-face replace-regexp-in-string "%t" "%l" "%m" "\n" log4e--level re-search-forward t match-string-no-properties (error) "=%s=" error-message-string match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] (error) font-lock-warning-face font-lock-string-face replace-match logtmpl logtext msg begin msgargs log4e--regexp-msg-format currtype currarg failfmt e currtext save-match-data-internal] 6]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put log4e--insert-log speed -1 put byte-optimizer byte-compile-inline-expand] 5) (defvar log4e--current-msg-buffer nil) (defalias 'log4e--logging #[(buffnm codsys logtmpl timetmpl minlevel maxlevel logging-p level msg &rest msgargs) "\205\272 \n \306 \"\206\307\306\n \"\206\310\306\f \"\206\"\311-./-/Y\2055-.X.\205\272\312 0\313\216r1231\3141!\206k\3151!4r4q\210\316 \2103\203g35)4)*q\210db\210\3176`789 :;\320<;:98\3219!\322\323\324 !\226\"\3176=><\203\271\325\311>G\326\327>%\210\325\311=G\326\330=%\2108?\331\332>?#?\331\333=?#?\331\334:?#?`7?\335\261\210<\203\357\3257\211T\336 $\2107b\210;\203l\337@\317\320#\203l\340\311!A;\211A;\242B\317C\3411 \322AB\"0\202-D\320C\322\342\343D!\")E\312 0\344\216<\203`\3451_C\203P\325\311EG\326\346E%\202Z\325\311EG\326\347E%0\210\202`\210*\350E\320\211#\210,\202\3637b.\210db\210\3517`\"FG\203\231G\320=\204\231\3521\224\314G!0\202\226\210\317\206\233G\211H\203\267\353H!\203\255H\202\257II\354F!\210).\317\207" [logging-p minlevel maxlevel level currlevel log4e-log-level-alist assoc-default 1 6 0 match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] get-buffer get-buffer-create log4e-mode nil t format-time-string format "%-05s" symbol-name put-text-property face font-lock-doc-face font-lock-keyword-face replace-regexp-in-string "%t" "%l" "%m" "\n" log4e--level re-search-forward match-string-no-properties (error) "=%s=" error-message-string #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] (error) font-lock-warning-face font-lock-string-face replace-match buffer-substring-no-properties (error) buffer-live-p princ currlvlvalue maxlvlvalue minlvlvalue save-match-data-internal buffnm codsys codesys buff buffer-file-coding-system buffer-read-only begin logtmpl timetmpl msg msgargs propertize-p lvltext timetext logtext log4e--regexp-msg-format currtype currarg failfmt e currtext currlog log4e--current-msg-buffer msgbuf standard-output] 7]) (defalias 'log4e--get-current-log-line-level #[nil "\212\300 \210\301`\302\")\207" [beginning-of-line get-text-property log4e--level] 3]) (defalias 'log4e--clear-log #[(buffnm) "r\305\306!\206\307!r\nq\210\310 \210 \203 )\n)*q\210\305\311 )\207" [buffnm codesys buff buffer-file-coding-system buffer-read-only nil get-buffer get-buffer-create log4e-mode erase-buffer] 2]) (defalias 'log4e--open-log #[(buffnm) "\303!\304 !\204\305\306!\202r q\210\307)\310 !)\207" [buffnm buff buffer-read-only get-buffer buffer-live-p message "[Log4E] Not exist log buffer." t pop-to-buffer] 2]) (defalias 'log4e--open-log-if-debug #[(buffnm dbg) "\205\302 !\207" [dbg buffnm log4e--open-log] 2]) #@3531 Define the functions of logging for your elisp. Specification: After eval this, you can use the functions for supporting about logging. They are the following ... - do logging for each log level. Log level are trace, debug, info, warn, error and fatal. - set max and min log level. - switch logging. - switch debugging. - open and clear log buffer. - send bug report for you. For details, see Functions section. Argument: - PREFIX is string as your elisp prefix. - MSGTMPL is string as format of log. The following words has a special meaning. - %t ... Replaced with time string. About it, see TIMETMPL argument. - %l ... Replaced with log level. They are 'TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'. - %m ... Replaced with log message that passed by you. - TIMETMPL is string as format of time. This value is passed to `format-time-string'. - LOG-FUNCTION-NAME-CUSTOM-ALIST is alist as the function name of logging. - If this value is nil, define the following functions. yourprefix--log-trace yourprefix--log-debug ... yourprefix--log-fatal - If you want to custom the name of them, give like the following value. '((fatal . "fatal") (error . "error") (warn . "warn") (info . "info") (debug . "debug") (trace . "trace")) Then, define the following functions. yourprefix--trace yourprefix--debug ... yourprefix--fatal Functions: List all functions defined below. PREFIX is your prefix. - PREFIX--log-fatal ... #1 - PREFIX--log-error ... #1 - PREFIX--log-warn ... #1 - PREFIX--log-info ... #1 - PREFIX--log-debug ... #1 - PREFIX--log-trace ... #1 - PREFIX--log-fatal* ... #2 - PREFIX--log-error* ... #2 - PREFIX--log-warn* ... #2 - PREFIX--log-info* ... #2 - PREFIX--log-debug* ... #2 - PREFIX--log-trace* ... #2 - PREFIX--log - PREFIX--log-set-level - PREFIX--log-enable-logging ... #3 - PREFIX--log-disable-logging ... #3 - PREFIX--log-enable-messaging ... #3 - PREFIX--log-disable-messaging ... #3 - PREFIX--log-enable-debugging ... #3 - PREFIX--log-disable-debugging ... #3 - PREFIX--log-debugging-p - PREFIX--log-set-coding-system - PREFIX--log-set-author-mail-address - PREFIX--log-clear-log ... #3 - PREFIX--log-open-log ... #3 - PREFIX--log-open-log-if-debug #1 : You can customize this name #2 : Name is a #1 name + "*" #3 : This is command Example: ;; If you develop elisp that has prefix "hoge", write and eval the following sexp in your elisp file. (require 'log4e) (log4e:deflogger "hoge" "%t [%l] %m" "%H:%M:%S") ;; Eval the following (hoge--log-enable-logging) ;; Then, write the following (defun hoge-do-hoge (hoge) (if (not (stringp hoge)) (hoge--log-fatal "failed do hoge : hoge is '%s'" hoge) (hoge--log-debug "start do hoge about '%s'" hoge) (message "hoge!") (hoge--log-info "done hoge about '%s'" hoge))) ;; Eval the following (hoge-do-hoge "HOGEGE") ;; Do M-x hoge--log-open-log ;; Open the buffer which name is " *log4e-hoge*". The buffer string is below 12:34:56 [INFO ] done hoge about 'HOGEGE' ;; Eval the following (hoge--log-set-level 'trace) (hoge-do-hoge "FUGAGA") ;; Do M-x hoge--log-open-log ;; Open the buffer. its string is below 12:34:56 [INFO ] done hoge about 'HOGEGE' 12:35:43 [DEBUG] start do hoge about 'FUGAGA' 12:35:43 [INFO ] done hoge about 'FUGAGA'  (defalias 'log4e:deflogger '(macro . #[(prefix msgtmpl timetmpl &optional log-function-name-custom-alist) ";\203!\306\230\204! ;\203! \306\230\204!\n;\203!\n\306\230\203%\307\310!\207\311\312P!)\311\313P!)\311\314P!)\311\315P!)@\311\316P!)A\311\317P!)B\311\320P!)C\311\321P!)D\311\322P!)E\311\323P!)FGA@H\324I\325\211JK\325\211LM\326NI:\203\342I@\211JH\236\211K\243\206\265\306L\327\330L\"\203\310\307\331J\"\210\202\315K\206\322JO\236MBMIAI\325N\202\236M\237.P\332\333 \334\335EE\333 E\333@\nE\333A\336BB\333B\337BB\333C\340BB\333\f\341BB\333D\342BB\333E\343BB\333F\344BB\345\311\346P!\347\350\351A\352BB\351B\353BB\257\345\311\354P!\325\355\356\351C\357BB\257\345\311\360P!\325\361\362\351C\363BB\257\345\311\364P!\365\366\367\351\f\370BB\257\345\311\371P!\325\372\373\351\f\374BB\257\345\311\375P!\325\376\377\351C\201QBB\351D\201RBB\257\345\311\201SP!\325\201T\201U\351D\201VBB\257\345\311\201WP!\325DF\345\311\201XP!\201Y\201Z\351E\201[BB\257\345\311\201\\P!\325\201]\201^\201_ D\257\345\311\201`P!\325\201a\201b\201c D\257\345\311\201dP!\325\201e\201f DE\257\201g\201hBB\201g\201i\201jP\"\201kBBB\201g\201i\201lP\"\201mBBB\201g\201i\201nP\"\201oBBB\201g\201i\201pP\"\201qBBB\201g\201i\201rP\"\201sBBB\201g\201i\201tP\"\201uBBB\257. \207" [prefix msgtmpl timetmpl bufsym msgbufsym logtmplsym "" message "[LOG4E] invalid argument of deflogger" intern "log4e--log-buffer-" "log4e--msg-buffer-" "log4e--log-template-" "log4e--time-template-" "log4e--min-level-" "log4e--max-level-" "log4e--toggle-logging-" "log4e--toggle-debugging-" "log4e--buffer-coding-system-" "log4e--author-mail-address-" (fatal error warn info debug trace) nil t string-match "*" "[LOG4E] ignore %s level name in log-function-name-custom-alist. can't use '*' for the name." progn defvar format " *log4e-%s*" ('info) ('fatal) (nil) (nil) (nil) (nil) (nil) defun "--log-set-level" (minlevel &optional maxlevel) "Set range for doing logging.\n\nMINLEVEL is symbol of lowest level for doing logging. its default is 'info.\nMAXLEVEL is symbol of highest level for doing logging. its default is 'fatal." setq (minlevel) (maxlevel) "--log-enable-logging" "Enable logging by logging functions." (interactive) (t) "--log-disable-logging" "Disable logging by logging functions." (interactive) (nil) "--log-enable-messaging" (&optional buffer) "Enable dump the log into other buffer by logging functions.\n\nBUFFER is a buffer dumped log into. nil means *Messages* buffer." (interactive) ((or buffer t)) "--log-disable-messaging" "Disable dump the log into other buffer by logging functions." (interactive) (nil) "--log-enable-debugging" "Enable debugging and logging.\n\n`PREFIX--log-debugging-p' will return t." (interactive) timetmplsym minlvlsym maxlvlsym tglsym dbgsym codsyssym addrsym log-function-name-custom-alist custom-alist #1=#:--cl-var-- lvl lvlpair fname #2=#:--cl-var-- #3=#:--cl-var-- log4e-default-logging-function-name-alist funcnm-alist (t) (t) "--log-disable-debugging" "Disable debugging.\n\n`PREFIX--log-debugging-p' will return nil." (interactive) (nil) "--log-debugging-p" "--log-set-coding-system" (coding-system) "Set charset and linefeed of LOG-BUFFER.\n\nCODING-SYSTEM is symbol for setting to `buffer-file-coding-system'.\nLOG-BUFFER is a buffer which name is \" *log4e-PREFIX*\"." (coding-system) "--log-clear-log" "Clear buffer string of buffer which name is \" *log4e-PREFIX*\"." (interactive) log4e--clear-log "--log-open-log" "Open buffer which name is \" *log4e-PREFIX*\"." (interactive) log4e--open-log "--log-open-log-if-debug" "Open buffer which name is \" *log4e-PREFIX*\" if debugging is enabled." log4e--open-log-if-debug log4e--def-level-logger (nil nil) assoc-default fatal ('fatal) error ('error) warn ('warn) info ('info) debug ('debug) trace ('trace)] 35 (#$ . 10278)])) (byte-code "\300\301\302\303#\300\207" [function-put log4e:deflogger lisp-indent-function 0] 4) (defvar log4e-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [log4e-mode-hook variable-documentation put "Hook run after entering Log4E mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp log4e-mode-map definition-name log4e-mode] 4) (defvar log4e-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [log4e-mode-abbrev-table log4e-mode-map variable-documentation put purecopy "Keymap for `log4e-mode'." boundp log4e-mode-syntax-table definition-name log4e-mode (lambda (def-tmp-var) (defvar log4e-mode-syntax-table def-tmp-var)) make-syntax-table "Syntax table for `log4e-mode'." (lambda (def-tmp-var) (defvar log4e-mode-abbrev-table def-tmp-var)) define-abbrev-table nil "Abbrev table for `log4e-mode'." derived-mode-parent view-mode] 5) #@255 Major mode for browsing a buffer made by log4e. \ \{log4e-mode-map} In addition to any hooks its parent mode `view-mode' might have run, this mode runs the hook `log4e-mode-hook', as the final or penultimate step during initialization. (defalias 'log4e-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2036 \321 =\203<\322\f\323 \"\210)\324 \325\"\204V !=\204V\326 \325!C#\210\327 !\210\330\f!\210 !\331 \332\333#\210\331 \334\335#\210)\336\337!\207" [delay-mode-hooks major-mode mode-name log4e-mode-map log4e-mode-syntax-table parent make-local-variable t view-mode log4e-mode "Log4E" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table define-key "J" log4e:next-log "K" log4e:previous-log run-mode-hooks log4e-mode-hook log4e-mode-abbrev-table local-abbrev-table] 6 (#$ . 19021) nil]) #@42 Move to start of next log on log4e-mode. (defalias 'log4e:next-log #[nil "\301`dW\203\302y\210\303 \211\203)\207" [level nil 1 log4e--get-current-log-line-level] 3 (#$ . 20088) nil]) #@46 Move to start of previous log on log4e-mode. (defalias 'log4e:previous-log #[nil "\301`eV\203\302y\210\303 \211\203)\207" [level nil -1 log4e--get-current-log-line-level] 3 (#$ . 20284) nil]) #@81 Insert logging statment for trace level log at start of current function/macro. (defalias 'log4e:insert-start-log-quickly #[nil "\306\307\310\311#\205 `\211\205\312\313!\205\312\314!\212eb\210\310\211\311\211,\310-\315\316\310\311#\203U\312\313!\317\320\224\321\"\211\322=\204K -\310\211\202L\311\203U\310,\202*-.\205D \205D\323\324 \325Q\326 #\323\327\330 #\323\331\330\n#\323\332\326\n#\323\333\326\n#\334\n\335\"\211./\310\21101/:\203\273/@\2110\326\230\204\262\336\3370\"\204\26201B1/A\211/\202\2241\237+.\340\341 \"2.3\31003:\203\3533@02\3300\342R23A\2113\202\3202+4\3432.5\31005:\2035@02\344P25A\2115\202\3742\345P+6\346\3406 4.%7\310u\210\347\350!\210\315\351\310\311#\203<\352u\210\347 \210\353 \2107c.\n,\207" [fstartpt fncnm argtext prefix currface #1=#:--cl-var-- re-search-backward "(\\(?:defun\\|defmacro\\|defsubst\\)\\*? +\\([^ ]+\\) +(\\([^)]*\\))" nil t match-string-no-properties 1 2 re-search-forward "(log4e:deflogger[ \n]+\"\\([^\"]+\\)\"" get-text-property 0 face font-lock-comment-face replace-regexp-in-string "\\`" "[^a-zA-Z0-9]+" "" "-" " " "\n" "^ +" " +$" split-string " +" string-match "\\`&" format "start %s." "[%s]" "(%s--log 'trace \"%s\"" " %s" ")" apply forward-sexp 3 "\\=[ \n]+\"" -1 newline-and-indent #2=#:--cl-var-- #3=#:--cl-var-- args #4=#:--cl-var-- arg #5=#:--cl-var-- ret #6=#:--cl-var-- logtext #7=#:--cl-var-- sexpformat inserttext] 7 (#$ . 20489) nil]) (provide 'log4e)