Coder Social home page Coder Social logo

rhaberkorn / sciteco Goto Github PK

View Code? Open in Web Editor NEW
47.0 47.0 6.0 2.96 MB

Advanced TECO dialect and interactive screen editor based on Scintilla

License: GNU General Public License v3.0

C 90.05% HTML 0.17% Makefile 1.87% Lua 0.56% CSS 0.24% M4 6.30% Python 0.50% Shell 0.31%
editor gtk3 ncurses scripting teco text-processing

sciteco's People

Contributors

rhaberkorn avatar yomin 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sciteco's Issues

Can't build on macOS 11

Everything goes well - until the make step:

/bin/sh ../libtool  --tag=CXX   --mode=link g++ -std=c++17  -g -O2 -I/opt/pkg/include/glib-2.0 -I/opt/pkg/lib/glib-2.0/include -I/opt/pkg/include -D_DARWIN_C_SOURCE -I/opt/pkg/include/ncurses -I/opt/pkg/include    -o sciteco-minimal  libsciteco-base.la /Users/tux0r/github/sciteco/contrib/scintilla/bin/scintilla.a /Users/tux0r/github/sciteco/contrib/lexilla/bin/liblexilla.a -L/opt/pkg/lib -lglib-2.0 -lintl -L/opt/pkg/lib -Wl,-search_paths_first -lncurses
libtool: link: g++ -std=c++17 -g -O2 -I/opt/pkg/include/glib-2.0 -I/opt/pkg/lib/glib-2.0/include -I/opt/pkg/include -D_DARWIN_C_SOURCE -I/opt/pkg/include/ncurses -I/opt/pkg/include -o sciteco-minimal -Wl,-search_paths_first -Wl,-bind_at_load  ./.libs/libsciteco-base.a -L/opt/pkg/lib -L../lib /Users/tux0r/github/sciteco/contrib/scintilla/bin/scintilla.a /Users/tux0r/github/sciteco/contrib/lexilla/bin/liblexilla.a -lglib-2.0 /opt/pkg/lib/libintl.dylib /opt/pkg/lib/libiconv.dylib /opt/pkg/lib/libncurses.dylib
Undefined symbols for architecture x86_64:
  "operator delete[](void*)", referenced from:
      ListBoxImpl::SetList(char const*, char, char) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::Action::~Action() in scintilla.a(CellBuffer.o)
      Scintilla::Internal::Action::~Action() in scintilla.a(CellBuffer.o)
      Scintilla::Internal::Action::Create(Scintilla::Internal::ActionType, long, char const*, long, bool) in scintilla.a(CellBuffer.o)
      Scintilla::Internal::Action::Clear() in scintilla.a(CellBuffer.o)
      Scintilla::Internal::UndoHistory::UndoHistory() in scintilla.a(CellBuffer.o)
      std::__1::vector<Scintilla::Internal::Action, std::__1::allocator<Scintilla::Internal::Action> >::resize(unsigned long) in scintilla.a(CellBuffer.o)
      ...
  "operator delete(void*)", referenced from:
      Scintilla::Internal::Window::~Window() in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::ListBox::Allocate() in scintilla.a(ScintillaCurses.o)
      _scintilla_new in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::ScintillaCurses(void (*)(void*, int, SCNotification*, void*), void*) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::SelectionText::~SelectionText() in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::~ScintillaCurses() in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::KeyDefault(Scintilla::Keys, Scintilla::KeyMod) in scintilla.a(ScintillaCurses.o)
      ...
  "operator delete(void*, std::align_val_t)", referenced from:
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(Lexilla.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexAsm.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexBaan.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexBash.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexBasic.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexCIL.o)
      void std::__1::_DeallocateCaller::__do_call<std::align_val_t>(void*, std::align_val_t) in liblexilla.a(LexCPP.o)
      ...
  "operator new[](unsigned long)", referenced from:
      ScintillaCurses::GetClipboard(int*) in scintilla.a(ScintillaCurses.o)
      ListBoxImpl::SetList(char const*, char, char) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::Action::Create(Scintilla::Internal::ActionType, long, char const*, long, bool) in scintilla.a(CellBuffer.o)
      Scintilla::Internal::LineLayout::Resize(int) in scintilla.a(PositionCache.o)
      Scintilla::Internal::LineLayout::SetLineStart(int, int) in scintilla.a(PositionCache.o)
      Scintilla::Internal::PositionCacheEntry::PositionCacheEntry(Scintilla::Internal::PositionCacheEntry const&) in scintilla.a(PositionCache.o)
      Scintilla::Internal::PositionCacheEntry::Set(unsigned int, std::__1::basic_string_view<char, std::__1::char_traits<char> >, double const*, unsigned short) in scintilla.a(PositionCache.o)
      ...
  "operator new(unsigned long)", referenced from:
      Scintilla::Internal::Font::Allocate(Scintilla::Internal::FontParameters const&) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::Surface::Allocate(Scintilla::Technology) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::ListBox::Allocate() in scintilla.a(ScintillaCurses.o)
      _scintilla_new in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::ScintillaCurses(void (*)(void*, int, SCNotification*, void*), void*) in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::KeyDefault(Scintilla::Keys, Scintilla::KeyMod) in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::UTF8FromEncoded(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const in scintilla.a(ScintillaCurses.o)
      ...
  "operator new(unsigned long, std::align_val_t)", referenced from:
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(Lexilla.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexAsm.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexBaan.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexBash.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexBasic.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexCIL.o)
      std::__1::__libcpp_allocate(unsigned long, unsigned long) in liblexilla.a(LexCPP.o)
      ...
  "___cxa_allocate_exception", referenced from:
      std::__1::__throw_length_error(char const*) in scintilla.a(ScintillaCurses.o)
      std::__1::__throw_length_error(char const*) in liblexilla.a(Lexilla.o)
      Scintilla::Internal::UTF16FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, wchar_t*, unsigned long) in scintilla.a(UniConversion.o)
      Scintilla::Internal::UTF32FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, unsigned int*, unsigned long) in scintilla.a(UniConversion.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(Editor.o)
      std::__1::__throw_out_of_range(char const*) in scintilla.a(CallTip.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(CallTip.o)
      ...
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::WndProc(Scintilla::Message, unsigned long, long) in scintilla.a(ScintillaCurses.o)
      ___clang_call_terminate in liblexilla.a(Lexilla.o)
      ___clang_call_terminate in scintilla.a(ScintillaBase.o)
      ___clang_call_terminate in scintilla.a(UniConversion.o)
      Scintilla::Internal::Editor::FindText(unsigned long, long) in scintilla.a(Editor.o)
      Scintilla::Internal::Editor::SearchText(Scintilla::Message, unsigned long, long) in scintilla.a(Editor.o)
      ...
  "___cxa_end_catch", referenced from:
      ScintillaCurses::WndProc(Scintilla::Message, unsigned long, long) in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::Editor::FindText(unsigned long, long) in scintilla.a(Editor.o)
      Scintilla::Internal::Editor::SearchText(Scintilla::Message, unsigned long, long) in scintilla.a(Editor.o)
      Scintilla::Internal::Editor::SearchInTarget(char const*, long) in scintilla.a(Editor.o)
      std::__1::vector<long, std::__1::allocator<long> >::shrink_to_fit() in scintilla.a(CellBuffer.o)
      std::__1::vector<int, std::__1::allocator<int> >::shrink_to_fit() in scintilla.a(CellBuffer.o)
      std::__1::vector<char, std::__1::allocator<char> >::shrink_to_fit() in scintilla.a(CellBuffer.o)
      ...
  "___cxa_free_exception", referenced from:
      std::__1::__throw_length_error(char const*) in scintilla.a(ScintillaCurses.o)
      std::__1::__throw_length_error(char const*) in liblexilla.a(Lexilla.o)
      Scintilla::Internal::UTF16FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, wchar_t*, unsigned long) in scintilla.a(UniConversion.o)
      Scintilla::Internal::UTF32FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, unsigned int*, unsigned long) in scintilla.a(UniConversion.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(Editor.o)
      std::__1::__throw_out_of_range(char const*) in scintilla.a(CallTip.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(CallTip.o)
      ...
  "___cxa_throw", referenced from:
      std::__1::__throw_length_error(char const*) in scintilla.a(ScintillaCurses.o)
      std::__1::__throw_length_error(char const*) in liblexilla.a(Lexilla.o)
      Scintilla::Internal::UTF16FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, wchar_t*, unsigned long) in scintilla.a(UniConversion.o)
      Scintilla::Internal::UTF32FromUTF8(std::__1::basic_string_view<char, std::__1::char_traits<char> >, unsigned int*, unsigned long) in scintilla.a(UniConversion.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(Editor.o)
      std::__1::__throw_out_of_range(char const*) in scintilla.a(CallTip.o)
      std::__1::__throw_length_error(char const*) in scintilla.a(CallTip.o)
      ...
  "___gxx_personality_v0", referenced from:
      Scintilla::Internal::Window::Destroy() in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::ListBox::Allocate() in scintilla.a(ScintillaCurses.o)
      Scintilla::Internal::Platform::Assert(char const*, char const*, int) in scintilla.a(ScintillaCurses.o)
      _scintilla_new in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::ScintillaCurses(void (*)(void*, int, SCNotification*, void*), void*) in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::KeyDefault(Scintilla::Keys, Scintilla::KeyMod) in scintilla.a(ScintillaCurses.o)
      ScintillaCurses::WndProc(Scintilla::Message, unsigned long, long) in scintilla.a(ScintillaCurses.o)
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [sciteco-minimal] Error 1
make[2]: *** [install-recursive] Error 1
make[1]: *** [install] Error 2
make: *** [install-recursive] Error 1

Why?

The Gtk+ build is unable to find the Segoe UI font.

From the error console:

(sciteco.exe:24672): Pango-WARNING **: 03:12:55.631: couldn't load font "Segoe UI Light Small-Caps Not-Rotated 9", falling back to "Sans Light Small-Caps Not-Rotated 9", expect ugly output.

This should not happen, I guess; Segoe UI, including the Light variant, actually is installed on this system. Windows 11.

Misc

Really nice to see stuff done with Teco!!

Some things I noticed:

  1. Really hate the extra space at the beginning of each line.
  2. EX should save and exit
  3. B= should be zero, not one.
  4. Not sure what I typed but I got a syntax error and was utterly unable to get past it. I tried BS, $$, ^C, etc.. Nothing would get me out of that condition. I had to kill the process.
  5. I understand having to do -L to go back a line is tedious, but I am not sure re-mapping B is the best answer. Mapping the cursor keys is.

I only spent about 5 minutes with it after building it. Again, I am really excited to see work done wit Teco!!

Thanks!!

Blake

Unable to build on Linux

[...]
Info: Removed file "/home/blake/Backup/sciteco.git/src/symbols-scintilla.c" from the ring
Info: Removed file "/home/blake/Backup/sciteco.git/src/undo.c" from the ring
Info: Removed file "/home/blake/Backup/sciteco.git/src/view.c" from the ring
../src/sciteco-minimal -e $'EBsciteco.7.in\e <FS@PACKAGE^Q@\esciteco\e;>J <FS@PACKAGE_NAME^Q@\eSciTECO\e;>J <FS@PACKAGE_VERSION^Q@\e2.0.0\e;>J <FS@PACKAGE_URL^Q@\ehttp://sciteco.sf.net/\e;>J <FS@PACKAGE_URL_DEV^Q@\ehttps://github.com/rhaberkorn/sciteco\e;>J <FS@bindir^Q@\e/usr/local/bin\e;>J <FS@libexecdir^Q@\e/usr/local/libexec\e;>J <FS@pkgdatadir^Q@\e/usr/local/share/sciteco\e;>J <FS@scitecolibdir^Q@\e/usr/local/share/sciteco/lib\e;>J <FS@TECO_INTEGER^Q@\e64\e;>J <FS@DATE^Q@\e19 Nov 2022\e; -D>J EWsciteco.7\e'
Info: Added new unnamed file to ring.
Info: Added file "sciteco.7.in" to ring
groff -wall -Z -Tascii -t -man -M. -msciteco grosciteco.tes.1 >grosciteco.tes.1.intermediate
../src/sciteco -m -- ./grosciteco.tes
grosciteco.tes.1.woman grosciteco.tes.1.intermediate
Info: Added new unnamed file to ring.
Info: Added file "grosciteco.tes.1.intermediate" to ring
Error: Invalid Q-Register "default-style"
Info: #0 in Q-Register "format" at 6819 (396:30)
Info: #1 in file "./grosciteco.tes" at 5195 (256:10)
make[2]: *** [GNUmakefile:818: grosciteco.tes.1.woman] Error 1
rm sciteco.7.in grosciteco.tes.1.intermediate
make[2]: Leaving directory '/home/blake/Backup/sciteco.git/doc'
make[1]: *** [GNUmakefile:506: all-recursive] Error 1
make[1]: Leaving directory '/home/blake/Backup/sciteco.git'
make: *** [GNUmakefile:415: all] Error 2

EB uses wrong directory

I am doing:

cd ~/tmp
sciteco
EBt.txt$$

Instead of opening the t.txt file in the ~/tmp directory, it is looking for the file in the /home/blake/Backup/sciteco directory which is where I built sciteco. Seem like it should be using my current directoty instead of where sciteco was built.

Thanks!

New Binary Release?

Hi

WARNING: Useless windows user who can't compile code!

I tried to use the lua.tes from the master branch - with the released binary 0.6.4 and now sciteco won't launch:

Info: Added new unnamed file to ring.o.exe P:\MyPrograms\EDITORS\LEdit\LEdit.lua
Info: Added file "P:\MyPrograms\EDITORS\LEdit\LEdit.lua" to ring
Error: Unsupported command <^E>
Info: #0 in Q-Register "lexer.test.lua" at 72 (3:12)
Info: #1 in Q-Register "lexer.auto" at 543 (20:24)
Info: #2 in Q-Register "ED" at 107 (5:17)
Info: #3 in "ADD" hook execution
Info: #4 in file "P:\MyPrograms\EDITORS\Addins\teco\.teco_ini" at 1341 (57:25)

Removing the offending lua.tes file allows the editor to run. Is it possible to release the full range of lexers with the current binary release - or is it possible to make an up to date binary release for the non-compiling windows users?

Kind Regards

Gavin

Does not compile on Debian 7

When trying to compile I get this error:

spawn.cpp: In member function ‘virtual SciTECO::State* SciTECO::StateExecuteCommand::done(const gchar*)’:
spawn.cpp:371:27: error: ‘G_SPAWN_EXIT_ERROR’ was not declared in this scope
spawn.cpp: In function ‘void SciTECO::child_watch_cb(GPid, gint, gpointer)’:
spawn.cpp:426:47: error: ‘g_spawn_check_exit_status’ was not declared in this scope
make[3]: *** [spawn.o] Error 1
make[3]: Leaving directory `/home/kevin/teco/sciteco/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/kevin/teco/sciteco/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/kevin/teco/sciteco'
make: *** [all] Error 2

Closing a loop twice causes sciteco to crash

Compiled on arch linux 32 bit. Ncurses UI.
Anything along the lines of n<cmds>> will crash sciteco. Impossible loops in general (ie: 2<c> in an empty buffer) cause severe problems ranging from crashes to hangs and out of control memory leaks.

*5<c> ** ERROR:parser.cpp:861:virtual SciTECO::State* SciTECO::StateStart::custom(gchar): assertion failed: (expressions.pop_op() == Expressions::OP_LOOP) zsh: abort (core dumped) sciteco .xinitrc

Core generated with gdb at https://u.teknik.io/vjpe46.5017

Edit: thanks, markdown

$SCITECOPATH is wrong on Apple Silicon processors

Using the sample_teco.ini file, I found that it seems to use the wrong paths:

% pwd
/Users/tux0r/git/sciteco/src
% ./sciteco  # using the self-compiled version
Info: Added new unnamed file to ring.
Error: Datei »/usr/local/share/sciteco/lib/color.tes« konnte nicht geöffnet werden: No such file or directory

I actually wonder why it defaults to /usr/local. That also happens after make install and using the "installed" version.

Need a way to toggle through buffers

Getting a list of buffers and being able to go to a specific buffer is good.
However, being able to do the following would be good too:

  1. go to next buffer in buffer ring
  2. go to previous buffer in buffer ring
  3. go to previus buffer I visited (and bufer that, etc.)
  4. go to following buffer I was at (works only if you used go to previous buffer I was at)

Thanks!

No Unicode support? :-(

One would think that SciTECO could insert German umlauts just fine, but iÄÖÜ$$ leads to visual garbage.

The manpage states:

Currently however, SciTECO will only handle ASCII files.

That does not imply that direct input of non-ASCII characters into an empty document was forbidden, so I thought it could work...?

Need case sensitive search

Case sensitive search is DEFINITLY needed. Perhaps something like:

-Smystring$

In other words, if the "S" command has a negative argument, use case sensitive search, etc.

Thanks!

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.