From 72fafa730262edeba6b187fee863d442bee07e6b Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Wed, 24 Dec 2025 14:36:22 +0100 Subject: [PATCH] update erlang --- .../erlang-autoloads.el | 0 .../erlang-edoc.el | 0 .../erlang-eunit.el | 11 ++- .../erlang-flymake.el | 7 +- .../erlang-pkg.el | 6 +- .../erlang-skels-old.el | 2 +- .../erlang-skels.el | 16 +++- .../erlang-start.el | 2 +- .../erlang-test.el | 48 ++++++----- .../erlang.el | 85 +++++++++---------- .../erldoc.el | 0 11 files changed, 94 insertions(+), 83 deletions(-) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-autoloads.el (100%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-edoc.el (100%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-eunit.el (98%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-flymake.el (96%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-pkg.el (63%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-skels-old.el (99%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-skels.el (99%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-start.el (99%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang-test.el (84%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erlang.el (99%) rename elpa/{erlang-20250520.1119 => erlang-20250827.800}/erldoc.el (100%) diff --git a/elpa/erlang-20250520.1119/erlang-autoloads.el b/elpa/erlang-20250827.800/erlang-autoloads.el similarity index 100% rename from elpa/erlang-20250520.1119/erlang-autoloads.el rename to elpa/erlang-20250827.800/erlang-autoloads.el diff --git a/elpa/erlang-20250520.1119/erlang-edoc.el b/elpa/erlang-20250827.800/erlang-edoc.el similarity index 100% rename from elpa/erlang-20250520.1119/erlang-edoc.el rename to elpa/erlang-20250827.800/erlang-edoc.el diff --git a/elpa/erlang-20250520.1119/erlang-eunit.el b/elpa/erlang-20250827.800/erlang-eunit.el similarity index 98% rename from elpa/erlang-20250520.1119/erlang-eunit.el rename to elpa/erlang-20250827.800/erlang-eunit.el index d325de06..25e5e595 100644 --- a/elpa/erlang-20250520.1119/erlang-eunit.el +++ b/elpa/erlang-20250827.800/erlang-eunit.el @@ -1,4 +1,4 @@ -;;; -*- Emacs-Lisp -*- +;;; erlang-eunit.el -*- lexical-binding: t; -*- ;; %CopyrightBegin% ;; @@ -220,11 +220,11 @@ buffer and vice versa" With prefix arg, compiles for debug and runs tests with the verbose flag set." (interactive) (cl-case (erlang-eunit-recent 'mode) - ('test-mode + (test-mode (erlang-eunit-compile-and-test 'erlang-eunit-run-test (list (erlang-eunit-recent 'module) (erlang-eunit-recent 'test)))) - ('module-mode + (module-mode (erlang-eunit-compile-and-test 'erlang-eunit-run-module-tests (list (erlang-eunit-recent 'module)) (erlang-eunit-recent 'cover))) @@ -258,8 +258,7 @@ code along with the coverage analysis results." (erlang-eunit-module-name buffer-file-name))) (tmp-filename (make-temp-file "cover")) (analyze-command (format "cover:analyze_to_file(%s, \"%s\"). " - module-name tmp-filename)) - (buf-name (format "*%s coverage*" module-name))) + module-name tmp-filename))) (erlang-eunit-inferior-erlang-send-command analyze-command) ;; The purpose of the following snippet is to get the result of the ;; analysis from a file into a new buffer (or an old, if one with @@ -379,7 +378,7 @@ With prefix arg, compiles for debug and runs tests with the verbose flag set." (defun erlang-eunit-last-compilation-successful-p () (with-current-buffer inferior-erlang-buffer - (goto-char compilation-parsing-end) + (goto-char erlang-compilation-parsing-end) (erlang-eunit-all-list-elems-fulfill-p (lambda (re) (let ((continue t) (result t)) diff --git a/elpa/erlang-20250520.1119/erlang-flymake.el b/elpa/erlang-20250827.800/erlang-flymake.el similarity index 96% rename from elpa/erlang-20250520.1119/erlang-flymake.el rename to elpa/erlang-20250827.800/erlang-flymake.el index 07eb6d93..e49367ae 100644 --- a/elpa/erlang-20250520.1119/erlang-flymake.el +++ b/elpa/erlang-20250827.800/erlang-flymake.el @@ -1,4 +1,4 @@ -;;; -*- Emacs-Lisp -*- +;;; erlang-flymake.el -*- lexical-binding: t; -*- ;;; ;;; %CopyrightBegin% ;;; @@ -43,6 +43,8 @@ ;; This code is inspired by http://www.emacswiki.org/emacs/FlymakeErlang. (require 'flymake) +(require 'flymake-proc nil 'noerror) + (eval-when-compile (require 'cl-lib)) @@ -73,8 +75,7 @@ check on newline and when there are no changes)." ;; There doesn't seem to be a way of disabling this; set to the ;; largest int available as a workaround (most-positive-fixnum ;; equates to 8.5 years on my machine, so it ought to be enough ;-) ) - (setq flymake-no-changes-timeout most-positive-fixnum) - (setq flymake-start-syntax-check-on-newline nil)) + (setq flymake-no-changes-timeout most-positive-fixnum)) (defun erlang-flymake-get-code-path-dirs () diff --git a/elpa/erlang-20250520.1119/erlang-pkg.el b/elpa/erlang-20250827.800/erlang-pkg.el similarity index 63% rename from elpa/erlang-20250520.1119/erlang-pkg.el rename to elpa/erlang-20250827.800/erlang-pkg.el index 7e33afe6..a9395f6d 100644 --- a/elpa/erlang-20250520.1119/erlang-pkg.el +++ b/elpa/erlang-20250827.800/erlang-pkg.el @@ -1,8 +1,8 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "erlang" "20250520.1119" +(define-package "erlang" "20250827.800" "Major modes for editing and running Erlang." '((emacs "24.3")) :url "https://github.com/erlang/otp" - :commit "9e6f6742c4d9e9915ee8af0dcb7d97cf1f836116" - :revdesc "9e6f6742c4d9" + :commit "ed8445a63861f510d21e27c9122e4fafa8039d9d" + :revdesc "ed8445a63861" :keywords '("erlang" "languages" "processes")) diff --git a/elpa/erlang-20250520.1119/erlang-skels-old.el b/elpa/erlang-20250827.800/erlang-skels-old.el similarity index 99% rename from elpa/erlang-20250520.1119/erlang-skels-old.el rename to elpa/erlang-20250827.800/erlang-skels-old.el index 36f1d741..ade95de7 100644 --- a/elpa/erlang-20250520.1119/erlang-skels-old.el +++ b/elpa/erlang-20250827.800/erlang-skels-old.el @@ -1,4 +1,4 @@ -;;; -*- Emacs-Lisp -*- +;;; erlang-skels-old.el -*- lexical-binding: t; -*- ;; %CopyrightBegin% ;; diff --git a/elpa/erlang-20250520.1119/erlang-skels.el b/elpa/erlang-20250827.800/erlang-skels.el similarity index 99% rename from elpa/erlang-20250520.1119/erlang-skels.el rename to elpa/erlang-20250827.800/erlang-skels.el index 8bca9b0e..e118b00b 100644 --- a/elpa/erlang-20250520.1119/erlang-skels.el +++ b/elpa/erlang-20250827.800/erlang-skels.el @@ -1,4 +1,4 @@ -;;; -*- Emacs-Lisp -*- +;;; erlang-skels.el -*- lexical-binding: t; -*- ;; %CopyrightBegin% ;; @@ -24,6 +24,10 @@ ;;; Purpose: Provide Erlang code skeletons. ;;; See 'erlang-skel-file' variable. +;; (eval-when-compile +;; (let ((erlang-skels-loading-for-compilation t)) +;; (load "erlang"))) + (defvar erlang-tempo-tags nil "Tempo tags for erlang mode") @@ -1957,6 +1961,16 @@ Please see the function `tempo-define-template'.") ;; This code is based on the package `tempo' which is part of modern ;; Emacsen. (GNU Emacs 19.25 (?) and XEmacs 19.14.) +(declare-function erlang-menu-init "erlang") +(declare-function erlang-menu-add-above "erlang") +(declare-function erlang-beginning-of-function "erlang") +(declare-function erlang-get-function-name "erlang") +(declare-function erlang-get-function-arguments "erlang") + +;; Forward declarations +(defvar erlang-menu-items) +(defvar erlang-menu-skel-items) + (defun erlang-skel-init () "Generate the skeleton functions and menu items. The variable `erlang-skel' contains the name and descriptions of diff --git a/elpa/erlang-20250520.1119/erlang-start.el b/elpa/erlang-20250827.800/erlang-start.el similarity index 99% rename from elpa/erlang-20250520.1119/erlang-start.el rename to elpa/erlang-20250827.800/erlang-start.el index 8b3e604a..6232af0c 100644 --- a/elpa/erlang-20250520.1119/erlang-start.el +++ b/elpa/erlang-20250827.800/erlang-start.el @@ -1,4 +1,4 @@ -;;; erlang-start.el --- Load this file to initialize the Erlang package. +;;; erlang-start.el --- Load this file to initialize the Erlang package. -*- lexical-binding: t; -*- ;; %CopyrightBegin% ;; diff --git a/elpa/erlang-20250520.1119/erlang-test.el b/elpa/erlang-20250827.800/erlang-test.el similarity index 84% rename from elpa/erlang-20250520.1119/erlang-test.el rename to elpa/erlang-20250827.800/erlang-test.el index 9efa4d25..0d44e5b4 100644 --- a/elpa/erlang-20250520.1119/erlang-test.el +++ b/elpa/erlang-20250827.800/erlang-test.el @@ -223,28 +223,34 @@ concatenated to form an erlang file to test on.") erlang)) + (ert-deftest erlang-test-parse-id () - (cl-loop for id-string in '("fun/10" - "qualified-function module:fun/10" - "record reko" - "macro _SYMBOL" - "macro MACRO/10" - "module modula" - "macro" - nil) - for id-list in '((nil nil "fun" 10) - (qualified-function "module" "fun" 10) - (record nil "reko" nil) - (macro nil "_SYMBOL" nil) - (macro nil "MACRO" 10) - (module nil "modula" nil) - (nil nil "macro" nil) - nil) - for id-list2 = (erlang-id-to-list id-string) - do (should (equal id-list id-list2)) - for id-string2 = (erlang-id-to-string id-list) - do (should (equal id-string id-string2)) - collect id-list2)) + ;; Put it in a lambda to make it work on new (and old) versions + ;; (with-suppressed-warnings ((ignored-return-value nreverse)) + ;; don't exist on emacs 26. + (let ((dotest (lambda () + (cl-loop for id-string in '("fun/10" + "qualified-function module:fun/10" + "record reko" + "macro _SYMBOL" + "macro MACRO/10" + "module modula" + "macro" + nil) + for id-list in '((nil nil "fun" 10) + (qualified-function "module" "fun" 10) + (record nil "reko" nil) + (macro nil "_SYMBOL" nil) + (macro nil "MACRO" 10) + (module nil "modula" nil) + (nil nil "macro" nil) + nil) + for id-list2 = (erlang-id-to-list id-string) + do (should (equal id-list id-list2)) + for id-string2 = (erlang-id-to-string id-list) + do (should (equal id-string id-string2)) + collect id-list2)))) + (funcall dotest))) (provide 'erlang-test) diff --git a/elpa/erlang-20250520.1119/erlang.el b/elpa/erlang-20250827.800/erlang.el similarity index 99% rename from elpa/erlang-20250520.1119/erlang.el rename to elpa/erlang-20250827.800/erlang.el index 1550c082..45fbaae9 100644 --- a/elpa/erlang-20250520.1119/erlang.el +++ b/elpa/erlang-20250827.800/erlang.el @@ -24,8 +24,8 @@ ;; Author: Anders Lindgren ;; Keywords: erlang, languages, processes ;; Date: 2011-12-11 -;; Package-Version: 20250520.1119 -;; Package-Revision: 9e6f6742c4d9 +;; Package-Version: 20250827.800 +;; Package-Revision: ed8445a63861 ;; Package-Requires: ((emacs "24.3")) ;; Lars Thorsén's modifications of 2000-06-07 included. @@ -82,6 +82,7 @@ (require 'comint) (require 'tempo) (require 'cl-lib) +(require 'advice) ;;; `caddr' is builtin since Emacs 26. (eval-and-compile @@ -94,7 +95,7 @@ "The Erlang programming language." :group 'languages) -(defconst erlang-version "2.8.5" +(defconst erlang-version "2.8.6" "The version number of Erlang mode.") (defcustom erlang-root-dir nil @@ -579,6 +580,10 @@ command. The FUNCTION will be called with two arguments: module name and default compilation options, like output directory. The FUNCTION is expected to return a string.") +(defvar erlang-compilation-parsing-end nil + "The position after last compilation command") + + (defvar erlang-leex-compile-opts '() "Options to pass to leex when compiling xrl files. This is an elisp list of options. Each option can be either: @@ -1266,7 +1271,7 @@ This must be placed in front of `erlang-font-lock-keywords-vars'.") "Font lock keyword highlighting Erlang variables. Must be preceded by `erlang-font-lock-keywords-macros' to work properly.") -(defvar erlang-font-lock-descr-string +(defmacro erlang-font-lock-descr-string () "Font-lock keywords used by Erlang Mode. There exists three levels of Font Lock keywords for Erlang: @@ -1290,7 +1295,7 @@ Example: erlang-font-lock-keywords-keywords ) ;; DocStringOrig: erlang-font-lock-keywords - erlang-font-lock-descr-string) + (erlang-font-lock-descr-string)) (defvar erlang-font-lock-keywords-2 (append erlang-font-lock-keywords-1 @@ -1301,7 +1306,7 @@ Example: erlang-font-lock-keywords-guards ) ;; DocStringCopy: erlang-font-lock-keywords - erlang-font-lock-descr-string) + (erlang-font-lock-descr-string)) (defvar erlang-font-lock-keywords-3 (append erlang-font-lock-keywords-2 @@ -1312,7 +1317,7 @@ Example: erlang-font-lock-keywords-predefined-types ) ;; DocStringCopy: erlang-font-lock-keywords - erlang-font-lock-descr-string) + (erlang-font-lock-descr-string)) (defvar erlang-font-lock-keywords-4 (append erlang-font-lock-keywords-3 @@ -1323,11 +1328,11 @@ Example: erlang-font-lock-keywords-lc ) ;; DocStringCopy: erlang-font-lock-keywords - erlang-font-lock-descr-string) + (erlang-font-lock-descr-string)) (defvar erlang-font-lock-keywords erlang-font-lock-keywords-4 ;; DocStringCopy: erlang-font-lock-keywords - erlang-font-lock-descr-string) + (erlang-font-lock-descr-string)) (defvar erlang-font-lock-syntax-table nil "Syntax table used by Font Lock mode. @@ -2395,9 +2400,6 @@ buffer more accurate." function-name module-name))) -;; Should the defadvice be at the top level, the package `advice' would -;; be required. Now it is only required when this functionality -;; is used. (Emacs 19 specific.) (defun erlang-man-patch-notify () "Patch the function `Man-notify-when-ready' to search for function. The variable `erlang-man-function-name' is assumed to be bound to @@ -2405,23 +2407,17 @@ the function name, or to nil. The reason for patching a function is that under Emacs 19, the man command is executed asynchronously." - (condition-case nil - (require 'advice) - ;; This should never happened since this is only called when - ;; running under Emacs 19. - (error (error (concat "This command needs the package `advice', " - "please upgrade your Emacs.")))) (require 'man) - (defadvice Man-notify-when-ready - (after erlang-Man-notify-when-ready activate) - "Set point at the documentation of the function name in -`erlang-man-function-name' when the man page is displayed." - (if erlang-man-function-name - (erlang-man-repeated-search-for-function (ad-get-arg 0) - erlang-man-function-name) - (setq erlang-man-function-name nil)))) - + (if (fboundp 'advice-add) + (advice-add 'Man-notify-when-ready :after + #'erlang-man-function-name-advice))) +(defun erlang-man-function-name-advice (arg) + "Set point at the documentation of the function name in +`erlang-man-function-name' when the man page is displayed." + (if erlang-man-function-name + (erlang-man-repeated-search-for-function arg erlang-man-function-name) + (setq erlang-man-function-name nil))) (defun erlang-man-find-function (buf func &optional module-name) @@ -5122,19 +5118,11 @@ for a tag on the form `module:tag'." ;;; completion-table' containing all normal tags plus tags on the form ;;; `module:tag' and `module:'. -(if (fboundp 'advice-add) - ;; Emacs 24.4+ - (progn - (require 'etags) - (advice-add 'etags-tags-completion-table :around - #'erlang-etags-tags-completion-table-advice)) - ;; Emacs 23.1-24.3 - (defadvice etags-tags-completion-table (around - erlang-replace-tags-table - activate) - (if erlang-replace-etags-tags-completion-table - (setq ad-return-value (erlang-etags-tags-completion-table)) - ad-do-it))) +(progn + (require 'etags) + (if (fboundp 'advice-add) + (advice-add 'etags-tags-completion-table :around + #'erlang-etags-tags-completion-table-advice))) (defun erlang-etags-tags-completion-table-advice (oldfun) (if erlang-replace-etags-tags-completion-table @@ -6130,7 +6118,7 @@ Return the position after the newly inserted command." (not (eq (point) (point-max)))) (delete-char 1) (or (bolp) - (backward-delete-char 1)))))) + (delete-char -1)))))) ;; Basically `comint-strip-ctrl-m', with a few extra checks. @@ -6184,9 +6172,9 @@ There exists two workarounds for this bug: (sit-for 0) (inferior-erlang-wait-prompt) (with-current-buffer inferior-erlang-buffer - (when (and (boundp 'compilation-error-list) (boundp 'compilation-parsing-end)) - (setq compilation-error-list nil) - (set-marker compilation-parsing-end end))) + (set-marker erlang-compilation-parsing-end end) + (when (boundp 'compilation-error-list) + (setq compilation-error-list nil))) (setq next-error-last-buffer inferior-erlang-buffer))) (defun inferior-erlang-prepare-for-input (&optional no-display) @@ -6409,9 +6397,12 @@ The default is to go to the directory of the current buffer." (match-string 0)))) (defconst erlang-unload-hook - (list (lambda () - (ad-unadvise 'Man-notify-when-ready) - (ad-unadvise 'set-visited-file-name)))) + (if (fboundp 'advice-remove) + (list (lambda () + (advice-remove 'Man-notify-when-ready + #'erlang-man-function-name-advice) + (advice-remove 'etags-tags-completion-table + #'erlang-etags-tags-completion-table-advice))))) ;; The end... diff --git a/elpa/erlang-20250520.1119/erldoc.el b/elpa/erlang-20250827.800/erldoc.el similarity index 100% rename from elpa/erlang-20250520.1119/erldoc.el rename to elpa/erlang-20250827.800/erldoc.el -- 2.47.3