Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Using ede-php-autoload with PHP-mode

Abierto
#256 14 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
emacs-lisp, php
Área
tooling

Línea de trabajo

Empieza revisando los puntos de integración de PHP-mode mostrados en el issue, especialmente php-mode-hook, php-mode-map y los ejemplos de uso de ede-php-autoload. El issue no define un cambio concreto ni pruebas; el trabajo solo se considera terminado después de acordar el comportamiento de integración deseado y las comprobaciones de aceptación.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

ede-php-autoload is a fantastic package that enables Emacs to understand the dependencies of PHP projects, the most immediate benefit of this is that Emacs can translate class names into files, for example allowing you to jump to the definition of a third-party package with the flick of a button.

The package provides PSR-0 and PSR-4 autoload capabilities to the SemanticDB Emacs subsystem and it can be either used as part of the Semantic parsing system, or with some customisation as a standalone package that doesn't require semantic-mode to be active on your php buffers.

Since ede-php-autoload is by nature designed to work in conjunction with semantic PHP parsers, here's a couple of implementations that's worth knowing about:

I personally am using ede-php-autoload without semantic-mode so I've hacked a function that uses it to jump to the declaration of a class imported with use.

(defun ofc/tags-find-at-point ()
  "Finds the definitions of the symbol at point using a tag file."
  (interactive)
  (xref-find-definitions (thing-at-point 'sexp)))

(defun ofc/visit-class-file-at-point ()
  "Maps a FQN into a file name using PHP autoload resolution."
  (interactive)
  (let* ((class-name (replace-regexp-in-string "^\\\\" "" (thing-at-point 'sexp)))
         (class-file (ede-php-autoload-find-class-def-file (ede-current-project) class-name)))
    (when class-file
      (xref-push-marker-stack)
      (find-file class-file))))

(defun ofc/php-tags-find-at-point ()
  "When called on a FQN, it resolves its name and jumps to the file where it's defined.
When called on anything else it forwards the call to a tag search function."
  (interactive)
  (unless (ofc/visit-class-file-at-point)
    (ofc/tags-find-at-point)))

(global-ede-mode 1)
(add-hook 'php-mode-hook #'ede-php-autoload-mode)
(define-key php-mode-map (kbd "M-.") 'ofc/php-tags-find-at-point)

I would be interested in knowing how @jorissteyn and @stevenremot are using it.

Lenguaje dominante
Emacs Lisp
Estrellas
604
Forks
117
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de emacs-php/php-mode

Todos los issues de emacs-php/php-mode

Issues similares

Más issues de DevTools

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.