{"id":16842617,"url":"https://github.com/rofl0r/motor","last_synced_at":"2025-07-01T02:33:22.006Z","repository":{"id":55955214,"uuid":"1697202","full_name":"rofl0r/motor","owner":"rofl0r","description":"ncurses based IDE with debugger support - in search of a new maintainer","archived":false,"fork":false,"pushed_at":"2022-08-23T06:27:04.000Z","size":799,"stargazers_count":55,"open_issues_count":5,"forks_count":14,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-04T04:12:52.827Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://thekonst.net/articles/en/freeos.intro.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rofl0r.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-03T17:02:33.000Z","updated_at":"2025-01-05T21:36:17.000Z","dependencies_parsed_at":"2022-08-15T10:11:05.781Z","dependency_job_id":null,"html_url":"https://github.com/rofl0r/motor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rofl0r/motor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fmotor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fmotor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fmotor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fmotor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rofl0r","download_url":"https://codeload.github.com/rofl0r/motor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fmotor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262883642,"owners_count":23379232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T12:47:22.315Z","updated_at":"2025-07-01T02:33:21.962Z","avatar_url":"https://github.com/rofl0r.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Motor documentation\n    by konst, 2002-2003\n\nContents\n--------\n\n1. Introduction\n    1.1. Creation history\n    1.2. Features overview\n    1.3. Requirements\n    1.4. First time start\n2. User interface\n    2.1. The ESC key\n    2.2. The main screen\n    2.3. Menus\n    2.4. Dialogs\n    2.5. Hotkeys in dialogs\n    2.6. Some UI tips\n3. Configuration\n    3.1. The \"Motor settings\" dialog\n    3.2. External keys\n    3.3. Color schemes\n4. Projects\n    4.1. Project creation\n    4.2. Project files and directories\n    4.3. The \"Project settings\" dialog\n    4.4. Building programs\n    4.5. Distribution package generation\n    4.6. External output view, error messages\n    4.7. Templates\n\t4.7.1. Standard templates overview\n\t4.7.2. Custom templates\n5. Internal editor\n    5.1. Block operations\n\t5.1.1. Cut and paste\n\t5.1.2. Indentation\n    5.2. Switching between editor windows\n    5.3. Undo/redo\n6. Debugger front-end\n    6.1. Using debugger, requirements\n    6.2. Step-by-step execution\n    6.3. Breakpoints\n    6.4. Watches\n    6.5. Call stack\n    6.6. Core dumps exploration\n    6.7. Custom debuggers\n7. Version control systems integration\n    7.1. Creation from CVS\n    7.2. Importing an existing project\n    7.3. The \"Check/in out\" dialog\n    7.4. Release tags\n    7.5. Version control systems customization\n8. Useful features\n    8.1. Grepper\n    8.2. Regexper\n    8.3. Tag browser\n9. Advanced features\n    9.5. Latest CVS snapshots\n10. Lynx\n    10.1. The program homepage\n\t10.1.1. Motor mailing list\n    10.2. thekonst.net\n    10.3. Other programs I write\n\n\n1. Introduction\n---------------\n\n  Motor is a text mode based programming environment for Linux. It\nconsists of a powerful editor with syntax highlight feature, project\nmanager, makefile generator, gcc and gdb front-end, etc. Deep CVS\nintegration is also provided. A symbol browser is provided to make it\neasier to move between various definitions in the source, and the\nregexper tool helps you to create and debug regular expressions.\n\n\n1.1. Creation history\n---------------------\n\n  I think that every program must comply with an ideology of the\noperating system it's written for and it's a very important part of\nsuccess of a software product, so when I started writing motor I'd\ndeceided to create a useful tool for open source programmers that would\ncomply with an ideology of Linux as much as possible. When I use an\n\"igeology\" term, first of all I mean the way the program works in\ngeneral, the OS facilities usage and an interface concept (for this kind\nof programs).\n\n  There was a limited set of programs used almost by all of Linux\nprogrammers in developing their open source programs. Usually they were\na text editor (I prefered mcedit), gcc/g++ compiler, make, gdb, cvs,\nautoconf and some other tools. Programming IDE should integrate all of\nthem in an entrie user interface to help a programmer to organize his\nprojects the way he likes, to debug programs seeing the source and\nmodify it in the same time, etc.. I know, most of those tools comply\nwith Linux ideology quite well, but they relate to the command-line\ninterface concept. Some people find it useful, but as for me, I prefer a\nbit higher level of visuality. It should be something like Midnight\nCommander, that is de-facto a standard for text user interface for\nLinux. That's what I tried to make.\n\n\n1.2. Features overview\n----------------------\n\n  Every part of the IDE is configurable. You can define any kind of\ndebugger and version control system, syntax highlight, compiler messages\nto parse, add additional actions, etc. Though in some parts it's not\nthat trivial, but who says it's gotta be so? :)\n\n  Internal editor has the following highlights. Of course, it can open\nmultiple files at once, has a standard set of block operations with some\nnice additions like shifting whole blocks to make it easier to add\nindents to your source. The find tool allows you to use regular\nexpressions, search in the whole project or its particular folders, you\ncan even perform searches in several projects. And sure there is a\npossibility to use an external editor in cause if you don't like such a\ncute thingie :)\n\n  Actually there are many features already implemented, which I will\ntell you about in this documentation. And there is more to follow, of\ncourse.\n\n\n1.3. Requirements\n-----------------\n\n  It's not difficult to build the motor executable, for there is a very\nsmall set of tools it will need. Apart from the C++ compiler you should\nonly install ncurses, which is a CRT screen handling and optimization\npackage, at least of 4.2 version. You can find it by the following URL.\n  http://dickey.his.com/ncurses/ncurses.html\n\n  Well, with such a trivial build there must be a trick. Right, in order\nto use it you'll need much more software installed. It would be rather\nstupid to expect a small IDE to do all the job, like build processing,\nversion control, code debugging and tags extracting. Motor is just a\nfront-end for the standard tools, designed especially for these aims.\nSo, here is the list.\n\n  GNU Make\n  GNU Debugger (gdb)\n  autoconf and automake\n  CVS (Concurrent Version System)\n  RedHat Package Manager (if you want to generate such packages)\n\n  Also, the template scripts will use such standard command line tools,\nlike sed, grep, egrep, etc.. But usually they're included into any\nmodern UNIX distribution, so there is nothing to worry about.\n\n\n1.4. First time start\n---------------------\n\n\n2. User interface\n-----------------\n\n  The text UI motor has, as well as UI of other programs for console I\nhave written, is very simple. There are menus, windows, menus and input\nlines. In the bottom line of the screen there is a status bar. It\nusually contains hints about what to press to invoke various menus,\ndialogs, and perform various actions.\n\n\n2.1. The ESC key\n----------------\n\n  This key is used for termination of input, if you wanna cancel the\noperation you wanted to perform. Let's say, the \"Motor settings\" dialog\nis invoked. As button bar says, you can use the item \"Change\" to change\nvalues. There is also the \"Done\" button, which will save changes.\nObviously if you don't want to do the latter, there is ESC. The only\nhint here is that you have to press the ESC key twice. It's a common\npractice for console based UNIX programs (Midnight commander is a good\nexample), because checking for only one ESC would spoil arrow key\nprocessing. The point is that they have correspond sequences that start\nwith an ASCII#27 character which is actually ESC.\n\n  If you still want to press a simple key combination to close a dialog\nor cancel something, try Alt-ESC. Though it's not guaranteed to work on\nall terminals.\n\n  The ESC key can also help you to issue shortcuts and key combinations\nsuch as Alt-? or F\u003cx\u003e. The former, if Alt-Shift-/ doesn't work can be\nproduced by first pressing ESC and then Shift-/ (i.e. \"?\"). And instead\nof any F-key the ESC and then a number can be used.\n\n\n2.2. The main screen\n--------------------\n\n2.3. Menus\n----------\n\n2.4. Dialogs\n------------\n\n2.5. Hotkeys in dialogs\n-----------------------\n\n  Dialogs in motor usually have a bar with buttons. To access a button\nwithout moving the highlighted bar over it with the arrow keys you can\nuse shortcuts. It's enough to press the first capital letter of a button\nname to access the function behind it.\n\n\n2.6. Some UI tips\n-----------------\n\n  There at some quite standard key combinations supported by motor. Here\nthey go.\n\n    Ctrl-L\n      Redraws the screen in any place of program execution. If output of\n    some kind of background programs or system messages spoil your screen\n    just press it to refresh the motor screen.\n\n    Ctrl-Y\n      In editor removes entire current line.\n\n    Ctrl-K\n      Single line edit mode.\n      Kills entire content.\n\n    Ctrl-U\n      Single line edit mode.\n      Kills a part of line to the left from cursor.\n\n    Alt-H\n      Single line edit mode.\n      Invokes history of recently entered lines.\n\n3. Configuration\n----------------\n\n3.1. The \"Motor settings\" dialog\n--------------------------------\n\n3.2. External keys\n------------------\n\n3.3. Color schemes\n------------------\n\n  It's possible to customise colors in motor user interface. It's done\nwith the help of the ~/.motor/themes configuration file. The default one\ncan be found in the /usr/share/motor or /usr/local/share/motor\ndirectory. Just copy it to ~/.motor and edit by preference. Its contents\nare self-descriptive, and parameter names mean exactly that they're\nnamed after. Please note, that among the standard color names it's\npossible to specify \"transparent\" which is useful when the program is\nused in terminals with background images set.\n\n\n4. Projects\n-----------\n\n4.1. Project creation\n---------------------\n\n4.2. Project files and directories\n----------------------------------\n\n4.3. The \"Project settings\" dialog\n----------------------------------\n\n4.4. Building programs\n----------------------\n\n4.5. Distribution package generation\n------------------------------------\n\n4.6. External output view, error messages\n-----------------------------------------\n\n4.7. Templates\n--------------\n\n4.7.1. Standard templates overview\n----------------------------------\n\n4.7.2. Custom templates\n-----------------------\n\n5. Internal editor\n------------------\n\n5.1. Block operations\n---------------------\n\n5.1.1. Cut and paste\n--------------------\n\n5.1.2. Indentation\n------------------\n\n5.2. Switching between editor windows\n-------------------------------------\n\n5.3. Undo/redo\n--------------\n\n6. Debugger front-end\n---------------------\n\n6.1. Using debugger, requirements\n---------------------------------\n\n6.2. Step-by-step execution\n---------------------------\n\n6.3. Breakpoints\n----------------\n\n6.4. Watches\n------------\n\n6.5. Call stack\n---------------\n\n6.6. Core dumps exploration\n---------------------------\n\n6.7. Custom debuggers\n---------------------\n\n7. Version control systems integration\n--------------------------------------\n\n7.1. Creation from CVS\n----------------------\n\n7.2. Importing an existing project\n----------------------------------\n\n7.3. The \"Check/in out\" dialog\n------------------------------\n\n7.4. Release tags\n-----------------\n\n7.5. Version control systems customization\n------------------------------------------\n\n8. Useful features\n------------------\n\n8.1. Grepper\n------------\n\n8.2. Regexper\n-------------\n\n8.3. Tag browser\n----------------\n\n9. Advanced features\n--------------------\n\n9.5. Latest CVS snapshots\n-------------------------\n\n10. Lynx\n--------\n\n  This section contains links and references that may be of interest for\nyou.\n\n\n10.1. The program homepage\n--------------------------\n\nThe motor homepage can be found at\n    http://thekonst.net/motor/\n\nOn the same page there is the latest version for you to download.\n\n\n10.1.1. Motor mailing list\n--------------------------\n\n  There is a mailing list for motor which is used by the program users\nto discuss their ideas, bug reports, fixes, and other stuff. You would\nrather want to use it instead of direct mailing to me.\n\n  To subscribe go to the motor home page (URL above) or send a message\nto motor-request@linuxpl.org with \"subscribe\" in the subject field. To\npost a message to the list, send it to motor@linuxpl.org after you\nsubscribe. The archive can be found at http://eloy.linux.net.pl/motor/\n\n\n10.2. thekonst.net\n------------------\n\n  If you want to find out more about my recent activities, news,\nsoftware developments and other things I'm involved in, visit my web\nsite at http://thekonst.net/\n\n\n10.3. Other programs I write\n----------------------------\n\nTo find out more about my software developments use the following URL:\n    http://thekonst.net/konstware/\n\nThere is also an \"articles\" section at\n    http://thekonst.net/writings/\n\n\n11. Help to the project I would appreciate\n------------------------------------------\n\n  What if you think that motor is the best text console based IDE\naround? What if motor is an IDE you'd been waiting whole of your life,\nand want to express your appreciation somehow? Helping the author you\nhelp the project itself to keep rolling. It's not something vital I\nrequire to keep on writing and improving motor, neither you have to do\nit. I quite enjoy making it in my spare time, and happy of the fact\nthere are no deadlines and obligations from my side. It's just my hobby.\n\n  So how you can express appreciation to the way I waste my spare time,\nso that to make me a bit more happy and satisfied by my activities?\n\n\n11.1. Feedback\n--------------\n\n  You can write some feedback saying what you liked and what is missing\nin the program. Also, don't be silent if you notice bugs. Just check\neverything attentively and send a detailed bug-report to the mailing\nlist.\n\n\n11.2. Patches\n-------------\n\n  Don't wait for me to implement a feature you'd like to have in motor.\nPlease have in mind that whole the source code is available and you can\nmodify it yourself, then make a patch and send it to me. I'd like you to\nfollow my style of formatting the code. Please don't make any changes\nnot related to the feature you implement, it makes your patch difficult\nto commit.\n\n\n11.3. Promoting the little program\n----------------------------------\n\n  I bet you read some computers related magazines and visit various\nLinux related sites. Please don't keep silence instead of screaming out\nyour adoration for the little nice program. Submit it to a software site\nor catalogue or/and encourage the authors of your favourite magazine to\ntake a look at it and possibly write about motor. Interviews, speeches,\npresedential elections ;) and stuff are also possible, just contact me\nfor more details.\n\n\n11.4. Donations\n---------------\n\n  If you're a materialist guy like me, you might want to present me\nsomething what I can touch, put on a sandwich or into my pocket. Here it\ngoes.\n\n\n11.4.1. Money\n-------------\n\n  The most universal way. Depending on a sum I will be able to drink one\nmore beer or tequila to the health of motor users or buy a piece of\nhardware, electronic gagdet or the newest model of \"Porsche\" ;) Contact\nme and I'll discuss a way I can receive your donation.\n\n\n11.4.2. Hardware\n----------------\n\n  Since usually I write motor at home, it's always nice to upgrade the\ncomputer it's being developed with. It can increase the speed and\npleasure I get during the process.\n\n\n11.4.3. Other stuff\n-------------------\n\n  Other stuff like t-shirts, souvenirs, albums or postcards with nice\nviews of the nature in places where you live, baseball tickets ;) are\nalso welcome.\n\n$Id: README,v 1.5 2003/07/22 21:47:51 konst Exp $\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fmotor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frofl0r%2Fmotor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fmotor/lists"}