File 2106-Add-shell-mm-and-lm-functions.patch of Package erlang

From a4d665795bb744f516e6fe36b97c38e123f8b706 Mon Sep 17 00:00:00 2001
From: Richard Carlsson <richardc@klarna.com>
Date: Mon, 21 Nov 2016 21:17:21 +0100
Subject: [PATCH 6/7] Add shell mm() and lm() functions

---
 lib/stdlib/doc/src/c.xml         | 18 ++++++++++++++++++
 lib/stdlib/src/c.erl             | 14 +++++++++++++-
 lib/stdlib/src/shell_default.erl |  4 +++-
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/lib/stdlib/doc/src/c.xml b/lib/stdlib/doc/src/c.xml
index 92ab59c..55a77d1 100644
--- a/lib/stdlib/doc/src/c.xml
+++ b/lib/stdlib/doc/src/c.xml
@@ -148,6 +148,15 @@ compile:file(<anno>File</anno>, <anno>Options</anno> ++ [report_errors, report_w
     </func>
 
     <func>
+      <name name="lm" arity="0"/>
+      <fsummary>Loads all modified modules.</fsummary>
+      <desc>
+        <p>Reloads all currently loaded modules that have changed on disk (see <c>mm()</c>).
+        Returns the list of results from calling <c>l(M)</c> for each such <c>M</c>.</p>
+      </desc>
+    </func>
+
+    <func>
       <name name="ls" arity="0"/>
       <fsummary>List files in the current directory.</fsummary>
       <desc>
@@ -182,6 +191,15 @@ compile:file(<anno>File</anno>, <anno>Options</anno> ++ [report_errors, report_w
     </func>
 
     <func>
+      <name name="mm" arity="0"/>
+      <fsummary>Lists all modified modules.</fsummary>
+      <desc>
+        <p>Lists all modified modules. Shorthand for
+        <seealso marker="kernel:code#modified_modules/0"><c>code:modified_modules/0</c></seealso>.</p>
+      </desc>
+    </func>
+
+    <func>
       <name name="memory" arity="0"/>
       <fsummary>Memory allocation information.</fsummary>
       <desc>
diff --git a/lib/stdlib/src/c.erl b/lib/stdlib/src/c.erl
index ad4915e..d366302 100644
--- a/lib/stdlib/src/c.erl
+++ b/lib/stdlib/src/c.erl
@@ -26,7 +26,7 @@
 -export([help/0,lc/1,c/1,c/2,nc/1,nc/2, nl/1,l/1,i/0,i/1,ni/0,
          y/1, y/2,
 	 lc_batch/0, lc_batch/1,
-	 i/3,pid/3,m/0,m/1,
+	 i/3,pid/3,m/0,m/1,mm/0,lm/0,
 	 bt/1, q/0,
 	 erlangrc/0,erlangrc/1,bi/1, flush/0, regs/0, uptime/0,
 	 nregs/0,pwd/0,ls/0,ls/1,cd/1,memory/1,memory/0, xm/1]).
@@ -52,11 +52,13 @@ help() ->
 		   "ni()       -- information about the networked system\n"
 		   "i(X,Y,Z)   -- information about pid <X,Y,Z>\n"
 		   "l(Module)  -- load or reload module\n"
+		   "lm()       -- load all modified modules\n"
 		   "lc([File]) -- compile a list of Erlang modules\n"
 		   "ls()       -- list files in the current directory\n"
 		   "ls(Dir)    -- list files in directory <Dir>\n"
 		   "m()        -- which modules are loaded\n"
 		   "m(Mod)     -- information about module <Mod>\n"
+		   "mm()       -- list all modified modules\n"
 		   "memory()   -- memory allocation information\n"
 		   "memory(T)  -- memory allocation information of type <T>\n"
 		   "nc(File)   -- compile and load code in <File> on all nodes\n"
@@ -459,6 +461,16 @@ m() ->
 mformat(A1, A2) ->
     format("~-20s  ~ts\n", [A1,A2]).
 
+-spec mm() -> [module()].
+
+mm() ->
+    code:modified_modules().
+
+-spec lm() -> [code:load_ret()].
+
+lm() ->
+    [l(M) || M <- mm()].
+
 %% erlangrc(Home)
 %%  Try to run a ".erlang" file, first in the current directory
 %%  else in home directory.
diff --git a/lib/stdlib/src/shell_default.erl b/lib/stdlib/src/shell_default.erl
index 6947cf1..cd63ab2 100644
--- a/lib/stdlib/src/shell_default.erl
+++ b/lib/stdlib/src/shell_default.erl
@@ -23,7 +23,7 @@
 
 -module(shell_default).
 
--export([help/0,lc/1,c/1,c/2,nc/1,nl/1,l/1,i/0,pid/3,i/3,m/0,m/1,
+-export([help/0,lc/1,c/1,c/2,nc/1,nl/1,l/1,i/0,pid/3,i/3,m/0,m/1,lm/0,mm/0,
          memory/0,memory/1,uptime/0,
 	 erlangrc/1,bi/1, regs/0, flush/0,pwd/0,ls/0,ls/1,cd/1, 
          y/1, y/2,
@@ -83,6 +83,8 @@ ls()            -> c:ls().
 ls(S)           -> c:ls(S).
 m() 		-> c:m().
 m(Mod) 		-> c:m(Mod).
+lm()            -> c:lm().
+mm()            -> c:mm().
 memory()        -> c:memory().
 memory(Type)    -> c:memory(Type).
 nc(X)     	-> c:nc(X).
-- 
2.10.2

openSUSE Build Service is sponsored by