Dear AUCTeX developers,

I am writing to report and seek clarification on a persistent issue
with the cyclic function indirection error related to `context-mode`
and `ConTeXt-mode` in AUCTeX.

## Issue Description

When using AUCTeX with straight.el package manager, I consistently
encounter the following error during startup:

```
Debugger entered--Lisp error: (cyclic-function-indirection context-mode)
  defalias(context-mode ConTeXt-mode)
  eval((defalias 'context-mode #'ConTeXt-mode))
  straight--activate-package-autoloads(...)
```

## Environment

- Emacs version: 31.0.50 (development version)
- AUCTeX source: Git repository (https://git.savannah.gnu.org/git/auctex.git)
- Package manager: straight.el
- OS: Ubuntu 22.04.4 LTS

## Root Cause

The issue appears to be in the `auctex-autoloads.el` file,
specifically this line:

```elisp
(defalias 'context-mode #'ConTeXt-mode)
```

This creates a circular reference when the autoloads are processed, as
`ConTeXt-mode` itself is defined as an autoload that hasn't been
loaded yet.

## Relationship to Previous Bug Reports

I noticed this appears to be related to bug#68998 and bug#69081. While
bug#68998 was closed with a workaround for the upgrade process (using
`emacs -Q`), the underlying cyclic function indirection issue seems to
persist in daily usage scenarios.

## Current Workaround

I am currently using this workaround in my straight.el configuration:

```elisp
(use-package auctex
  :straight (:type git :host nil :repo
"https://git.savannah.gnu.org/git/auctex.git";
             :pre-build (("make"))
             :post-build (("sed" "-i" "/^(defalias 'context-mode
#'ConTeXt-mode)$/d" "auctex-autoloads.el"))
             :files (:defaults "doc/*"))
  ;; ... rest of configuration
  )
```

This removes the problematic defalias line after each build, which
resolves the issue.

## Questions

1. Is this a known ongoing issue, or should the cyclic reference
problem have been resolved?

2. Would it be appropriate to modify the autoload generation to handle
this defalias more safely, perhaps with a conditional check like:
   ```elisp
   (when (fboundp 'ConTeXt-mode)
     (defalias 'context-mode #'ConTeXt-mode))
   ```

3. Is there a recommended approach for package managers like
straight.el to handle this issue without manual post-build
modifications?

## Additional Context

This issue affects not just the initial loading but also functionality
like `M-x` completion in some configurations, as reported by other
users in the Emacs community.

Thank you for your excellent work on AUCTeX. I would be happy to
provide additional debugging information or test potential fixes.

Best regards,
Zhao
-- 
Assoc. Prof. Hongsheng Zhao <hongyi.z...@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
No. 473, Quannan West Street, Xindu District, Xingtai, Hebei province

Reply via email to