branch: elpa/aidermacs commit f8240d8537be5e31d56fc0a6c9c4440ba0c9605f Author: Mingde (Matthew) Zeng <matthew...@posteo.net> Commit: Mingde (Matthew) Zeng <matthew...@posteo.net>
Fix docstrings, remove unused aidermacs-utils.el --- aidermacs-backend-comint.el | 23 +++++++---- aidermacs-backend-vterm.el | 25 +++++++----- aidermacs-backends.el | 16 +++++--- aidermacs-helm.el | 4 +- aidermacs-models.el | 15 ++++--- aidermacs-utils.el | 29 -------------- aidermacs.el | 97 ++++++++++++++++++++++++--------------------- 7 files changed, 103 insertions(+), 106 deletions(-) diff --git a/aidermacs-backend-comint.el b/aidermacs-backend-comint.el index 387c32bb63..a3febb065a 100644 --- a/aidermacs-backend-comint.el +++ b/aidermacs-backend-comint.el @@ -73,7 +73,7 @@ This allows for multi-line input without sending the command." "Temporary buffer used for syntax highlighting operations.") (defun aidermacs-reset-font-lock-state () - "Reset font lock state to default for processing another a new src block." + "Reset font lock state to default for processing a new source block." (unless (equal aidermacs--syntax-block-delimiter aidermacs-diff-marker) ;; if we are processing the other half of a SEARCH/REPLACE block, we need to ;; keep the mode @@ -84,7 +84,8 @@ This allows for multi-line input without sending the command." aidermacs--syntax-block-end-pos nil)) (defun aidermacs-fontify-blocks (_output) - "Fontify search/replace blocks in comint output." + "Fontify search/replace blocks in comint output. +OUTPUT is the text to be processed." (save-excursion (goto-char (or aidermacs--syntax-last-output-pos comint-last-output-start)) @@ -134,7 +135,7 @@ This allows for multi-line input without sending the command." (condition-case e (let ((inhibit-message t)) (funcall mode)) - (error "aidermacs: failed to init major-mode `%s' for font-locking: %s" mode e))))) + (error "aidermacs: Failed to init major-mode `%s' for font-locking: %s" mode e))))) ;; Process initial content (aidermacs--fontify-block))))) @@ -217,17 +218,20 @@ This allows for multi-line input without sending the command." 'fundamental-mode))) (defun aidermacs-kill-buffer () - "Clean-up fontify buffer." + "Clean up the fontify buffer." (when (bufferp aidermacs--syntax-work-buffer) (kill-buffer aidermacs--syntax-work-buffer))) (defun aidermacs-input-sender (proc string) - "Reset font-lock state before executing a command." + "Reset font-lock state before executing a command. +PROC is the process to send to. STRING is the command to send." (aidermacs-reset-font-lock-state) (comint-simple-send proc (aidermacs--process-message-if-multi-line string))) (defun aidermacs-run-comint (program args buffer-name) - "Create a comint-based buffer and run aidermacs PROGRAM with ARGS in BUFFER-NAME." + "Create a comint-based buffer and run aidermacs program. +PROGRAM is the executable path. ARGS are command line arguments. +BUFFER-NAME is the name for the aidermacs buffer." (let ((comint-terminfo-terminal "eterm-color") (args (append args (list "--no-pretty" "--no-fancy-input")))) (unless (comint-check-proc buffer-name) @@ -247,7 +251,8 @@ This allows for multi-line input without sending the command." (font-lock-add-keywords nil aidermacs-font-lock-keywords t))))) (defun aidermacs--send-command-comint (buffer command) - "Send COMMAND to the aidermacs comint BUFFER." + "Send command to the aidermacs comint buffer. +BUFFER is the target buffer. COMMAND is the text to send." (with-current-buffer buffer (let ((process (get-buffer-process buffer)) (inhibit-read-only t)) @@ -261,7 +266,9 @@ This allows for multi-line input without sending the command." (comint-send-string process (concat command "\n"))))) (defun aidermacs--send-command-redirect-comint (buffer command) - "Send COMMAND to the aidermacs comint BUFFER and collect result into OUTPUT-BUFFER." + "Send command to the aidermacs comint buffer and collect result. +BUFFER is the target buffer. COMMAND is the text to send. +The output is collected and passed to the current callback." (with-current-buffer buffer (let ((process (get-buffer-process buffer)) (output-buffer (get-buffer-create " *aider-redirect-buffer*"))) diff --git a/aidermacs-backend-vterm.el b/aidermacs-backend-vterm.el index b01b7c92a3..74275a8500 100644 --- a/aidermacs-backend-vterm.el +++ b/aidermacs-backend-vterm.el @@ -18,9 +18,12 @@ (defvar vterm-buffer-name) (defun aidermacs--vterm-check-finish-sequence-repeated (proc orig-filter start-point expected) - "Check for the finish sequence repeatedly in PROC’s buffer. -Force a vterm render and redisplay. If the finish sequence is detected, -store the output via `aidermacs--store-output`, restore ORIG-FILTER, and return t." + "Check for the finish sequence repeatedly in PROC's buffer. +PROC is the process to check. ORIG-FILTER is the original process filter. +START-POINT is the starting position for output capture. EXPECTED is the +pattern to match. Forces a vterm render and redisplay. If the finish +sequence is detected, store the output via `aidermacs--store-output`, +restore ORIG-FILTER, and return t." (when (buffer-live-p (process-buffer proc)) (with-current-buffer (process-buffer proc) ;; Force vterm to update its display. @@ -46,9 +49,10 @@ store the output via `aidermacs--store-output`, restore ORIG-FILTER, and return t))))) (defun aidermacs--vterm-output-advice (orig-fun &rest args) - "Advice for vterm output: capture output until the finish sequence appears. -This sets a temporary process filter and installs a repeating timer -to force vterm to update until the expected finish sequence is detected." + "Capture vterm output until the finish sequence appears. +ORIG-FUN is the original function being advised. ARGS are its arguments. +This sets a temporary process filter and installs a repeating timer to +force vterm to update until the expected finish sequence is detected." (if (and (bound-and-true-p aidermacs-minor-mode) (eq major-mode 'vterm-mode)) (let* ((start-point (vterm--get-prompt-point)) @@ -75,9 +79,9 @@ to force vterm to update until the expected finish sequence is detected." (apply orig-fun args))) (defun aidermacs-run-vterm (program args buffer-name) - "Create a vterm-based buffer and run aidermacs PROGRAM with ARGS in BUFFER-NAME. -PROGRAM is the command to run, ARGS is a list of arguments, -and BUFFER-NAME is the name of the vterm buffer." + "Create a vterm-based buffer and run aidermacs program. +PROGRAM is the command to run. ARGS is a list of command line arguments. +BUFFER-NAME is the name for the vterm buffer." (unless (require 'vterm nil t) (error "vterm package is not available")) (unless (get-buffer buffer-name) @@ -94,7 +98,8 @@ and BUFFER-NAME is the name of the vterm buffer." buffer-name) (defun aidermacs--send-command-vterm (buffer command) - "Send COMMAND to the aidermacs vterm BUFFER." + "Send command to the aidermacs vterm buffer. +BUFFER is the target buffer to send to. COMMAND is the text to send." (with-current-buffer buffer (vterm-send-string command) (vterm-send-return))) diff --git a/aidermacs-backends.el b/aidermacs-backends.el index a371b33d45..581e7ab321 100644 --- a/aidermacs-backends.el +++ b/aidermacs-backends.el @@ -21,7 +21,7 @@ (defcustom aidermacs-backend 'comint "Backend to use for the aidermacs process. -Options are 'comint (the default) or 'vterm. When set to 'vterm, aidermacs will +Options are 'comint (the default) or 'vterm. When set to 'vterm, aidermacs will launch a fully functional vterm buffer (with bracketed paste support) instead of using a comint process." :type '(choice (const :tag "Comint" comint) @@ -50,6 +50,7 @@ Each entry is a cons cell (timestamp . output-text).") (defun aidermacs-get-output-history (&optional limit) "Get the output history, optionally limited to LIMIT entries. +LIMIT is the maximum number of entries to return. Returns a list of (timestamp . output-text) pairs, most recent first." (let ((history aidermacs--output-history)) (if limit @@ -68,7 +69,8 @@ Returns a list of (timestamp . output-text) pairs, most recent first." "Flag to prevent recursive callbacks.") (defun aidermacs--store-output (output) - "Store OUTPUT string in the history with timestamp. + "Store output string in the history with timestamp. +OUTPUT is the string to store. If there's a callback function, call it with the output." (setq aidermacs--current-output (substring-no-properties output)) (push (cons (current-time) (substring-no-properties output)) aidermacs--output-history) @@ -84,8 +86,8 @@ If there's a callback function, call it with the output." ;; Backend dispatcher functions (defun aidermacs-run-backend (program args buffer-name) "Run aidermacs using the selected backend. -PROGRAM is the aidermacs executable path, ARGS are command line arguments, -and BUFFER-NAME is the name for the aidermacs buffer." +PROGRAM is the aidermacs executable path. ARGS are command line arguments. +BUFFER-NAME is the name for the aidermacs buffer." (cond ((eq aidermacs-backend 'vterm) (aidermacs-run-vterm program args buffer-name)) @@ -93,7 +95,8 @@ and BUFFER-NAME is the name for the aidermacs buffer." (aidermacs-run-comint program args buffer-name)))) (defun aidermacs--send-command-backend (buffer command) - "Send COMMAND to BUFFER using the appropriate backend." + "Send command to buffer using the appropriate backend. +BUFFER is the target buffer. COMMAND is the text to send." (setq aidermacs--last-command command aidermacs--current-output nil) (if (eq aidermacs-backend 'vterm) @@ -101,7 +104,8 @@ and BUFFER-NAME is the name for the aidermacs buffer." (aidermacs--send-command-comint buffer command))) (defun aidermacs--send-command-redirect-backend (buffer command &optional callback) - "Send COMMAND to BUFFER using the appropriate backend. + "Send command to buffer using the appropriate backend. +BUFFER is the target buffer. COMMAND is the text to send. CALLBACK if provided will be called with the command output when available." (setq aidermacs--last-command command aidermacs--current-output nil diff --git a/aidermacs-helm.el b/aidermacs-helm.el index a419ed2d43..94d40a7759 100644 --- a/aidermacs-helm.el +++ b/aidermacs-helm.el @@ -17,8 +17,8 @@ (defun aidermacs-helm-read-string (prompt &optional initial-input) "Read a string with Helm completion for aidermacs, showing historical inputs. -PROMPT is the prompt string. -INITIAL-INPUT is optional initial input string." +PROMPT is the prompt string to display. +INITIAL-INPUT is optional initial input string to prefill." (let ((input (helm-comp-read prompt aidermacs-read-string-history diff --git a/aidermacs-models.el b/aidermacs-models.el index 6c795d89f1..355f32117f 100644 --- a/aidermacs-models.el +++ b/aidermacs-models.el @@ -46,7 +46,7 @@ Defaults to `aidermacs-default-model` if not explicitly set." (message "Architect Mode: %s" (if aidermacs-use-architect-mode "ON" "OFF")) (when (get-buffer (aidermacs-buffer-name)) (when (yes-or-no-p - (format "Aidermacs Architect Mode %s. Change will take affect next session. Close the session now? " + (format "Aidermacs Architect Mode %s. Change will take affect next session. Close the session now? " (if aidermacs-use-architect-mode "ON" "OFF"))) (aidermacs-exit)))) @@ -58,7 +58,7 @@ Defaults to `aidermacs-default-model` if not explicitly set." "deepseek/deepseek-chat" ) "List of available AI models for selection. -Each model should be in the format expected by the aidermacs command line interface. +Each model should be in the format expected by the aidermacs CLI. Also based on aidermacs LLM benchmark: https://aidermacs.chat/docs/leaderboards/" :type '(repeat string) :group 'aidermacs-models) @@ -67,7 +67,7 @@ Also based on aidermacs LLM benchmark: https://aidermacs.chat/docs/leaderboards/ "Cache of available AI models.") (defun aidermacs--fetch-openai-compatible-models (url) - "Fetch available models from an OpenAI compatible API endpoint at URL. + "Fetch available models from an OpenAI compatible API endpoint. URL should be the base API endpoint, e.g. https://api.openai.com/v1. Returns a list of model names with appropriate prefixes based on the API provider." (let* ((url-parsed (url-generic-parse-url url)) @@ -116,14 +116,16 @@ Returns a list of model names with appropriate prefixes based on the API provide (defun aidermacs--select-model () - "Private function for model selection with completion." + "Provide model selection with completion. +This is a private function used internally." (let ((model (with-local-quit (completing-read "Select AI model: " aidermacs--cached-models nil t)))) (when model (aidermacs--send-command (format "/model %s" model) t)))) (defun aidermacs--get-available-models () - "Get list of models supported by aider using the /models command." + "Get list of models supported by aider using the /models command. +This fetches models from various API providers and caches them." (aidermacs--send-command-redirect "/models /" (lambda (output) @@ -153,7 +155,8 @@ Returns a list of model names with appropriate prefixes based on the API provide (aidermacs--select-model))))) (defun aidermacs-clear-model-cache () - "Clear the cached models, forcing a fresh fetch on next use." + "Clear the cached models, forcing a fresh fetch on next use. +This is useful when available models have changed." (interactive) (setq aidermacs--cached-models nil) (message "Model cache cleared")) diff --git a/aidermacs-utils.el b/aidermacs-utils.el deleted file mode 100644 index e3269b6494..0000000000 --- a/aidermacs-utils.el +++ /dev/null @@ -1,29 +0,0 @@ -;; Author: Mingde (Matthew) Zeng <matthew...@posteo.net> -;; Version: 0.5.0 -;; Package-Requires: ((emacs "26.1") (transient "0.3.0")) -;; Keywords: ai emacs agents llm aider ai-pair-programming, convenience, tools -;; URL: https://github.com/MatthewZMD/aidermacs.el -;; Originally forked from: Kang Tu <tni...@gmail.com> Aider.el - -;; New function to run `find-name-dired` from the Git repository root directory -;;;###autoload -(defun aidermacs-repo-find-name-dired (pattern) - "Run `find-name-dired` from the Git repository root directory with the given PATTERN." - (interactive "sFind name (pattern): ") - (let* ((git-repo-path (shell-command-to-string "git rev-parse --show-toplevel")) - (repo-path (string-trim git-repo-path))) - (if (string-match-p "fatal" repo-path) - (message "Not in a git repository") - (find-name-dired repo-path pattern)))) - -;;;###autoload -(defun aidermacs-git-repo-root-dired () - "Open a Dired buffer at the root of the current Git repository." - (interactive) - (let ((git-repo-path (shell-command-to-string "git rev-parse --show-toplevel"))) - (if (string-match-p "fatal" git-repo-path) - (message "The current buffer is not in a Git repository.") - (let ((repo-path (string-trim git-repo-path))) - (dired-other-window repo-path))))) - -(provide 'aidermacs-utils) diff --git a/aidermacs.el b/aidermacs.el index c031e465b0..9c616844a2 100644 --- a/aidermacs.el +++ b/aidermacs.el @@ -40,7 +40,7 @@ (defcustom aidermacs-config-file nil "Path to aider configuration file. When set, Aidermacs will pass this to aider via --config flag, -ignoring other configuration settings except aidermacs-extra-args." +ignoring other configuration settings except `aidermacs-extra-args'." :type '(choice (const :tag "None" nil) (file :tag "Config file")) :group 'aidermacs) @@ -52,7 +52,7 @@ The model argument will be added automatically based on `aidermacs-default-model :group 'aidermacs) (defcustom aidermacs-subtree-only nil - "When non-nil, run aider with --subtree-only flag to only consider files in current directory. + "When non-nil, run aider with --subtree-only in the current directory. This is useful for working in monorepos where you want to limit aider's scope." :type 'boolean :group 'aidermacs) @@ -64,7 +64,8 @@ When nil, disable auto-commits requiring manual git commits." :group 'aidermacs) (defun aidermacs-project-root () - "Get the project root using project.el, VC, or fallback to file directory." + "Get the project root using project.el, VC, or fallback to file directory. +This function tries multiple methods to determine the project root." (or (when (and (fboundp 'project-current) (project-current)) (project-root (project-current))) (vc-git-root default-directory) @@ -84,7 +85,7 @@ When nil, disable auto-commits requiring manual git commits." :group 'aidermacs) (defcustom aidermacs-prompt-file-name ".aider.prompt.org" - "File name that will automatically enable aidermacs-minor-mode when opened. + "File name that will automatically enable `aidermacs-minor-mode' when opened. This is the file name without path." :type 'string :group 'aidermacs) @@ -102,7 +103,7 @@ This is the file name without path." ;;;###autoload (defun aidermacs-plain-read-string (prompt &optional initial-input) "Read a string from the user with PROMPT and optional INITIAL-INPUT. -This function can be customized or redefined by the user." +PROMPT is the text to display. INITIAL-INPUT is the default value." (read-string prompt initial-input 'aidermacs-read-string-history)) ;;;###autoload @@ -148,7 +149,7 @@ This function can be customized or redefined by the user." ;; Main transient menu (transient-define-prefix aidermacs-transient-menu () - "AI Pair Programming Interface" + "AI Pair Programming Interface." ["Aidermacs: AI Pair Programming" ["Core Actions" ("a" "Start/Open Session" aidermacs-run) @@ -184,7 +185,7 @@ This function can be customized or redefined by the user." (defun aidermacs-buffer-name () "Generate the aidermacs buffer name based on project root or current directory. -Prefers existing sessions closer to current directory." +This function prefers existing sessions closer to current directory." (let* ((root (aidermacs-project-root)) (current-dir (file-truename default-directory)) ;; Get all existing aidermacs buffers @@ -228,7 +229,8 @@ Prefers existing sessions closer to current directory." ;;;###autoload (defun aidermacs-run () - "Run aidermacs process using the selected backend." + "Run aidermacs process using the selected backend. +This function sets up the appropriate arguments and launches the process." (interactive) (let* ((buffer-name (aidermacs-buffer-name)) ;; Process extra args: split each string on whitespace. @@ -284,8 +286,8 @@ This is useful for working in monorepos where you want to limit aider's scope." (aidermacs-run))) (defun aidermacs--send-command (command &optional switch-to-buffer) - "Send COMMAND to the corresponding aidermacs process. -If SWITCH-TO-BUFFER is non-nil, switch to the aidermacs buffer." + "Send command to the corresponding aidermacs process. +COMMAND is the text to send. If SWITCH-TO-BUFFER is non-nil, switch to the aidermacs buffer." (let* ((buffer-name (aidermacs-buffer-name)) (buffer (or (get-buffer buffer-name) (progn (aidermacs-run) @@ -296,8 +298,8 @@ If SWITCH-TO-BUFFER is non-nil, switch to the aidermacs buffer." (aidermacs-switch-to-buffer)))) (defun aidermacs--send-command-redirect (command callback) - "Send COMMAND to the corresponding aidermacs process in the background. -CALLBACK will be called with the command output when available." + "Send command to the corresponding aidermacs process in the background. +COMMAND is the text to send. CALLBACK will be called with the command output when available." (let* ((buffer-name (aidermacs-buffer-name)) (buffer (or (get-buffer buffer-name) (progn (aidermacs-run) @@ -344,10 +346,11 @@ If the current buffer is already the aidermacs buffer, do nothing." (defun aidermacs--process-message-if-multi-line (str) - "Entering multi-line chat messages -https://aidermacs.chat/docs/usage/commands.html#entering-multi-line-chat-messages -If STR contains newlines and isn't already wrapped in {aidermacs...aidermacs}, -wrap it in {aidermacs\nstr\naidermacs}. Otherwise return STR unchanged." + "Process multi-line chat messages for proper formatting. +STR is the message to process. If STR contains newlines and isn't already +wrapped in {aidermacs...aidermacs}, wrap it. +Otherwise return STR unchanged. See documentation at: +https://aidermacs.chat/docs/usage/commands.html#entering-multi-line-chat-messages" (if (and (string-match-p "\n" str) (not (string-match-p "^{aidermacs\n.*\naidermacs}$" str))) (format "{aidermacs\n%s\naidermacs}" str) @@ -355,7 +358,9 @@ wrap it in {aidermacs\nstr\naidermacs}. Otherwise return STR unchanged." ;;;###autoload (defun aidermacs-act-on-current-file (command-prefix) - "Send the command \"COMMAND-PREFIX <current buffer file full path>\" to the corresponding aidermacs comint buffer." + "Send a command with the current file path to the aidermacs buffer. +COMMAND-PREFIX is the command to prepend to the file path. +The full command will be \"COMMAND-PREFIX <current buffer file full path>\"." ;; Ensure the current buffer is associated with a file (if (not buffer-file-name) (message "Current buffer is not associated with a file.") @@ -377,7 +382,7 @@ wrap it in {aidermacs\nstr\naidermacs}. Otherwise return STR unchanged." ;; Function to send a custom command to corresponding aidermacs buffer ;;;###autoload (defun aidermacs-general-command () - "Prompt the user to input COMMAND and send it to the corresponding aidermacs comint buffer." + "Prompt the user to input COMMAND and send it to the aidemracs." (interactive) (let ((command (aidermacs-read-string "Enter general aider command: "))) ;; Use the shared helper function to send the command @@ -386,17 +391,18 @@ wrap it in {aidermacs\nstr\naidermacs}. Otherwise return STR unchanged." ;; New function to get command from user and send it prefixed with "/code " ;;;###autoload (defun aidermacs-code-change () - "Prompt the user for a command and send it to the corresponding aidermacs comint buffer prefixed with \"/code \"." + "Prompt the user for an input and send it to aidemracs prefixed with \"/code \"." (interactive) (when-let ((command (aidermacs--form-prompt "/code" "Code change" t))) (aidermacs--send-command command t))) (defun aidermacs--parse-ls-output (output) - "Parse the /ls command OUTPUT to extract files in chat. -After the \"Files in chat:\" header, each subsequent line that begins with -whitespace is processed. The first non-whitespace token is taken as the file name. -Relative paths are resolved using the repository root (if available) or -`default-directory`. Only files that exist on disk are included in the result. + "Parse the /ls command output to extract files in chat. +OUTPUT is the text returned by the /ls command. After the \"Files in chat:\" +header, each subsequent line that begins with whitespace is processed. +The first non-whitespace token is taken as the file name. Relative paths are +resolved using the repository root (if available) or `default-directory`. +Only files that exist on disk are included in the result. Returns a deduplicated list of such file names." (when output (with-temp-buffer @@ -494,7 +500,7 @@ Sends the \"/ls\" command and returns the list of files via callback." ;;;###autoload (defun aidermacs-ask-question () - "Prompt the user for a command and send it to the corresponding aidermacs comint buffer prefixed with \"/ask \". + "Prompt the user for a question. If a region is active, append the region text to the question. If cursor is inside a function, include the function name as context." (interactive) @@ -508,29 +514,28 @@ If cursor is inside a function, include the function name as context." ;;;###autoload (defun aidermacs-ask-question-general () - "Prompt the user for a general question and send it to the corresponding aidermacs comint buffer prefixed with \"/ask \"." + "Prompt the user for a general question and send it to aidemracs prefixed with \"/ask \"." (interactive) (when-let ((command (aidermacs--form-prompt "/ask" "Ask general question" t))) (aidermacs--send-command command t))) ;;;###autoload (defun aidermacs-help () - "Prompt the user for a command and send it to the corresponding aidermacs comint buffer prefixed with \"/help \"." + "Prompt the user for an input and send it to aidemracs prefixed with \"/help \"." (interactive) (when-let ((command (aidermacs--form-prompt "/help" nil t))) (aidermacs--send-command command t))) ;;;###autoload (defun aidermacs-architect-discussion () - "Prompt the user for a command and send it to the corresponding aidermacs comint buffer prefixed with \"/architect \"." + "Prompt the user for an input and send it to aidemracs prefixed with \"/architect \"." (interactive) (when-let ((command (aidermacs--form-prompt "/architect" "Architect Discussion"))) (aidermacs--send-command command t))) ;;;###autoload (defun aidermacs-debug-exception () - "Prompt the user for a command and send it to the corresponding aidermacs comint buffer prefixed with \"/debug \", -replacing all newline characters except for the one at the end." + "Prompt the user for an input and send it to aidemracs prefixed with \"/debug \"." (interactive) (when-let ((user-command (aidermacs--form-prompt "/ask" "Enter exception, can be multiple lines"))) (let ((command (concat "/ask Investigate the following exception, with current added files as context: " user-command))) @@ -538,7 +543,7 @@ replacing all newline characters except for the one at the end." ;;;###autoload (defun aidermacs-go-ahead () - "Send the command \"go ahead\" to the corresponding aidermacs comint buffer." + "Send the command \"go ahead\" to the aidemracs." (interactive) (aidermacs--send-command "go ahead" t)) @@ -560,6 +565,7 @@ If Magit is not installed, report that it is required." ;;;###autoload (defun aidermacs--form-prompt (command prompt-prefix &optional ignore-context) "Get command based on context with COMMAND and PROMPT-PREFIX. +COMMAND is the text to prepend. PROMPT-PREFIX is the text to add after COMMAND. If IGNORE-CONTEXT is non-nil, skip function and region context. If region is active, use that region's text. If point is in a function, use function name." @@ -603,17 +609,19 @@ If point is in a function, explain that function." (line-end-position))) (prompt (format "/ask Please explain what '%s' means in the context of this code line: %s" symbol line))) - (aidermacs-add-current-file) + (aidermacs-add-current-file) (aidermacs--send-command prompt t))) (defun aidermacs-send-command-with-prefix (prefix command) - "Send COMMAND to the aidermacs buffer prefixed with PREFIX." + "Send COMMAND to the aidermacs buffer with PREFIX. +PREFIX is the text to prepend. COMMAND is the text to send." (aidermacs-add-current-file) (aidermacs--send-command (concat prefix command) t)) (defun aidermacs--add-files-helper (files read-only &optional message) - "Helper function to add FILES with READ-ONLY flag. -Optional MESSAGE can override the default success message." + "Helper function to add files with read-only flag. +FILES is a list of file paths to add. READ-ONLY determines if files are added +as read-only. Optional MESSAGE can override the default success message." (let* ((cmd (if read-only "/read-only" "/add")) (files (delq nil files))) (if files @@ -629,7 +637,7 @@ Optional MESSAGE can override the default success message." ;;;###autoload (defun aidermacs-add-current-file (&optional read-only) "Add current file with optional READ-ONLY flag. -With prefix argument C-u, add as read-only." +With prefix argument `C-u', add as read-only." (interactive "P") (aidermacs--add-files-helper (if buffer-file-name (list buffer-file-name) nil) @@ -642,7 +650,7 @@ With prefix argument C-u, add as read-only." ;;;###autoload (defun aidermacs-add-files-in-current-window (&optional read-only) "Add window files with READ-ONLY flag. -With prefix argument C-u, add as read-only." +With prefix argument `C-u', add as read-only." (interactive "P") (let* ((files (mapcar (lambda (buffer) (with-current-buffer buffer @@ -654,8 +662,8 @@ With prefix argument C-u, add as read-only." ;;;###autoload (defun aidermacs-batch-add-dired-marked-files (&optional read-only) - "Add dired files with READ-ONLY flag. -With prefix argument C-u, add as read-only." + "Add Dired files with READ-ONLY flag. +With prefix argument `C-u', add as read-only." (interactive "P") (aidermacs--add-files-helper (dired-get-marked-files) read-only)) @@ -663,7 +671,7 @@ With prefix argument C-u, add as read-only." (defun aidermacs-add-files-interactively (&optional read-only) "Add files to aidermacs by interactively selecting them using `find-file`. Multiple files can be selected by calling the command multiple times. -With prefix argument C-u, add as read-only." +With prefix argument `C-u', add as READ-ONLY." (interactive "P") (when-let ((file (expand-file-name (read-file-name "Select file to add: ")))) (when (file-exists-p file) @@ -671,9 +679,9 @@ With prefix argument C-u, add as read-only." ;;;###autoload (defun aidermacs-add-same-type-files-under-dir (&optional read-only) - "Add all files with same suffix as current file under current directory to aidermacs. + "Add all files with same suffix as current file under current directory. If there are more than 40 files, refuse to add and show warning message. -With prefix argument C-u, add as read-only." +With prefix argument `C-u', add as READ-ONLY." (interactive "P") (if (not buffer-file-name) (message "Current buffer is not visiting a file") @@ -789,8 +797,7 @@ Otherwise, send the line under cursor." ;;;###autoload (defun aidermacs-send-region-by-line () - "Get the text of the current selected region, split into lines, -and send each non-empty line to aidermacs session." + "Send the text of the current selected region, split into lines." (interactive) (if (use-region-p) (let* ((text (buffer-substring-no-properties (region-beginning) (region-end))) @@ -873,7 +880,7 @@ These are exact filename matches (including the dot prefix)." :group 'aidermacs) (defun aidermacs--should-enable-minor-mode-p (filename) - "Determine if aidermacs-minor-mode should be enabled for FILENAME. + "Determine if `aidermacs-minor-mode' should be enabled for FILENAME. Returns t if the file matches any of the patterns in `aidermacs-auto-mode-files'." (when filename (let ((base-name (file-name-nondirectory filename)))