This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository efm2.

View the commit online.

commit 4d676847f2b10dfb29ef5813edb9be7860da5ed9
Author: Carsten Haitzler (Rasterman) <[email protected]>
AuthorDate: Wed Feb 4 19:10:07 2026 +0000

    start with built-in typebuf cmds
    
    ls, rm, unlink, mv, cp, ln, cd
    
    ls and cd are implemented.
    
    need to add soem hilighitng of args like -abc options
    need to hilight argument paths like raw path mode in tyopebuf
    need to handle complete in open.c for command args
---
 src/backends/default/open.c | 117 ++++++++++++++++++++++++++++++++++----------
 src/efm/efm_typebuf.c       |  10 ++--
 2 files changed, 98 insertions(+), 29 deletions(-)

diff --git a/src/backends/default/open.c b/src/backends/default/open.c
index 61a9201..c127e20 100644
--- a/src/backends/default/open.c
+++ b/src/backends/default/open.c
@@ -18,11 +18,6 @@
 #include <grp.h>
 
 #include "cmd.h"
-#include "efreet_desktop.h"
-#include "eina_hash.h"
-#include "eina_list.h"
-#include "eina_strbuf.h"
-#include "eina_types.h"
 #include "sha.h"
 #include "meta.h"
 #include "thumb_check.h"
@@ -733,6 +728,16 @@ _file_add_mod_meta_append(const char *path, const char *meta, const char *key,
   eina_stringshare_del(s);
 }
 
+static void
+_cmd_typebuf_icon_send(const char *icon)
+{
+  Eina_Strbuf *strbuf = cmd_strbuf_new("typebuf-icon");
+
+  if (!strbuf) return;
+  cmd_strbuf_append(strbuf, "icon", icon);
+  cmd_strbuf_print_consume(strbuf);
+}
+
 static void
 _file_add_mod_desktop_fields_append(Eina_Strbuf *strbuf, Efreet_Desktop *d,
                                     const char *key_prefix, const char *path,
@@ -1344,6 +1349,33 @@ _meta_update(const char *path)
   _file_mod(path);
 }
 
+static void
+_typebuf_cd(const char *dest)
+{
+  Eina_Strbuf *strbuf = cmd_strbuf_new("dir-request");
+  Eina_Strbuf *strbuf2 = NULL;
+  const char  *mondir  = ecore_file_monitor_path_get(mon);
+  char        *path;
+
+  if (!strbuf) return;
+  if ((!mondir) || (!dest) || (!dest[0])) goto done;
+  strbuf2 = eina_strbuf_new();
+  if (!strbuf2) goto done;
+  eina_strbuf_append_printf(strbuf2, "%s/%s", mondir, dest);
+  fprintf(stderr, "XXX: GO TO [%s]\n", eina_strbuf_string_get(strbuf2));
+  path = ecore_file_realpath(eina_strbuf_string_get(strbuf2));
+  eina_strbuf_free(strbuf2);
+  if (path)
+    {
+      cmd_strbuf_append(strbuf, "path", path);
+      cmd_strbuf_print_consume(strbuf);
+      free(path);
+      return;
+    }
+done:
+  eina_strbuf_free(strbuf);
+}
+
 void
 do_handle_cmd(Cmd *c)
 {
@@ -1639,7 +1671,7 @@ do_handle_cmd(Cmd *c)
 
       // XXX: now handle typebuf commands in the backend
       // XXX: if its a valid cmd - tell front end
-      op = cmd_key_find(c, "op");
+      op = cmd_key_find(c, "op"); // "update", "complete", "run", "cursor"
       line_str = cmd_key_find(c, "line");
       cpos_str = cmd_key_find(c, "cursor-pos");
 
@@ -1647,13 +1679,55 @@ do_handle_cmd(Cmd *c)
       if (line_str) args = eina_str_split(line_str, " ", -1);
       if (args)
         {
-          if (!strcmp(args[0], "rm"))
+          if (!strcmp(args[0], "ls"))
             {
-              Eina_Strbuf *strbuf = cmd_strbuf_new("typebuf-icon");
-              if (strbuf)
+              _cmd_typebuf_icon_send("std:view-refresh");
+              if ((op) && (!strcmp(op, "run")))
                 {
-                  cmd_strbuf_append(strbuf, "icon", "std:edit-delete");
-                  cmd_strbuf_print_consume(strbuf);
+                  if (args[1]) _typebuf_cd(args[1]);
+                  else
+                    {
+                      Eina_Strbuf *strbuf = cmd_strbuf_new("view-refresh");
+                      cmd_strbuf_print_consume(strbuf);
+                    }
+                }
+            }
+          else if (!strcmp(args[0], "rm"))
+            {
+              _cmd_typebuf_icon_send("std:edit-delete");
+//              _op_run("trash", files, NULL);
+            }
+          else if (!strcmp(args[0], "unlink"))
+            {
+              _cmd_typebuf_icon_send("std:edit-delete");
+//              _op_run("rm", files, NULL);
+            }
+          else if (!strcmp(args[0], "mv"))
+            {
+              _cmd_typebuf_icon_send("std:edit-rename");
+//              _op_run("mv", files, NULL);
+            }
+          else if (!strcmp(args[0], "cp"))
+            {
+              _cmd_typebuf_icon_send("std:edit-copy");
+//              _op_run("cp", files, NULL);
+            }
+          else if (!strcmp(args[0], "ln"))
+            {
+              _cmd_typebuf_icon_send("std:insert-link");
+//              _op_run("ln", files, NULL);
+            }
+          else if (!strcmp(args[0], "cd"))
+            {
+              _cmd_typebuf_icon_send("std:folder");
+              if ((op) && (!strcmp(op, "run")))
+                {
+                  if (args[1]) _typebuf_cd(args[1]);
+                  else
+                    {
+                      Eina_Strbuf *strbuf = cmd_strbuf_new("view-refresh");
+                      cmd_strbuf_print_consume(strbuf);
+                    }
                 }
             }
           else
@@ -1662,23 +1736,16 @@ do_handle_cmd(Cmd *c)
 
               if (d)
                 {
-                  Eina_Strbuf *strbuf = cmd_strbuf_new("typebuf-icon");
-                  if (strbuf)
-                    {
-                      Eina_Strbuf *buf2 = eina_strbuf_new();
+                  Eina_Strbuf *buf2 = eina_strbuf_new();
 
-                      if (buf2)
-                        {
-                          eina_strbuf_append(buf2, "std:");
-                          eina_strbuf_append(buf2, d->icon);
-                          cmd_strbuf_append(strbuf, "icon",
-                                            eina_strbuf_string_get(buf2));
-                          eina_strbuf_free(buf2);
-                        }
-                      cmd_strbuf_print_consume(strbuf);
+                  if (buf2)
+                    {
+                      eina_strbuf_append_printf(buf2, "std:%s", d->icon);
+                      _cmd_typebuf_icon_send(eina_strbuf_string_get(buf2));
+                      eina_strbuf_free(buf2);
                     }
+                  efreet_desktop_free(d);
                 }
-              efreet_desktop_free(d);
             }
 //          for (p = args; *p != NULL; p++)
 //            fprintf(stderr, "XXX:ZZZ: [%s]\n", *p);
diff --git a/src/efm/efm_typebuf.c b/src/efm/efm_typebuf.c
index 435faa9..3ae4ccf 100644
--- a/src/efm/efm_typebuf.c
+++ b/src/efm/efm_typebuf.c
@@ -79,10 +79,11 @@ _typebuf_cmd_send(Smart_Data *sd, const char *op)
   char        *s    = _typebuf_command_get(sd);
   int          cpos = elm_entry_cursor_pos_get(sd->o_typebuf);
 
-  if ((!s) ||
-      ((sd->typebuf.prevcmd.line) &&
-       (!strcmp(s, sd->typebuf.prevcmd.line)) &&
-       (sd->typebuf.prevcmd.cursor_pos == cpos)))
+  if ((!s)
+      || ((sd->typebuf.prevcmd.line)
+          && (!strcmp(s, sd->typebuf.prevcmd.line))
+          && (sd->typebuf.prevcmd.cursor_pos == cpos)
+          && (!!strcmp(op, "run"))))
     {
       if (buf) eina_strbuf_free(buf);
       return;
@@ -628,6 +629,7 @@ _cb_typebuf_activated(void *data, Evas_Object *obj EINA_UNUSED,
     }
   if (pos > 0)
     {
+      fprintf(stderr, "XXX: RUUUUUUUUUUUUUUUUUUUUNNNN\n");
       _typebuf_cmd_send(sd, "run");
     }
   else

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to