A Midnight Commander fork with scripting and other features.

Overview

⁝⁝⁝ ⋱הϵѻ⋱ Midnight Commander ⁝⁝⁝

Welcome to the ⋱Neo⋱-MC project! The goals of it are to:

  • make the hidden gem – mcedit – shine and grow to be able to compete with Vim and Emacs,
  • add a scripting language to mcedit and mc to make this possible,
  • add some meaningful plugins written in the scripting language.

Check out MCEditWishList for a curated list of the planned enhancements. Maybe you would want to implement one of them? Because patches are welcomed, so as are new contributors.

⋱ New Features Added By The Fork ⋱

Multi Search – AND-chained Grepping (Filtering) Of Any Listbox

On Ctrl-Space an input field for a search query will be added under the currently displayed listbox. Entering any text into it will cause only the matching (i.e.: containing) elements in the listbox to be displayed – the rest will be removed. The query can be multi word (all must match). Also, entering just the letter 'c' or 'h' will automatically filter entries that end on '.c' or '.h', respectively (it also looks for .cpp and .hpp extensions).

MultiSearch can be enabled by default on all listboxes via the option multi_search_active_by_default=true.

Listing Of TAGS Symbols

A feature that pairs up with MultiSearch – an ability to list of all ctags symbols for the current file:

  • to list all functions – press alt-shift-f,
  • … all variables defined in the file – press alt-shift-v,
  • … all type definitions … – press alt-shift-t,
  • … all remaining types of entities (e.g.: C macros) … – press alt-shift-o,
  • … all symbols regardless of their type – press alt-shift-a.

After selecting of an entry the cursor and display will jump to it. With MultiSearch you can quickly find the declaration that you want by grepping the list.

Completion From All Open Files

The completion has been extended to propose words from all open files, not only from the currently edited one.

Viewport Centering

A new action called CenterView has been added. By pressing Alt-c the currently edited line of text will be positioned in the middle of the screen (i.e.: the viewport will be scrolled).

Window Cascading And Tiling

When Ctrl-Alt-c will be pressed then all windows with opened files will exit fullscreen and be automatically arranged in a cascade. Ctrl-Alt-t arranges them in a tiling configuration.

Also, new options -w/--cascade and -T,--tile will make the editor to start up with the selected arrangement. Also, there are a two new entries added to the Window sub-menu.

S-Lang Scripting support.

The already linked libslang.so contains a robust, light scripting language interpreter. This fork utilizes it (and the excelent C script binding generator Slirp) to provide a compact, light scripting support for Midnight Commander. The API is currently yet small and focused on the editor, however it'll grow. A PDF containing a description of current interface functions is available.

There are 3 example plugins in subdirectory misc/:

  • capitalize.plugin.sl – capitalizes the current word (alt-shift-c),
  • commentify.plugin.sl – wraps current line with /* and */ (alt-i),
  • grow_shrink_integer.plugin.sl – adds the Vim well known growing and decreasing of a number under cursor (Alt-a and Alt-x).

To use them, place them in ~/.config/mc/plugin directory. Also an init.sl file is being loaded at startup – it should be placed in the directory: /usr/local/etc/mc/init.sl (or /etc/mc/init.sl, depending on the installation prefix).

CLI window

There's a new command line like window called Instruction Station, bound to Alt-i by default. It runs /bin/bash by default and allows to interactively run commands and view their output.

You might also like...
Simple and lightweight pathname parser for C. This module helps to parse dirname, basename, filename and file extension .
Simple and lightweight pathname parser for C. This module helps to parse dirname, basename, filename and file extension .

Path Module For C File name and extension parsing functionality are removed because it's difficult to distinguish between a hidden dir (ex: .git) and

Compile and execute C
Compile and execute C "scripts" in one go!

c "There isn't much that's special about C. That's one of the reasons why it's fast." I love C for its raw speed (although it does have its drawbacks)

A shebang-friendly script for "interpreting" single C99, C11, and C++ files, including rcfile support.

c99sh Basic Idea Control Files Shebang Tricks C++ C11 Credits Basic Idea A shebang-friendly script for "interpreting" single C99, C11, and C++ files,

A tool for use with clang to analyze #includes in C and C++ source files

Include What You Use For more in-depth documentation, see docs. Instructions for Users "Include what you use" means this: for every symbol (type, func

SMACK Software Verifier and Verification Toolchain
SMACK Software Verifier and Verification Toolchain

SMACK is both a modular software verification toolchain and a self-contained software verifier. It can be used to verify the assertions in its input p

CommonMark spec, with reference implementations in C and JavaScript

CommonMark CommonMark is a rationalized version of Markdown syntax, with a spec and BSD-licensed reference implementations in C and JavaScript. Try it

A C library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.
A C library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.

libpostal: international street address NLP libpostal is a C library for parsing/normalizing street addresses around the world using statistical NLP a

A small self-contained alternative to readline and libedit

Linenoise A minimal, zero-config, BSD licensed, readline replacement used in Redis, MongoDB, and Android. Single and multi line editing mode with the

WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.

WAFer WAFer is a C language-based ultra-light scalable server-side web applications framework. Think node.js for C programmers. Because it's written i

Owner
null
LibOS is a modern C++17 library that makes OS-specific features cross-platform.

LibOS is a modern C++17 library that makes OS-specific features cross-platform. Ever tried to get Windows version after Windows 8? Or to send ke

Gavrilikhin Daniil 27 Sep 13, 2022
Fork of Cutter from the last working commit with radare2

r2cutter r2cutter is the continuation of Cutter before the fork to keep radare2 as backend. Focus on supporting latest version of radare2 Recommend th

radare org 503 Jan 7, 2023
SWIG bindings for raylib (to Lua, and hopefully other languages)

swigraylib SWIG binding for raylib This repo generates raylib bindings to other languages (eg. Lua), by providing a raylib.i SWIG interface file. SWIG

null 6 Oct 28, 2021
CommonMark parsing and rendering library and program in C

cmark cmark is the C reference implementation of CommonMark, a rationalized version of Markdown syntax with a spec. (For the JavaScript reference impl

CommonMark 1.4k Jan 4, 2023
libcurses and dependencies taken from netbsd and brought into a portable shape (at least to musl or glibc)

netbsd-libcurses portable edition this is a port of netbsd's curses library for usage on Linux systems (tested and developed on sabotage linux, based

null 124 Nov 7, 2022
Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.

A CPU scheduler determines an order for the execution of its scheduled processes; it decides which process will run according to a certain data structure that keeps track of the processes in the system and their status. A process, upon creation, has one of the three states: Running, Ready, Blocked (doing I/O, using other resources than CPU or waiting on unavailable resource).

Abdallah Hemdan 18 Apr 15, 2022
The lightweight and modern Map SDK for Android and iOS

Open Mobile Maps The lightweight and modern Map SDK for Android (6.0+) and iOS (10+) openmobilemaps.io Getting started Readme Android Readme iOS Featu

Open Mobile Maps 95 Dec 23, 2022
Indexes points and lines and generates map tiles to display them

Datamaps This is a tool for indexing large lists of geographic points or lines and dynamically generating map tiles from the index for display. Depend

Eric Fischer 329 Dec 6, 2022
A LKM rootkit targeting 4.x and 5.x kernel versions which opens a backdoor that can be used to spawn a reverse shell to a remote host and more.

Umbra Umbra (/ˈʌmbrə/) is an experimental LKM rootkit for kernels 4.x and 5.x (up to 5.7) which opens a network backdoor that spawns reverse shells to

Marcos S. Bajo 93 Dec 10, 2022
A cross-platform OpenXR capabilities explorer and runtime switcher with a CLI and GUI.

OpenXR Explorer OpenXR Explorer is a handy debug tool for OpenXR developers. It allows for easy switching between OpenXR runtimes, shows lists of the

Nick Klingensmith 154 Dec 13, 2022