Giter Site home page Giter Site logo

vikonix / multitextor Goto Github PK

View Code? Open in Web Editor NEW
33.0 6.0 5.0 3.32 MB

Multiplatform command line text editor.

License: BSD 2-Clause "Simplified" License

CMake 1.39% C++ 94.38% Shell 0.01% Batchfile 0.02% C 0.87% Lex 3.34%
linux win32 console cross-platform text-editor library tty gpm xterm windows

multitextor's Introduction

Multitextor

Screenshot Cross platform console mode text editor.

This project is mostly recreated version of my old text editor.

BSD-2 license

In progress

  • Editor 2.0.0-beta version.

Key features

  • Simple user friendly interface same in different environments (with menu and dialog)
  • Mouse and keyboard cursor movement and selection
  • Multi-window
  • Split view mode with 2 panels
  • Clear working with different text code pages
  • Different select modes
  • Working with macros
  • Big files editing over 4 GBytes (with small memory using)
  • Deep Undo/Redo
  • Customizable key commands and some interface parameters
  • Customizable syntax highlighting
  • Editor session saving/restoring
  • Searching in on disk files

Will be implemented in the next versions:

  • Backup files
  • Random access bookmarks
  • Build-in file comparing mode

Editor screenshot. Screenshot

Tested on

Linux/Windows/OSX/FreeBSD

  • Windows 11 - Microsoft Visual Studio Community 2022 / 2019 / 2017
  • Windows 10 - Microsoft Visual Studio Community 2019 / 2017
  • Windows 7 - Microsoft Visual Studio Community 2017
  • Linux Ubuntu 18.04 - gcc version 9.3.0
  • Linux Ubuntu 20.04 - gcc version 9.3.0
  • Armbian Focal OrangePI 4

For building it needs a compiler with C++ 0x17 full support.

Minimal requirement: gcc 8.0 or MSVS 2017

Need to install packages in Linux

  • sudo apt-get install -y libncurses5-dev
  • sudo apt-get install -y libgpm-dev
  • sudo apt-get install -y gpm (only for mouse supporting in console)

How to build

  • Install CMake 3.15 or higher

  • Install g++-9 or clang or MSVC

  • Run CMake: cmake -B _build -S .

    or cmakegen.bat

  • Build editor

    • in Linux run: build.sh
    • in Windows try to run: msbuild /p:Configuration=Release Multitextor.sln
    • or open solution _build/Multitextor.sln with MSVC
  • Get editor in Linux _build/bin/multitextor or in Windows _build/bin/Debug|Release/multitextor.exe

Linux: get binaries packet from snap

Snap packet link: snap packet

  • Install: snap install --edge --devmode multitextor

  • Update: snap refresh --edge --devmode multitextor

Windows: get zip archive from AppVeyor CI artifacts

Zip archive link: zip archive

multitextor's People

Contributors

eaxeax avatar trofi avatar vikonix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

multitextor's Issues

Top menu item name "Block"

CudaText and SublimeText name this menu as "Selection" so I suggest to rename "Block" to "Selection>.

Don't build in Slackware current

I checked all the depends.

But i can't compile it.

`root@sl-alive:/tmp/multitextor# ./cmakegen.bat

  • -- The C compiler identification is GNU 11.2.0
  • -- The CXX compiler identification is GNU 11.2.0
  • -- Detecting C compiler ABI info
  • -- Detecting C compiler ABI info - done
  • -- Check for working C compiler: /usr/bin/cc - skipped
  • -- Detecting C compile features
  • -- Detecting C compile features - done
  • -- Detecting CXX compiler ABI info
  • -- Detecting CXX compiler ABI info - done
  • -- Check for working CXX compiler: /usr/bin/c++ - skipped
  • -- Detecting CXX compile features
  • -- Detecting CXX compile features - done
  • -- Looking for pthread.h
  • -- Looking for pthread.h - found
  • -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  • -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  • -- Looking for pthread_create in pthreads
  • -- Looking for pthread_create in pthreads - not found
  • -- Looking for pthread_create in pthread
  • -- Looking for pthread_create in pthread - found
  • -- Found Threads: TRUE
  • -- Configuring done
  • -- Generating done

`

[ 6%] Building CXX object Utils/CMakeFiles/UtilsLib.dir/src/Clipboard.cpp.o
[ 8%] Building CXX object Utils/CMakeFiles/UtilsLib.dir/src/CpConverter.cpp.o
In file included from /tmp/multitextor/Utils/src/CpConverter.cpp:28:
/tmp/multitextor/Utils/inc/utils/IntervalMap.h: In constructor ‘_Utils::IntervalMap<TKey, TVal>::IntervalMap(TVal)’:
/tmp/multitextor/Utils/inc/utils/IntervalMap.h:44:22: error: ‘numeric_limits’ is not a member of ‘std’
44 | m_diaps[std::numeric_limits::lowest()] = value;
| ^~~~~~~~~~~~~~
/tmp/multitextor/Utils/inc/utils/IntervalMap.h:44:41: error: expected primary-expression before ‘>’ token
44 | m_diaps[std::numeric_limits::lowest()] = value;
| ^
/tmp/multitextor/Utils/inc/utils/IntervalMap.h:44:44: error: ‘::lowest’ has not been declared
44 | m_diaps[std::numeric_limits::lowest()] = value;
| ^~~~~~
In file included from /tmp/multitextor/Utils/src/CpConverter.cpp:30:
/tmp/multitextor/ThirdParty/inc/widecharwidth/widechar_width.h: At global scope:
/tmp/multitextor/ThirdParty/inc/widecharwidth/widechar_width.h:533:5: warning: ‘int {anonymous}::widechar_wcwidth(uint32_t)’ defined but not used [-Wunused-function]
533 | int widechar_wcwidth(uint32_t c) {
| ^~~~~~~~~~~~~~~~
make[2]: *** [Utils/CMakeFiles/UtilsLib.dir/build.make:90: Utils/CMakeFiles/UtilsLib.dir/src/CpConverter.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:196: Utils/CMakeFiles/UtilsLib.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

What can I do?

Suggestion to rework tabs/spaces commands

For tabs/spaces work, currently app has the weird checkboxes in the "File Properties" dlg.

Screenshot from 2021-08-31 15-20-50

I suggest to make it like in Sublime Text and CudaText.

  • make the "Tabs" or "Spaces" cell in the lower statusbar
  • on clicking this cell, show dropdown menu with several check-items, and/or commands

CudaText has this

  • if "tabs as spaces" on: statusbar cell name is "Spaces: 4" (4 is tab width)
  • if "tabs as spaces" off: cell name is "Tabs: 4" (so cell is renamed)
  • dropdown from this cell shows items:

cell

Python syntax

Python allows strings with triple quotes. they are multi-line.
not supported.

Screenshot from 2021-08-31 22-10-48

Number prefixes in *.lex files

    "1_LanguageName": "C++",
    "2_FileExtentions": "*.c;*.cc;*.cpp;*.h;*.hpp",
    "3_Delimiters": "[]{}();",
    "4_NameSymbols": "$",
    "5_SpecialCombination": [],
    "6_LineComments": [
      "//"
    ],
    "7_OpenComments": [
      "/*"
    ],
    "8_ClosedComments": [
      "*/"
    ],
    "9_ToggledComments": [],

It's weird. Numbers are not needed here, you can read words. Numbers make it hard to read.

The window should be initialized with the current size.

The window should be initialized with the current size, in the Windows version.

return SetSize(m_saveInfo.dwMaximumWindowSize.X, m_saveInfo.dwMaximumWindowSize.Y);
==>
return SetSize(m_saveInfo.srWindow.Right + 1, m_saveInfo.srWindow.Bottom + 1);

support UTF-16 LE and BE

inline const static std::u16string c_utf16Bom{ u"\xfeff" };
shows that you support only UTF16 LE, but UTF16 BE has swapped signature: FF FE.

Configurable top statusbar

Can you make this bar contents the option? with macros. so default value can be option value like [{LineCount}] L:{LineIndex} C:{ColIndex} .

typo: "Unindent"

{MENU_ITEM, "&Unident In Block", K_ED(E_EDIT_BLOCK_UNDENT), "Unident inside of selected block"},

unINdent.

Ctrl+Q for quit

Many GUI apps on Linux use Ctrl+Q for quit hotkey. pls use it.

Term "code page"

"code page" is encoding but usually for 1-byte encodings. term "encoding" is more wide: it is codepages + utf8 + utf16 + utf32. better use "encoding".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.