diff options
Diffstat (limited to 'keys.c')
| -rw-r--r-- | keys.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -1,11 +1,15 @@ #include "keys.h" +#include <linux/limits.h> #include <ncurses.h> +#include <stdio.h> #include <stdlib.h> #include "display.h" +#include "err.h" #include "fm.h" #include "log.h" +#include "mem.h" #include "wm.h" void handling_keys(int ch, fm_info *i) @@ -34,7 +38,27 @@ void handling_keys(int ch, fm_info *i) case 'l': fm_cd_down(i); break; + case 'o': + case '\n': + case '\r': + case KEY_ENTER: + log_write(LOG_INFO, "Open file"); + if (!(i->cur->items[i->cursor].is_dir)) { + char filepath[PATH_MAX]; + size_t len = + snprintf(filepath, PATH_MAX, "%s/%s", i->cwd, + i->cur->items[i->cursor].name); + if (len >= PATH_MAX) { + die("snprintf failed"); + } + char *argv[] = {enveditor, filepath, NULL}; + open_with_editor(argv); + break; + } else { + return; + } + break; default: return; } |
