├── .gitattributes ├── .gitignore ├── Builder ├── brand_version.py ├── build-for-all.sh ├── build-for-debian.sh ├── build-for-epel-6.sh ├── build-for-epel-7.sh ├── build-for-epel-8.sh ├── build-for-epel-9.sh ├── build-for-fedora.sh ├── build-linux.sh ├── build-macosx.sh ├── build-netbsd.sh ├── build-openbsd.sh ├── build-venv.cmd ├── build-venv.sh ├── build-windows.cmd ├── build_bemacs.py ├── build_log.py ├── build_tee.py ├── build_utils.py ├── builder_custom_init.cmd ├── builder_custom_init.sh ├── copy-kit.cmd ├── copy-kit.sh ├── debian-package-dh-build.sh ├── git-log-for-readme.sh ├── import-hunspell.cmd ├── import-hunspell.sh ├── import-pycxx.sh ├── import-sqlite3.cmd ├── import-sqlite3.sh ├── install-dependencies.sh ├── linux-requirements.txt ├── local-install-unix.sh ├── macos-requirements.txt ├── package_bemacs.py ├── package_list_repo.py ├── package_macos_dmg_settings.py ├── package_rpm_specfile.py ├── package_windows_inno_setup_files.py ├── tag-release.sh ├── unzip.py ├── version_info.txt └── windows-requirements.txt ├── Describe ├── create_describe_database.py ├── em_desc.mll ├── em_desc.mlp ├── makedesc.cmd ├── qi_bliss.mll ├── qi_cc.mll ├── qi_dcl.mll └── qi_vms.mll ├── Editor ├── Include │ ├── Common │ │ ├── CommandLine.h │ │ ├── abbrev.h │ │ ├── brand.os.h │ │ ├── buffer.h │ │ ├── display.h │ │ ├── em_gen.h │ │ ├── em_mac.h │ │ ├── em_rtn.h │ │ ├── em_stat.h │ │ ├── em_time.h │ │ ├── em_user.h │ │ ├── em_util.h │ │ ├── em_var.h │ │ ├── emacs.h │ │ ├── emacs_proc.h │ │ ├── emacsutl.h │ │ ├── emexcept.h │ │ ├── emobject.h │ │ ├── emstring.h │ │ ├── emstrtab.h │ │ ├── emunicode.h │ │ ├── errlog.h │ │ ├── fileio.h │ │ ├── fileserv.h │ │ ├── getdb.h │ │ ├── getdirectory.h │ │ ├── getfile.h │ │ ├── journal.h │ │ ├── key_names.h │ │ ├── keyboard.h │ │ ├── mem_man.h │ │ ├── minibuf.h │ │ ├── mlisp.h │ │ ├── mlispexp.h │ │ ├── ndbm.h │ │ ├── profile.h │ │ ├── queue.h │ │ ├── search.h │ │ ├── search_extended_algorithm.h │ │ ├── search_simple_algorithm.h │ │ ├── string_map.h │ │ ├── syntax.h │ │ ├── tt.h │ │ ├── undo.h │ │ └── window.h │ ├── MSDOS │ │ └── os_msdos.h │ ├── Macintosh │ │ └── os_mac.h │ ├── Unix │ │ ├── emacs_motif.h │ │ ├── emacs_signal.h │ │ ├── macgetargv.h │ │ ├── motif_keys.h │ │ ├── os_pybemacs.h │ │ ├── os_unix.h │ │ ├── tt_unix.h │ │ ├── unixcomm.h │ │ └── xwin_icn.h │ ├── VMS │ │ ├── os_vms.h │ │ └── vms_comm.h │ └── Windows │ │ ├── ICommandLineImpl.h │ │ ├── emacs_python_interface.h │ │ ├── emacs_python_interface_threaded.h │ │ ├── nt_async.h │ │ ├── nt_comm.h │ │ ├── nt_pipe.h │ │ ├── nt_proc.h │ │ ├── os_pybemacs.h │ │ ├── os_win.h │ │ ├── resource.h │ │ ├── stdafx.h │ │ ├── win_doc.h │ │ ├── win_emacs.h │ │ ├── win_find.h │ │ ├── win_incl.h │ │ ├── win_list_ctrl_ex.h │ │ ├── win_main_frame.h │ │ ├── win_menu.h │ │ ├── win_opt.h │ │ ├── win_registry.h │ │ ├── win_select_buffer.h │ │ ├── win_toolbar.h │ │ └── win_view.h ├── PyQt5 │ ├── WindowsNamedPipes │ │ ├── Makefile │ │ ├── named-pipe-client.cpp │ │ └── named-pipe-server.cpp │ ├── allowed-missing.txt │ ├── be_app.py │ ├── be_client.py │ ├── be_command_line_handler_posix.py │ ├── be_command_line_handler_windows.py │ ├── be_config.py │ ├── be_debug.py │ ├── be_editor.py │ ├── be_emacs_panel.py │ ├── be_exceptions.py │ ├── be_main.py │ ├── be_main_window.py │ ├── be_platform_macosx_specific.py │ ├── be_platform_specific.py │ ├── be_platform_unix_specific.py │ ├── be_platform_win32_specific.py │ ├── be_preferences.py │ ├── be_preferences_dialog.py │ ├── be_user.py │ ├── beclient-macosx.sh │ ├── bemacs-linux.sh │ ├── bemacs-macosx.sh │ ├── bemacs-windows.cmd │ ├── bemacs.icns │ ├── brand.be_version.py │ ├── brand.bemacs-pyinstaller.spec │ ├── brand.py2app-setup-macosx.py │ ├── build-linux.sh │ ├── build-macosx.sh │ ├── build-netbsd.sh │ ├── build-windows.cmd │ ├── build_fix_install_rpath.py │ ├── create_bemacs_client.py │ ├── macosx-app-gdb.sh │ ├── macosx.mak │ ├── make_be_images.py │ ├── org.barrys-emacs.editor.png │ ├── toolbar_images │ │ ├── build_compile.png │ │ ├── build_next_error.png │ │ ├── build_prev_error.png │ │ ├── case_capitalise.png │ │ ├── case_invert.png │ │ ├── case_lower.png │ │ ├── case_upper.png │ │ ├── close-curly-brace.png │ │ ├── edit.png │ │ ├── edit_copy.png │ │ ├── edit_cut.png │ │ ├── edit_delete.png │ │ ├── edit_paste.png │ │ ├── editcopy.png │ │ ├── editcut.png │ │ ├── editpaste.png │ │ ├── file_open.png │ │ ├── file_print.png │ │ ├── file_save.png │ │ ├── file_save_all.png │ │ ├── justify.png │ │ ├── macro_play.png │ │ ├── macro_record.png │ │ ├── macro_stop.png │ │ ├── open-curly-brace.png │ │ ├── region_indent.png │ │ ├── region_undent.png │ │ ├── search_find.png │ │ ├── search_fold_case.png │ │ ├── stop.png │ │ ├── synchronize.png │ │ ├── tools_grep.png │ │ ├── view_white_space.png │ │ ├── view_wrap_long.png │ │ ├── window_cascade.png │ │ ├── window_del_other.png │ │ ├── window_del_this.png │ │ ├── window_split_horiz.png │ │ ├── window_split_vert.png │ │ ├── window_tile_horiz.png │ │ └── window_tile_vert.png │ └── xml_preferences.py ├── PyQt6 │ ├── allowed-missing.txt │ ├── be_app.py │ ├── be_client.py │ ├── be_command_line_handler_posix.py │ ├── be_command_line_handler_windows.py │ ├── be_config.py │ ├── be_debug.py │ ├── be_editor.py │ ├── be_emacs_panel.py │ ├── be_exceptions.py │ ├── be_main.py │ ├── be_main_window.py │ ├── be_platform_macosx_specific.py │ ├── be_platform_specific.py │ ├── be_platform_unix_specific.py │ ├── be_platform_win32_specific.py │ ├── be_preferences.py │ ├── be_preferences_dialog.py │ ├── be_user.py │ ├── beclient-macosx.sh │ ├── bemacs-linux.sh │ ├── bemacs-macosx.sh │ ├── bemacs-windows.cmd │ ├── bemacs.icns │ ├── brand.be_version.py │ ├── brand.bemacs-pyinstaller.spec │ ├── brand.py2app-setup-macosx.py │ ├── build-linux.sh │ ├── build-macosx.sh │ ├── build-netbsd.sh │ ├── build-windows.cmd │ ├── build_fix_install_rpath.py │ ├── create_bemacs_client.py │ ├── macosx-app-gdb.sh │ ├── macosx.mak │ ├── make_be_images.py │ ├── org.barrys-emacs.editor.png │ ├── toolbar_images │ │ ├── build_compile.png │ │ ├── build_next_error.png │ │ ├── build_prev_error.png │ │ ├── case_capitalise.png │ │ ├── case_invert.png │ │ ├── case_lower.png │ │ ├── case_upper.png │ │ ├── close-curly-brace.png │ │ ├── edit.png │ │ ├── edit_copy.png │ │ ├── edit_cut.png │ │ ├── edit_delete.png │ │ ├── edit_paste.png │ │ ├── editcopy.png │ │ ├── editcut.png │ │ ├── editpaste.png │ │ ├── file_open.png │ │ ├── file_print.png │ │ ├── file_save.png │ │ ├── file_save_all.png │ │ ├── justify.png │ │ ├── macro_play.png │ │ ├── macro_record.png │ │ ├── macro_stop.png │ │ ├── open-curly-brace.png │ │ ├── region_indent.png │ │ ├── region_undent.png │ │ ├── search_find.png │ │ ├── search_fold_case.png │ │ ├── stop.png │ │ ├── synchronize.png │ │ ├── tools_grep.png │ │ ├── view_white_space.png │ │ ├── view_wrap_long.png │ │ ├── window_cascade.png │ │ ├── window_del_other.png │ │ ├── window_del_this.png │ │ ├── window_split_horiz.png │ │ ├── window_split_vert.png │ │ ├── window_tile_horiz.png │ │ └── window_tile_vert.png │ └── xml_preferences.py ├── Source │ ├── Common │ │ ├── CommandLine.cpp │ │ ├── abbrev.cpp │ │ ├── abspath.cpp │ │ ├── arith.cpp │ │ ├── buf_man.cpp │ │ ├── buffer.cpp │ │ ├── caseconv.cpp │ │ ├── columns.cpp │ │ ├── db_sqlite3.cpp │ │ ├── dbman.cpp │ │ ├── display.cpp │ │ ├── display_insert_delete.cpp │ │ ├── display_line.cpp │ │ ├── doprint.cpp │ │ ├── dumpjnl.cpp │ │ ├── edoprint.cpp │ │ ├── em_stat.cpp │ │ ├── em_time.cpp │ │ ├── emacs.cpp │ │ ├── emacs_bemacs_python_module.cpp │ │ ├── emacs_init.cpp │ │ ├── emacs_proc.cpp │ │ ├── emacs_python_interface.cpp │ │ ├── emacs_python_interface_threaded.cpp │ │ ├── emacsrtl.cpp │ │ ├── emarray.cpp │ │ ├── emstring.cpp │ │ ├── emstrtab.cpp │ │ ├── emunicode.cpp │ │ ├── errlog.cpp │ │ ├── exec.cpp │ │ ├── ext_func.cpp │ │ ├── file_name_compare.cpp │ │ ├── fileio.cpp │ │ ├── fio.cpp │ │ ├── function.cpp │ │ ├── getdb.cpp │ │ ├── getdirectory.cpp │ │ ├── getfile.cpp │ │ ├── glob_var.cpp │ │ ├── gui_input_mode.cpp │ │ ├── journal.cpp │ │ ├── key_names.cpp │ │ ├── keyboard.cpp │ │ ├── lispfunc.cpp │ │ ├── macros.cpp │ │ ├── mem_man.cpp │ │ ├── metacomm.cpp │ │ ├── minibuf.cpp │ │ ├── mlispars.cpp │ │ ├── mlispexp.cpp │ │ ├── mlisproc.cpp │ │ ├── mlprintf.cpp │ │ ├── ndbm.cpp │ │ ├── options.cpp │ │ ├── queue.cpp │ │ ├── remote_connections.cpp │ │ ├── save_env.cpp │ │ ├── search.cpp │ │ ├── search_extended_algorithm.cpp │ │ ├── search_extended_parser.cpp │ │ ├── search_interface.cpp │ │ ├── search_simple_algorithm.cpp │ │ ├── search_simple_engine.cpp │ │ ├── simpcomm.cpp │ │ ├── spell_checker.cpp │ │ ├── string_map.cpp │ │ ├── subproc.cpp │ │ ├── syntax.cpp │ │ ├── term.cpp │ │ ├── timer.cpp │ │ ├── undo.cpp │ │ ├── variable.cpp │ │ ├── varthunk.cpp │ │ ├── windman.cpp │ │ └── window.cpp │ ├── Unix │ │ ├── bemacs.1 │ │ ├── dld_stub.cpp │ │ ├── emacs_motif.cpp │ │ ├── emacs_signal.cpp │ │ ├── emclient.cpp │ │ ├── linux_ld_fix.cpp │ │ ├── motif_keys.cpp │ │ ├── motifcmd.cpp │ │ ├── motiftk.cpp │ │ ├── motiftrm.cpp │ │ ├── ptyopen_bsd.cpp │ │ ├── ptyopen_linux.cpp │ │ ├── ptyopen_svr4.cpp │ │ ├── trm_ansi.cpp │ │ ├── unix_ext_func.cpp │ │ ├── unix_file_local.cpp │ │ ├── unix_file_remote.cpp │ │ ├── unix_main.cpp │ │ ├── unix_rtl.cpp │ │ ├── unix_rtl_pybemacs.cpp │ │ ├── unix_trm.cpp │ │ └── unixcomm.cpp │ ├── VMS │ │ ├── vms_comm.cpp │ │ ├── vms_ext_func.cpp │ │ ├── vms_file.cpp │ │ └── vms_subprocess.cpp │ ├── Windows │ │ ├── Resources │ │ │ └── win_emacs.ico │ │ ├── nt_async.cpp │ │ ├── nt_comm.cpp │ │ ├── nt_pipe.cpp │ │ ├── nt_proc.cpp │ │ ├── win_file.cpp │ │ ├── win_rtl_pybemacs.cpp │ │ └── win_subproc.cpp │ └── pybemacs │ │ ├── bemacs_python.cpp │ │ ├── bemacs_python.hpp │ │ ├── pybemacs.cpp │ │ ├── python-types.cpp │ │ ├── python_commands.cpp │ │ └── python_thread_control.cpp ├── Unittest │ ├── coverage-debug.cmd │ ├── coverage-inc.rsp │ ├── coverage.cmd │ ├── coverage.ksh │ ├── coverage.mlp │ ├── display_update.py │ ├── ere-bug.ml │ ├── search.ml │ ├── unittest.ml │ └── unittest.mlp ├── Utilities │ ├── db_rtl │ │ ├── db-rtl.r-mak │ │ ├── db-rtl.r-pkg │ │ ├── db_rtl.cpp │ │ ├── db_rtl.dsp │ │ ├── db_rtl.vcproj │ │ ├── stub_rtl.cpp │ │ └── workflow.r-wkf │ ├── dbadd │ │ ├── dbadd.cpp │ │ ├── dbadd.dsp │ │ └── dbadd.vcproj │ ├── dbcreate │ │ ├── dbcreate.cpp │ │ ├── dbcreate.dsp │ │ └── dbcreate.vcproj │ ├── dbdel │ │ ├── dbdel.cpp │ │ ├── dbdel.dsp │ │ └── dbdel.vcproj │ ├── dblist │ │ ├── dblist.cpp │ │ ├── dblist.dsp │ │ └── dblist.vcproj │ ├── dbprint │ │ ├── dbprint.cpp │ │ ├── dbprint.dsp │ │ ├── dbprint.r-mak │ │ ├── dbprint.r-pkg │ │ ├── dbprint.vcproj │ │ └── workflow.r-wkf │ └── mll2db │ │ ├── mll2db.cpp │ │ ├── mll2db.dsp │ │ └── mll2db.vcproj ├── bemacs-cli.sh ├── bemacs-gui.sh ├── build-macosx.sh ├── build-netbsd.sh ├── build-windows.cmd ├── make_unicode_data.py └── setup.py ├── HTML ├── bemacs-faq.html ├── build_docs.py ├── check_is_documented.py ├── doc_index.html ├── emacs-docs.css ├── emacs-documentation.html ├── emacs-javascript.js ├── emacs.cbi ├── extn_frame.html ├── extn_index.html ├── extn_intro.html ├── extn_libraries.html ├── extn_packages.html ├── extn_vms_frame.html ├── extn_vms_index.html ├── extn_vms_libraries.html ├── extn_vms_packages.html ├── fn_a.html ├── fn_b.html ├── fn_c.html ├── fn_d.html ├── fn_e.html ├── fn_f.html ├── fn_front.html ├── fn_g.html ├── fn_h.html ├── fn_i.html ├── fn_j.html ├── fn_k.html ├── fn_l.html ├── fn_list.html ├── fn_m.html ├── fn_n.html ├── fn_p.html ├── fn_q.html ├── fn_r.html ├── fn_s.html ├── fn_shriek.html ├── fn_t.html ├── fn_u.html ├── fn_v.html ├── fn_w.html ├── fn_y.html ├── functions.html ├── mlisp_ref.html ├── mlisp_ref_frame.html ├── mlisp_ref_grid.html ├── mlisp_ref_index.html ├── pg.html ├── pg_command_line.html ├── pg_database.html ├── pg_extension_facilities.html ├── pg_external_programing.html ├── pg_files.html ├── pg_frame.html ├── pg_index.html ├── pg_intro.html ├── pg_macros.html ├── pg_mlisp.html ├── pg_python.html ├── pg_startup.html ├── pg_windows_com.html ├── styles.css ├── ug_advancededit.html ├── ug_basicedit.html ├── ug_bemacs_doc.png ├── ug_bemacs_folder.png ├── ug_bemacs_icon.png ├── ug_contents.html ├── ug_correct.html ├── ug_customise.html ├── ug_defaultkeys.html ├── ug_drop_file.png ├── ug_frame.html ├── ug_index.html ├── ug_intro.html ├── ug_modeline.png ├── ug_packages.html ├── ug_screen.png ├── ug_simple_customise.html ├── ug_specificedit.html ├── ug_start_menu.png ├── ug_top.html ├── ug_windows.png ├── var_a.html ├── var_b.html ├── var_c.html ├── var_d.html ├── var_e.html ├── var_f.html ├── var_g.html ├── var_h.html ├── var_i.html ├── var_j.html ├── var_k.html ├── var_l.html ├── var_list.html ├── var_m.html ├── var_n.html ├── var_o.html ├── var_p.html ├── var_q.html ├── var_r.html ├── var_s.html ├── var_t.html ├── var_u.html ├── var_v.html ├── var_w.html ├── var_x.html └── variables.html ├── INSTALL.html ├── Imports └── ucd │ ├── CaseFolding.txt │ └── UnicodeData.txt ├── Kits ├── FreeBSD │ ├── COMMENT │ ├── brand.DESC │ └── brand.PLIST.template ├── Linux │ ├── DPKG │ │ └── brand.create-dpkg.sh │ ├── RPM │ │ └── SPECS │ │ │ └── brand.bemacs.spec │ ├── bemacs-cli.1 │ ├── bemacs.1 │ ├── bemacs_server.1 │ ├── org.barrys-emacs.editor.desktop │ └── rpm-repo │ │ ├── barrys-emacs-testing.repo │ │ └── barrys-emacs.repo ├── OpenBSD │ ├── COMMENT │ ├── brand.DESC │ └── brand.PLIST.template ├── Windows │ ├── bemacs_win64_code.iss │ └── windows_list_uninstall.py ├── brand.readme-macos.txt └── brand.readme.txt ├── LICENCE ├── Language └── language.mll ├── MLisp ├── Library │ ├── Motif │ │ ├── emacs_motif.key │ │ ├── emacs_motif.ml │ │ ├── motif-def.ml │ │ └── pixmap-split.ml │ ├── Python │ │ └── bemacs_stdio.py │ ├── Unix │ │ ├── unix-buffer.ml │ │ ├── unix-man.ml │ │ ├── unix-process.key │ │ ├── unix-process.ml │ │ └── unix-server.ml │ ├── VMS │ │ ├── cli.ml │ │ ├── cms.ml │ │ ├── dclmode.ml │ │ ├── debug32.mlp │ │ ├── dired.ml │ │ ├── dvi_def.ml │ │ ├── dvidef.ml │ │ ├── emacs_spell.ml │ │ ├── emacs_sys.ml │ │ ├── fscn_def.ml │ │ ├── fscndef.ml │ │ ├── help.ml │ │ ├── jpi_def.ml │ │ ├── jpidef.ml │ │ ├── mail.commands │ │ ├── mail.key │ │ ├── mail.ml │ │ ├── mail_commands.ml │ │ ├── mail_def.ml │ │ ├── mail_routines.ml │ │ ├── messages.key │ │ ├── messages.ml │ │ ├── notes.key │ │ ├── notes.ml │ │ ├── notes.mlp │ │ ├── notes_commands.ml │ │ ├── notes_def.ml │ │ ├── notes_routines.ml │ │ ├── queues.ml │ │ ├── qui_def.ml │ │ ├── quidef.ml │ │ ├── show-system.ml │ │ ├── sjc_def.ml │ │ ├── sjcdef.ml │ │ ├── spell.key │ │ ├── spell.ml │ │ ├── syi_def.ml │ │ ├── syidef.ml │ │ ├── teco.ml │ │ ├── thesaurus.ml │ │ ├── uai_def.ml │ │ ├── uaidef.ml │ │ ├── vms-process.ml │ │ ├── vms_mail.key │ │ └── vms_mail.mlp │ ├── Windows │ │ ├── emacs_windows.key │ │ ├── emacs_windows.ml │ │ ├── vss-view.mlp │ │ └── windows-process.ml │ ├── abbrev.key │ ├── abbrev.ml │ ├── addlog.ml │ ├── addlog.mlp │ ├── area.ml │ ├── autoarg.ml │ ├── bemacs_python_debugger.py │ ├── blissmode.key │ ├── blissmode.ml │ ├── bookmark.ml │ ├── bufdired.ml │ ├── buff.ml │ ├── buffer-commands.ml │ ├── case-convert.ml │ ├── cd-here.mlp │ ├── centerlin.ml │ ├── cmode.key │ ├── cmode.ml │ ├── console-ui.ml │ ├── dabbrev.ml │ ├── debug.key │ ├── debug.ml │ ├── default-emacs-init.ml │ ├── dent.ml │ ├── describe-in-buffer.ml │ ├── describe_word_list.database │ ├── describex.ml │ ├── desword.ml │ ├── diff.key │ ├── diff.ml │ ├── dired.ml │ ├── dired.mlp │ ├── edit-variable.ml │ ├── edtsim.ml │ ├── electricc.key │ ├── electricc.ml │ ├── emacs.mlp │ ├── emacs_control_strings.ml │ ├── emacs_default_autoloads.ml │ ├── emacs_default_keybindings.ml │ ├── emacs_file_reload.ml │ ├── errmsgprs.ml │ ├── expand-word-in-buffer.ml │ ├── expandx.ml │ ├── flasher.ml │ ├── form.ml │ ├── fundmode.ml │ ├── git-commands.ml │ ├── globdel.ml │ ├── goto.ml │ ├── grep-in-buffers.key │ ├── grep.key │ ├── grep.ml │ ├── gtags.key │ ├── gtags.ml │ ├── helpchar.key │ ├── helpchar.ml │ ├── helpchar_apropos.ml │ ├── helpchar_compose.ml │ ├── helpchar_describe.ml │ ├── helpchar_describe_bindings.ml │ ├── helpchar_describe_key.ml │ ├── helpchar_help.ml │ ├── helpchar_help_i.ml │ ├── helpchar_info.ml │ ├── helpchar_news.ml │ ├── helpchar_variable.ml │ ├── helpchar_view_help.ml │ ├── helpchar_where_is.ml │ ├── html-mode.key │ ├── html-mode.ml │ ├── incsearch.key │ ├── incsearch.ml │ ├── info.ml │ ├── info.mlp │ ├── info_at.ml │ ├── info_ctrl_n.ml │ ├── info_ctrl_r.ml │ ├── info_d.ml │ ├── info_g.ml │ ├── info_h.ml │ ├── info_hlp.ml │ ├── info_l.ml │ ├── info_m.ml │ ├── info_n.ml │ ├── info_o.ml │ ├── info_p.ml │ ├── info_save.ml │ ├── info_u.ml │ ├── inno-mode.key │ ├── inno-mode.ml │ ├── install-shield-mode.key │ ├── install-shield-mode.ml │ ├── javamode.key │ ├── javamode.ml │ ├── javascriptmode.key │ ├── javascriptmode.ml │ ├── json-mode.key │ ├── json-mode.ml │ ├── justify.ml │ ├── justipara.ml │ ├── killer.key │ ├── killer.ml │ ├── language_support.ml │ ├── latexmode.key │ ├── latexmode.ml │ ├── lispmode.key │ ├── lispmode.ml │ ├── lk201.ml │ ├── lk201_compose_chart │ ├── lk201_minibuf.ml │ ├── lua-mode.key │ ├── lua-mode.ml │ ├── makebox.ml │ ├── makefile-mode.ml │ ├── minibuf-recall.key │ ├── minibuf-recall.ml │ ├── minibuf.ml │ ├── misc.ml │ ├── mouse-rectangular.ml │ ├── mouse.ml │ ├── newcompil.ml │ ├── normalmod.ml │ ├── ntcmdmode.key │ ├── ntcmdmode.ml │ ├── number.ml │ ├── p4-change-mode.key │ ├── p4-change-mode.ml │ ├── p4-clientspec-mode.key │ ├── p4-clientspec-mode.ml │ ├── p4-commands.ml │ ├── page.ml │ ├── paragraph.ml │ ├── pascal.ml │ ├── pc-keyboard.ml │ ├── pc-mouse.ml │ ├── process.key │ ├── process.ml │ ├── puppet-mode.key │ ├── puppet-mode.ml │ ├── pybemacs-ui.ml │ ├── python-console.ml │ ├── python-debugger.ml │ ├── python-mode.key │ ├── python-mode.ml │ ├── query-replace.ml │ ├── rectangular.key │ ├── rectangular.ml │ ├── rpm-specfile-mode.ml │ ├── rust-mode.key │ ├── rust-mode.ml │ ├── scribe.ml │ ├── sentence.ml │ ├── sh-mode.key │ ├── sh-mode.ml │ ├── shell.mlp │ ├── show-buffer.ml │ ├── show-terminal.ml │ ├── smart-auto-execute.ml │ ├── spawn.ml │ ├── spell.key │ ├── spell.ml │ ├── sql-mode.key │ ├── sql-mode.ml │ ├── sys_literals.ml │ ├── tabs.ml │ ├── tags.key │ ├── tags.ml │ ├── teach.mlp │ ├── template_driver.ml │ ├── textmode.key │ ├── textmode.ml │ ├── time.ml │ ├── trace.ml │ ├── undo.ml │ ├── vbscript-mode.key │ ├── vbscript-mode.ml │ ├── view.ml │ ├── whatcurs.ml │ ├── whereis.ml │ ├── white-space-mini-mode.ml │ ├── windiff.ml │ ├── windows.ml │ ├── writereg.ml │ ├── xhtml-mode.key │ ├── xhtml-mode.ml │ ├── xml-mode.key │ └── xml-mode.ml ├── create_library.py ├── emacs_profile.ml └── emacsinit.ml └── README.rst /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *~ 3 | .bash_history 4 | .directory 5 | *.obj 6 | Kits/Linux/RPM/ROOT/ 7 | Builder/tmp 8 | -------------------------------------------------------------------------------- /Builder/build-for-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cmd=${1?cmd} 3 | ./build-for-epel-7.sh "${cmd}" 4 | ./build-for-epel-8.sh "${cmd}" 5 | ./build-for-fedora.sh "${cmd}" 36 6 | ./build-for-fedora.sh "${cmd}" 37 7 | -------------------------------------------------------------------------------- /Builder/build-for-debian.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CMD=${1:-debian-test-build} 3 | 4 | . /etc/os-release 5 | TARGET=/shared/Downloads/BEmacs/beta/${VERSION_CODENAME} 6 | 7 | case "${VERSION_CODENAME}" in 8 | jammy) 9 | PYQT_VERSION=5 10 | ;; 11 | 12 | *) 13 | PYQT_VERSION=6 14 | ;; 15 | esac 16 | 17 | case "$CMD" in 18 | --install-deps) 19 | sudo apt install \ 20 | devscripts \ 21 | libhunspell-dev python3-cxx-dev libsqlite3-dev libssh-dev unicode-data \ 22 | hunspell hunspell-uk python3-pyqt6 \ 23 | ; 24 | ;; 25 | 26 | *) 27 | python3 ./package_bemacs.py ${CMD} \ 28 | --debian-repos=${TARGET} \ 29 | --pyqt-version=${PYQT_VERSION} \ 30 | --default-font-name="Noto Mono" \ 31 | --default-font-package=fonts-noto-mono \ 32 | --colour \ 33 | |& tee build-for-debian.log 34 | ;; 35 | esac 36 | -------------------------------------------------------------------------------- /Builder/build-for-epel-6.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # need to use the snap shots of centos 6 4 | MOCK_CFG=~/ws/code_SaaS/head/build/cloud_tooling/configurations/mock/prx-c68 5 | 6 | python3 ./package_bemacs.py mock-standalone \ 7 | --release=100 \ 8 | --colour \ 9 | --mock-target=${MOCK_CFG} \ 10 | --no-gui \ 11 | --no-hunspell \ 12 | --kit-sqlite=$HOME/Downloads/sqlite-amalgamation-3280000.zip 13 | -------------------------------------------------------------------------------- /Builder/build-for-epel-7.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | python3 ./package_bemacs.py ${1:-copr-testing} \ 3 | --colour \ 4 | --mock-target=epel-7-x86_64 \ 5 | --release=${2:-auto} \ 6 | --pyqt-version=5 \ 7 | --no-hunspell \ 8 | --kit-sqlite=/shared/Downloads/Subversion/sqlite-amalgamation-3280000.zip \ 9 | --kit-pycxx=/shared/Downloads/Subversion/pycxx-7.1.7.tar.gz 10 | -------------------------------------------------------------------------------- /Builder/build-for-epel-8.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ARCH=$(arch) 3 | 4 | # EPEL-8 specifics: 5 | # no qt6 - use qt5 6 | # g++ compiler error for std::pair in SFTP code - use --no-sftp 7 | python3 ./package_bemacs.py ${1:-copr-testing} \ 8 | --colour \ 9 | --mock-target=epel-8-${ARCH} \ 10 | --release=${2:-auto} \ 11 | --pyqt-version=5 \ 12 | --no-sftp \ 13 | --system-hunspell \ 14 | --default-font-name="DejaVu Sans Mono" \ 15 | --default-font-package=dejavu-sans-mono-fonts \ 16 | --kit-sqlite=/shared/Downloads/Subversion/sqlite-amalgamation-3280000.zip \ 17 | --kit-pycxx=/shared/Downloads/Subversion/pycxx-7.1.7.tar.gz \ 18 | |& tee build-for-epel-8-${ARCH}.log 19 | -------------------------------------------------------------------------------- /Builder/build-for-epel-9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ARCH=$(arch) 3 | 4 | # EPEL-9 specifics: 5 | # no qt6 - use qt5 6 | python3 ./package_bemacs.py ${1:-copr-testing} \ 7 | --colour \ 8 | --mock-target=epel-9-${ARCH} \ 9 | --release=${2:-auto} \ 10 | --pyqt-version=5 \ 11 | --system-hunspell \ 12 | --default-font-name="DejaVu Sans Mono" \ 13 | --default-font-package=dejavu-sans-mono-fonts \ 14 | --kit-sqlite=/shared/Downloads/Subversion/sqlite-amalgamation-3280000.zip \ 15 | --kit-pycxx=/shared/Downloads/Subversion/pycxx-7.1.7.tar.gz \ 16 | |& tee build-for-epel-8-${arch}.log 17 | -------------------------------------------------------------------------------- /Builder/build-for-fedora.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cmd=${1:-mock-testing} 3 | shift 4 | fedora_rel=${1} 5 | shift 6 | arch=${1} 7 | shift 8 | 9 | if [ "$arch" = "" ] 10 | then 11 | arch=$(arch) 12 | fi 13 | 14 | if [ "${fedora_rel}" = "" ] 15 | then 16 | fedora_rel=$(/dev/null 14 | then 15 | echo "Error: PYTHON program ${PYTHON} does not exist" 16 | exit 1 17 | fi 18 | 19 | ${PYTHON} build_bemacs.py "$@" 20 | -------------------------------------------------------------------------------- /Builder/build-netbsd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "Info: Builder build-netbsd.sh Builder in $( pwd )" 5 | 6 | echo "Info: Checking for Python" 7 | if [ "${PYTHON}" = "" ] 8 | then 9 | echo "Error: environment variable PYTHON not set" 10 | exit 1 11 | fi 12 | 13 | if ! which "${PYTHON}" >/dev/null 14 | then 15 | echo "Error: PYTHON program ${PYTHON} does not exist" 16 | exit 1 17 | fi 18 | 19 | for cmd in pkg-config gmake hunspell 20 | do 21 | if ! which $cmd >/dev/null 22 | then 23 | echo "Error: command $cmd must be installed" 24 | exit 1 25 | fi 26 | done 27 | 28 | ${PYTHON} build_bemacs.py \ 29 | --system-hunspell \ 30 | --system-sqlite \ 31 | --default-font-name="Liberation Mono" \ 32 | "$@" 33 | -------------------------------------------------------------------------------- /Builder/build-openbsd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "Info: Builder build-openbsd.sh Builder in $( pwd )" 5 | 6 | echo "Info: Checking for Python" 7 | if [ "${PYTHON}" = "" ] 8 | then 9 | echo "Error: environment variable PYTHON not set" 10 | exit 1 11 | fi 12 | 13 | if ! which "${PYTHON}" >/dev/null 14 | then 15 | echo "Error: PYTHON program ${PYTHON} does not exist" 16 | exit 1 17 | fi 18 | 19 | for cmd in pkg-config gmake hunspell 20 | do 21 | if ! which $cmd >/dev/null 22 | then 23 | echo "Error: command $cmd must be installed" 24 | exit 1 25 | fi 26 | done 27 | 28 | target=${1:-cli} 29 | shift 30 | 31 | # no --system-hunspell \ 32 | ${PYTHON} build_bemacs.py \ 33 | --system-sqlite \ 34 | --no-sftp \ 35 | --default-font-name="Liberation Mono" \ 36 | ${target} "$@" 37 | -------------------------------------------------------------------------------- /Builder/build-venv.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | 4 | set requirements_file=windows-requirements.txt 5 | 6 | "%PYTHON%" -m colour_text "<>info Info:<> Clean up" 7 | if exist venv.tmp rmdir /s /q venv.tmp 8 | 9 | "%PYTHON%" -m colour_text "<>info Info:<> Create venv for %PYTHON%" 10 | "%PYTHON%" -m venv venv.tmp 11 | 12 | "%PYTHON%" -m colour_text "<>info Info:<> Install requirements" 13 | 14 | venv.tmp\Scripts\python.exe -m pip install --upgrade pip setuptools 15 | venv.tmp\Scripts\python.exe -m pip install -r %requirements_file% 16 | venv.tmp\Scripts\python.exe -m pip list 17 | endlocal 18 | -------------------------------------------------------------------------------- /Builder/build-venv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if ! which colour-print >/dev/null 4 | then 5 | function colour-print { 6 | echo "$@" 7 | } 8 | fi 9 | 10 | case "$(uname)" in 11 | Darwin) 12 | requirements_file=macos-requirements.txt 13 | ;; 14 | 15 | *) 16 | colour-print "<>error Error:<> not support on $(uanme)" 17 | exit 1 18 | ;; 19 | esac 20 | 21 | colour-print "<>info Info:<> Clean up" 22 | rm -rf venv.tmp 23 | 24 | colour-print "<>info Info:<> Create venv for $PYTHON" 25 | $PYTHON -m venv venv.tmp 26 | 27 | colour-print "<>info Info:<> Install requirements" 28 | 29 | venv.tmp/bin/python -m pip install --upgrade pip setuptools 30 | venv.tmp/bin/python -m pip install wheel 31 | venv.tmp/bin/python -m pip install -r ${requirements_file} 32 | venv.tmp/bin/python -m pip list 33 | -------------------------------------------------------------------------------- /Builder/build-windows.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | if "%BUILDER_TOP_DIR%" == "" ( 4 | echo Error: BUILDER_TOP_DIR is not set. Hint: run builder_custom_init.cmd 5 | goto :eof 6 | ) 7 | 8 | if "%PYTHON%" == "" ( 9 | echo Error: PYTHON is not set. Hint: fix builder_custom_init.cmd to set it 10 | goto :eof 11 | ) 12 | 13 | if "%BUILDER_CFG_PLATFORM%" == "" ( 14 | echo Error: BUILDER_CFG_PLATFORM is not set. Hint: fix builder_custom_init.cmd to set it 15 | goto :eof 16 | ) 17 | 18 | "%PYTHON%" -m pip install --user --upgrade colour-text 19 | 20 | if "%1" == "--no-venv" ( 21 | shift 22 | ) else ( 23 | call build-venv.cmd windows 24 | ) 25 | 26 | set VPYTHON=%CD%\venv.tmp\Scripts\python.exe 27 | 28 | set APPMODE=--gui 29 | if "%1" == "--cli" ( 30 | set APPMODE=--cli 31 | shift 32 | ) 33 | if "%1" == "--gui" ( 34 | set APPMODE=--gui 35 | shift 36 | ) 37 | 38 | if "%1" == "--enable-debug" ( 39 | set BUILD_OPT=--enable-debug 40 | shift 41 | ) 42 | 43 | %VPYTHON% build_bemacs.py gui --colour --vcredist=k:\subversion %APPMODE% %BUILD_OPT% 2>&1 | "%PYTHON%" -u build_tee.py build.log 44 | 45 | if "%1" == "--install" for %%f in (tmp\bemacs-*-setup.exe) do start /wait %%f 46 | endlocal 47 | -------------------------------------------------------------------------------- /Builder/build_tee.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import sys 3 | import re 4 | 5 | import build_log 6 | # turn on colour output 7 | log = build_log.BuildLog() 8 | log.setColour( True ) 9 | 10 | def main( argv ): 11 | all_copies = [] 12 | mode = 'w' 13 | for filename in argv[1:]: 14 | if filename == '-a': 15 | mode = 'a' 16 | else: 17 | all_copies.append( open( filename, mode ) ) 18 | 19 | colour = re.compile( r'\033\[[\d;]*m' ) 20 | 21 | for line in sys.stdin: 22 | # allow colours to be shown seen 23 | sys.stdout.write( line ) 24 | 25 | # remove colouring from log files. 26 | line = colour.sub( '', line ) 27 | 28 | for copy in all_copies: 29 | copy.write( line ) 30 | 31 | return 0 32 | 33 | if __name__ == '__main__': 34 | sys.exit( main( sys.argv ) ) 35 | -------------------------------------------------------------------------------- /Builder/copy-kit.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | for %%f in (tmp\bemacs-*-setup.exe) do set KIT=%%f 4 | dir %KIT% 5 | copy %KIT% k:\BEmacs\beta 6 | endlocal 7 | -------------------------------------------------------------------------------- /Builder/debian-package-dh-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # script called from debian/rules make file 4 | # 5 | set -x 6 | set -e 7 | export DESTDIR="${1:? arg 1 must be DESTDIR}" 8 | shift 9 | export PYQT_VERSION="${1:? arg 2 must be the PyQt version}" 10 | shift 11 | 12 | export BUILDER_TOP_DIR=$(pwd) 13 | export PYTHON=/usr/bin/python3 14 | 15 | echo "Info: debian bemacs builder BUILDER_TOP_DIR ${BUILDER_TOP_DIR} DESTDIR ${DESTDIR} PYTHON ${PYTHON}" 16 | 17 | cd Builder 18 | 19 | ${PYTHON} ./build_bemacs.py gui \ 20 | --pyqt-version=${PYQT_VERSION} \ 21 | --no-warnings-as-errors \ 22 | --system-hunspell \ 23 | --system-pycxx \ 24 | --system-sqlite 25 | 26 | find "$DESTDIR" -name __pycache__ -prune -exec rm -rfv {} ';' 27 | 28 | for page in bemacs.1 bemacs-cli.1 bemacs_server.1 29 | do 30 | mkdir -p "${DESTDIR}/usr/share/man/man1" 31 | gzip -c "${BUILDER_TOP_DIR}/Kits/Linux/${page}" > "${DESTDIR}/usr/share/man/man1/${page}.gz" 32 | done 33 | 34 | mkdir -p "${DESTDIR}/usr/share/bemacs" 35 | cp "${BUILDER_TOP_DIR}/Editor/PyQt6/org.barrys-emacs.editor.png" "${DESTDIR}/usr/share/bemacs/org.barrys-emacs.editor.png" 36 | mkdir -p "${DESTDIR}/usr/share/applications" 37 | cp "${BUILDER_TOP_DIR}/Kits/Linux/org.barrys-emacs.editor.desktop" "${DESTDIR}/usr/share/applications/org.barrys-emacs.editor.desktop" 38 | -------------------------------------------------------------------------------- /Builder/git-log-for-readme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | last_tag=$( git describe --tags --abbrev=0 ) 3 | cd ${BUILDER_TOP_DIR} 4 | git log ${last_tag}..HEAD --name-only >Builder/tmp/all.log 5 | git log ${last_tag}..HEAD --name-only -- MLisp >Builder/tmp/mlisp.log 6 | git log ${last_tag}..HEAD --name-only -- Editor >Builder/tmp/editor.log 7 | git log ${last_tag}..HEAD --name-only -- Describe HTML >Builder/tmp/docs.log 8 | 9 | ls -1 ${BUILDER_TOP_DIR}/Builder/tmp/*.log 10 | -------------------------------------------------------------------------------- /Builder/import-hunspell.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # hunspell source code: 4 | # https://github.com/hunspell/hunspell/tags 5 | # 6 | # dictionaries for hunspell: 7 | # https://sourceforge.net/projects/wordlist/files/speller/ 8 | 9 | if ! which colour-print >/dev/null 10 | then 11 | function colour-print() { 12 | echo "${@}" 13 | } 14 | fi 15 | 16 | if [ "${#}" -lt 2 ] 17 | then 18 | colour-print "<>error Error:<> too few args" 19 | echo "Example: ./import-hunspell.sh /Volumes/Downloads/BEmacs/dependencies/hunspell-1.7.0.tar.gz /Volumes/Downloads/BEmacs/dependencies/*.zip" 20 | exit 1 21 | fi 22 | 23 | colour-print "<>info Info:<> install hunspell source" 24 | rm -rf ../Imports/hunspell-* 25 | mkdir -p ../Imports 26 | tar -xf "${1? hunspell tar ball}" -C ../Imports 27 | 28 | cd ../Imports 29 | shift 30 | 31 | ln -sf hunspell-* hunspell 32 | cd hunspell 33 | rm -rf tmp.dict 34 | mkdir tmp.dict 35 | 36 | colour-print "<>info Info:<> installing dictionary kits" 37 | for DICT in "$@" 38 | do 39 | unzip -q ${DICT} -d tmp.dict 40 | for FILE in tmp.dict/*.dic tmp.dict/*.aff 41 | do 42 | if [ -e "$FILE" ] 43 | then 44 | NEWFILE=${FILE/-large/} 45 | mv "$FILE" "$NEWFILE" 46 | colour-print "<>info Info:<> Dictionary $PWD/$NEWFILE" 47 | fi 48 | done 49 | done 50 | 51 | -------------------------------------------------------------------------------- /Builder/import-pycxx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ../Imports 4 | rm -rf /pycxx-* 5 | tar xf "$1" 6 | -------------------------------------------------------------------------------- /Builder/import-sqlite3.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem 3 | rem import-sqlite3.cmd 4 | rem 5 | setlocal 6 | if "%1" == "" ( 7 | colour-print "<>error Error:<> too few args" 8 | echo "Example: import-sqlite3.cmd k:\BEmacs\dependencies\sqlite-amalgamation-3280000.zip" 9 | exit /b 1 10 | ) 11 | 12 | colour-print "<>info Info:<> install sqlite3 source" 13 | 14 | rmdir /s /q ..\Imports\sqlite 15 | py -3 -m zipfile --extract %1 ..\Imports 16 | cd ..\Imports 17 | for /d %%d in (sqlite*) do move %%d sqlite 18 | endlocal 19 | -------------------------------------------------------------------------------- /Builder/import-sqlite3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf ../Imports/sqlite 4 | mkdir -p ../Imports/sqlite 5 | unzip -j "$1" -d ../Imports/sqlite 6 | -------------------------------------------------------------------------------- /Builder/linux-requirements.txt: -------------------------------------------------------------------------------- 1 | xml-preferences 2 | -------------------------------------------------------------------------------- /Builder/local-install-unix.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd ${BUILDER_TOP_DIR?run builder_init}/Builder/tmp/ROOT 3 | 4 | case "$BUILDER_CFG_PLATFORM" in 5 | NetBSD) 6 | tar_cmd=gtar 7 | ;; 8 | *) 9 | tar_cmd=tar 10 | ;; 11 | esac 12 | 13 | # create tar ball as if files are owner by root:root 14 | $tar_cmd czf ${TMPDIR:-/tmp}/bemacs-tmp.tar.gz --owner=root --group=root usr 15 | # do not change meta data on existing directories 16 | sudo_cmd="$(which sudo)" 17 | $sudo_cmd $tar_cmd xzf ${TMPDIR:-/tmp}/bemacs-tmp.tar.gz --keep-directory-symlink --no-overwrite-dir -C / 18 | -------------------------------------------------------------------------------- /Builder/macos-requirements.txt: -------------------------------------------------------------------------------- 1 | # build tools 2 | py2app>=0.11 3 | pyinstaller 4 | dmgbuild 5 | pyobjc-framework-Quartz 6 | 7 | # for colour messages 8 | colour-text 9 | 10 | # emacs dependencies 11 | PyQt6==6.4.2 12 | xml-preferences>=1.1.2 13 | -------------------------------------------------------------------------------- /Builder/tag-release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VER=${1?version} 4 | 5 | case "${VER}" in 6 | [0-9].[0-9].[0-9]) 7 | if [ "$(git tag --list ${VER})" != "" ] 8 | then 9 | echo "Tag ${VER} already exists" 10 | exit 1 11 | else 12 | git tag -a ${VER} -m "Release ${VER}" 13 | git push --tags 14 | fi 15 | ;; 16 | *) 17 | echo "Tag should be \\d+.\\d+.\\d+" 18 | exit 1 19 | ;; 20 | esac 21 | -------------------------------------------------------------------------------- /Builder/unzip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import zipfile 4 | 5 | def main( argv ): 6 | with zipfile.ZipFile( argv[1], 'r' ) as t: 7 | t.extractall( argv[2] ) 8 | 9 | return 0 10 | 11 | if __name__ == '__main__': 12 | sys.exit( main( sys.argv ) ) 13 | -------------------------------------------------------------------------------- /Builder/version_info.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Barry's Emacs version info 3 | # 4 | maturity: V 5 | major: 8 6 | minor: 10 7 | patch: 1 8 | 9 | version: %(maturity)s%(major)s.%(minor)s.%(patch)s 10 | mac_short_version: %(maturity)s%(major)s.%(minor)s 11 | win_version: %(major)s.%(minor)s.%(patch)s 12 | -------------------------------------------------------------------------------- /Builder/windows-requirements.txt: -------------------------------------------------------------------------------- 1 | # build tools 2 | win-app-packager >= 1.4.3 3 | colour-text 4 | 5 | PyQt6 6 | xml-preferences>=1.1.2 7 | -------------------------------------------------------------------------------- /Describe/create_describe_database.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import sys 3 | import sqlite3 4 | 5 | def main( argv ): 6 | mll_file = argv[1] 7 | db_file = argv[2] 8 | 9 | createDatabaseFromMll( mll_file, db_file ) 10 | return 0 11 | 12 | def createDatabaseFromMll( mll_file, db_file ): 13 | assert db_file.endswith( '.db' ) 14 | 15 | db = sqlite3.connect( db_file ) 16 | c = db.cursor() 17 | c.execute( '''CREATE TABLE key_value (key TEXT PRIMARY KEY, value TEXT)''' ) 18 | 19 | with open( mll_file, 'rb' ) as f: 20 | key = None 21 | all_body = None 22 | for line in f: 23 | line = line.decode('utf-8').replace( '\r\n', '\n' ) 24 | if line[0] == '[' and line[-2:] == ']\n': 25 | if all_body is not None: 26 | value = ''.join(all_body) 27 | c.execute( '''INSERT INTO key_value VALUES( ?, ? )''', 28 | (key, value) ) 29 | key = line[1:-2] 30 | all_body = [] 31 | continue 32 | 33 | all_body.append( line ) 34 | 35 | # and output the last entry 36 | value = ''.join(all_body) 37 | c.execute( '''INSERT INTO key_value VALUES( ?, ? )''', 38 | (key, value) ) 39 | all_body = [] 40 | 41 | db.commit() 42 | db.close() 43 | 44 | if __name__ == '__main__': 45 | sys.exit( main( sys.argv ) ) 46 | -------------------------------------------------------------------------------- /Describe/makedesc.cmd: -------------------------------------------------------------------------------- 1 | cd ..\tmp 2 | echo ;empty >emacsinit.ml 3 | copy ..\mlisp\emacs_profile.ml . 4 | set emacs_path="emacs_library:" 5 | set emacs_library=. 6 | \work\emacsv7\editor\editor\Release\editor /restore=nothing /package=..\describe\em_desc 7 | cd ..\describe 8 | -------------------------------------------------------------------------------- /Editor/Include/Common/em_gen.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 1986 2 | // Barry A. Scott and Nick Emery 3 | 4 | const int SAVED_BUFFER_MAX( 100 ); // maximum number of buffers to save in subprocess 5 | const int MAX_SYNTAX_TABLES( 40 ); // the maximum number of syntax tables 6 | const int MAX_ABBREV_TABLES( 40 ); // the maximum number of abbrev tables 7 | const int BUFFERSIZE( 300 ); // Maximum buffer size 8 | const int MLLINE_SIZE( 300 ); 9 | const int MAXFILES( 512 ); // Maximum size of vecfiles 10 | #ifndef BUFSIZ 11 | #define BUFSIZ 512 12 | #endif 13 | 14 | // 15 | // Even if save_environment is not required these symbols are. 16 | // 17 | 18 | enum malloc_block_type 19 | { 20 | malloc_type_none = 0, 21 | malloc_type_char, 22 | malloc_type_star_star, 23 | malloc_type_emacs_object, 24 | malloc_type_emacs_object_Expression_Vector, 25 | // insert new types before this one 26 | malloc_type_last 27 | }; 28 | -------------------------------------------------------------------------------- /Editor/Include/Common/em_stat.h: -------------------------------------------------------------------------------- 1 | // 2 | // em_stat.h 3 | // 4 | // Copyright (c) 1996 Barry A. Scott 5 | // 5-Feb-1996 6 | // 7 | #include 8 | #include 9 | #include 10 | 11 | class EmacsFileStat 12 | { 13 | private: 14 | struct stat stat_buf; 15 | 16 | public: 17 | EmacsFileStat(); 18 | virtual ~EmacsFileStat(); 19 | 20 | bool stat( const char *file_name ); 21 | bool stat( FILE *file ); 22 | bool stat( int fd ); 23 | 24 | bool is_regular(); 25 | bool is_directory(); 26 | 27 | const struct stat &data(void) 28 | { 29 | return stat_buf; 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /Editor/Include/Common/em_util.h: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // em_util.h 4 | // 5 | // 6 | 7 | 8 | // 9 | // 10 | // The Save classes make a copy of there arg and 11 | // restore the arg on destruction 12 | // 13 | // 14 | template 15 | class Save 16 | { 17 | public: 18 | Save( type *v ) : from( v ) , value( *v ) { } 19 | ~Save() { *from = value; } 20 | private: 21 | type *from; 22 | type value; 23 | }; 24 | 25 | 26 | class _dbg_fn_trace 27 | { 28 | public: 29 | _dbg_fn_trace( const EmacsString &fn_name, bool enabled ); 30 | ~_dbg_fn_trace(); 31 | 32 | void _msg( const EmacsString &msg ); 33 | void _result( const EmacsString &results ); 34 | 35 | static int callDepth(); 36 | private: 37 | const bool m_enabled; 38 | static int s_call_depth; 39 | const EmacsString m_fn_name; 40 | EmacsString m_result; 41 | int m_call_depth; 42 | }; 43 | 44 | -------------------------------------------------------------------------------- /Editor/Include/Common/errlog.h: -------------------------------------------------------------------------------- 1 | // 2 | // copyright 1994-1998 Barry A. Scott 3 | // 4 | 5 | class ErrorBlock : public EmacsObject 6 | { 7 | public: 8 | ErrorBlock( EmacsBuffer *erb, int erp, EmacsBuffer *b, int p); 9 | ~ErrorBlock(); 10 | 11 | EMACS_OBJECT_FUNCTIONS( ErrorBlock ) 12 | 13 | Marker e_mess; // points to the error message 14 | Marker e_text; // points to the next compiler error 15 | ErrorBlock *e_next; // the next error in the chain 16 | ErrorBlock *e_prev; // the next error in the chain 17 | private: 18 | // prevent the compiler making the default class functions 19 | ErrorBlock(); 20 | ErrorBlock( const ErrorBlock & ); 21 | ErrorBlock &operator=( const ErrorBlock & ); 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /Editor/Include/Common/getdb.h: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // getdb.h 4 | // 5 | // 6 | 7 | class DatabaseEntryNameTable : public EmacsStringTable 8 | { 9 | public: 10 | EMACS_OBJECT_FUNCTIONS( DatabaseEntryNameTable ) 11 | DatabaseEntryNameTable( DatabaseSearchList *dbs ); 12 | virtual ~DatabaseEntryNameTable(); 13 | private: 14 | virtual void makeTable( EmacsString &prefix ); 15 | 16 | static void indexDatabaseEntryCallback( const EmacsString &key ); 17 | 18 | DatabaseSearchList *dbs; 19 | static DatabaseEntryNameTable *activeTable; 20 | }; 21 | -------------------------------------------------------------------------------- /Editor/Include/Common/getdirectory.h: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // getdirectory.h 4 | // 5 | // 6 | class EmacsDirectoryTable : public EmacsStringTable 7 | { 8 | public: 9 | EMACS_OBJECT_FUNCTIONS( EmacsDirectoryTable ) 10 | EmacsDirectoryTable(); 11 | virtual ~EmacsDirectoryTable(); 12 | private: 13 | virtual void makeTable( EmacsString &prefix ); 14 | // return true is the entry allows the get to finish 15 | // for example if entry is a directory don't finish 16 | // but if its a file do finish 17 | virtual bool terminalEntry( const EmacsString &entry ); 18 | 19 | // override to use file_name_compare case blind compare 20 | virtual int compareKeys( const EmacsString &string1, const EmacsString &string2 ); 21 | virtual int commonPrefix( const EmacsString &string1, const EmacsString &string2 ); 22 | }; 23 | -------------------------------------------------------------------------------- /Editor/Include/Common/getfile.h: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // getfile.h 4 | // 5 | // 6 | class EmacsFileTable : public EmacsStringTable 7 | { 8 | public: 9 | EMACS_OBJECT_FUNCTIONS( EmacsFileTable ) 10 | EmacsFileTable(); 11 | virtual ~EmacsFileTable(); 12 | 13 | private: 14 | virtual void makeTable( EmacsString &prefix ); 15 | 16 | // return true is the entry allows the get to finish 17 | // for example if entry is a directory don't finish 18 | // but if its a file do finish 19 | virtual bool terminalEntry( const EmacsString &entry ); 20 | 21 | // override to use file_name_compare case blind compare 22 | virtual int compareKeys( const EmacsString &string1, const EmacsString &string2 ); 23 | virtual int commonPrefix( const EmacsString &string1, const EmacsString &string2 ); 24 | }; 25 | -------------------------------------------------------------------------------- /Editor/Include/Common/key_names.h: -------------------------------------------------------------------------------- 1 | // 2 | // key_names.h 3 | // 4 | // Copyright (c) 1997-2010 Barry A. Scott 5 | // 6 | typedef std::map< EmacsString, EmacsString > KeysMapping_t; 7 | 8 | class key_name_entry 9 | { 10 | public: 11 | key_name_entry( const char *n, const char *v ); 12 | key_name_entry( const char *n, const EmacsChar_t *v ); 13 | key_name_entry( const key_name_entry &from ); 14 | EmacsString name; 15 | EmacsString value; 16 | EmacsString compressed_value; 17 | }; 18 | 19 | class key_name 20 | { 21 | public: 22 | key_name(); 23 | virtual ~key_name(); 24 | 25 | void loadMappings( key_name_entry *_key_names, int sizeof_key_names ); 26 | void addMapping( const EmacsString &name, const EmacsString &keys ); 27 | 28 | // return the value of a named key 29 | EmacsString valueOfKeyName( const EmacsString &keyname ); 30 | 31 | // return the name of the key that best matches the chars in keyname 32 | // and return the number of chars matched 33 | int keyNameOfValue( const EmacsString &chars, EmacsString &keyname); 34 | 35 | private: 36 | void buildCompressedMapping(); 37 | 38 | KeysMapping_t name_to_keys; 39 | KeysMapping_t keys_to_name; 40 | 41 | KeysMapping_t name_to_compressed_keys; 42 | KeysMapping_t compressed_keys_to_name; 43 | }; 44 | 45 | #if defined( EMACS_LK201_KEYBOARD_SUPPORT ) 46 | extern key_name LK201_key_names; 47 | #endif 48 | extern key_name PC_key_names; 49 | -------------------------------------------------------------------------------- /Editor/Include/Common/minibuf.h: -------------------------------------------------------------------------------- 1 | // 2 | // minibuf.h 3 | // 4 | class MiniBufferBody 5 | { 6 | public: 7 | MiniBufferBody(); 8 | ~MiniBufferBody(); 9 | 10 | MiniBufferBody( const MiniBufferBody &other ); 11 | MiniBufferBody &operator=( const MiniBufferBody &other ); 12 | 13 | // there are two types of body 14 | // 15 | void setMessageBody( const EmacsString &body_ ); 16 | void setPromptBody( const EmacsString &body_ ); 17 | void clearMessageBody(); 18 | 19 | const EmacsString& getBody() const; 20 | bool haveBody() const; 21 | bool isPromptBody() const; 22 | 23 | private: 24 | enum body_type_t { no_body, message_body, prompt_body } body_type; 25 | EmacsString body; 26 | }; 27 | -------------------------------------------------------------------------------- /Editor/Include/Common/profile.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created 4-NOV-1992 02:17:40 by VAX SDL V3.2-12 Source: 28-FEB-1987 18:24:45 SCOTT_VMS_VAX_SRC_ROOT:[SRC.EDITOR]PROFILE_ST 3 | // 4 | 5 | // MODULE emacs_profile 6 | // Copyright (c) 1982, 1983, 1984, 1985 7 | // Barry A. Scott and nick Emery 8 | // Definitions for the EMACS profiler 9 | struct emacs_profile 10 | { 11 | int *histogram; // pointer to histogram vector 12 | int total_samples; // number of samples taken 13 | int outside_samples; // samples outside of the emacs code 14 | int histogram_size; // size of vector 15 | int resolution; // resolution for profileing 16 | int enabled; // true is profileing is enabled 17 | }; 18 | -------------------------------------------------------------------------------- /Editor/Include/Common/string_map.h: -------------------------------------------------------------------------------- 1 | // 2 | // string_map.h 3 | // 4 | // Copyright (c) 2000 Barry A. Scott 5 | // 6 | // 7 | class StringMapBase 8 | { 9 | protected: 10 | StringMapBase( const char **_strings, int *_values ); 11 | virtual ~StringMapBase(); 12 | 13 | bool map( const EmacsString &key, int &value ); 14 | EmacsString map( int value ); 15 | private: 16 | const char **strings; 17 | int *values; 18 | }; 19 | 20 | template 21 | class StringMap : public StringMapBase 22 | { 23 | public: 24 | StringMap( const char **_strings, T *_values ) 25 | : StringMapBase( _strings, (int *)_values ) 26 | { } 27 | virtual ~StringMap() { } 28 | 29 | bool map( const EmacsString &key, T &value ) 30 | { return StringMapBase::map( key, (int &)value ); } 31 | EmacsString map( T value ) 32 | { return StringMapBase::map( value ); } 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/Include/Common/undo.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 1982-2010 2 | // Barry A. Scott 3 | // 4 | // Definitions of objects used by the undo facility 5 | // The events that can exist in the undo queue. 6 | // 7 | enum UNDO_type 8 | { 9 | UNDO_BOUNDARY, // A boundary between sets of undoable things 10 | UNDO_UNDOABLE, // What's done is done -- some things can't be undone 11 | UNDO_DELETE, // Delete characters to perform the undo 12 | UNDO_INSERT // Insert .... 13 | }; 14 | 15 | struct undorec 16 | { // A record of a single undo action 17 | UNDO_type undo_kind; // the kind of action to be undone 18 | int undo_len; // The extent of the undo (characters 19 | // inserted or deleted) 20 | EmacsBuffer *undo_buffer; // the buffer where the action takes place 21 | int undo_dot; // Where dot is 22 | int undo_modified; // buffer-is-modified count from the buffer 23 | }; 24 | 25 | // 26 | // The undo history consists of two circular queues, one of characters and 27 | // one of UndoRecs. When Uinsert recs are added to UndoRQ characters get 28 | // added to UndoCQ. The position of the characters can be reconstructed by 29 | // subtracting len from the fill pointer. 30 | // 31 | const int UNDO_MAX_REC( 10000 ); 32 | const int UNDO_MAX_CHAR( 100003 ); 33 | -------------------------------------------------------------------------------- /Editor/Include/Unix/emacs_signal.h: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // emacs_signal.h 4 | // 5 | #include 6 | 7 | class EmacsPosixSignalHandler 8 | { 9 | public: 10 | EmacsPosixSignalHandler( int sig_to_handle ); 11 | virtual ~EmacsPosixSignalHandler(); 12 | 13 | void installHandler(); 14 | void removeHandler(); 15 | 16 | protected: 17 | virtual void signalHandler() = 0; 18 | private: 19 | 20 | bool is_installed; 21 | int sig_to_handle; 22 | struct sigaction previous_action; 23 | 24 | static void signal_dispatcher( int the_signal ); 25 | enum {MAX_SIG_HANDLED = 30}; 26 | static EmacsPosixSignalHandler *active_handlers[MAX_SIG_HANDLED]; 27 | }; 28 | 29 | // 30 | // Allow a signal to be manipulated 31 | // 32 | class EmacsPosixSignal 33 | { 34 | public: 35 | EmacsPosixSignal( int sig ); 36 | virtual ~EmacsPosixSignal(); 37 | void blockSignal(); 38 | void permitSignal(); 39 | void defaultSignalAction(); 40 | void ignoreSignalAction(); 41 | void doNotRestore() { restore_signal = false; } 42 | void doRestore() { restore_signal = true; } 43 | private: 44 | bool restore_signal; // true if the destructor must restore the signal state 45 | int sig; 46 | sigset_t signal_set; 47 | }; 48 | 49 | -------------------------------------------------------------------------------- /Editor/Include/Unix/macgetargv.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | FTMac_GetArgv 4 | 5 | 6 | argc/argv emulation for the Mac. Converts files dropped 7 | onto the application to full paths, and stuff them into 8 | argv. 9 | 10 | 11 | pargv :: a pointer to an argv array. The array doesn't need to 12 | exist before calling this function. 13 | 14 | 15 | The number of files dropped onto the app (ie. argc) 16 | */ 17 | 18 | int FTMac_GetArgv(char ***pargv, char *psn_arg ); 19 | 20 | -------------------------------------------------------------------------------- /Editor/Include/Unix/motif_keys.h: -------------------------------------------------------------------------------- 1 | // keyboard conversion table 2 | class EmacsMotifKeySymMap 3 | { 4 | public: 5 | EmacsMotifKeySymMap(); 6 | ~EmacsMotifKeySymMap(); 7 | 8 | bool init(); 9 | 10 | const unsigned char *lookup( KeySym k, int modifiers ) const; 11 | 12 | private: 13 | int getentry(); 14 | 15 | // functions 16 | int kf_getch(); 17 | int kf_getns(); 18 | void kf_ungetch(); 19 | int gettoken( int &integer_result, EmacsString &string_result ); 20 | 21 | 22 | // variables 23 | unsigned char *buffer; 24 | unsigned char *get_ptr; 25 | unsigned char *buffer_end; 26 | 27 | int linenr; 28 | unsigned char *line_start; 29 | 30 | enum { max_map_entries = 256 }; 31 | 32 | struct keysym_map 33 | { 34 | enum { max_keymap_entry_size = 8 }; 35 | // variables 36 | KeySym key_code; 37 | unsigned char translation[max_keymap_entry_size]; 38 | unsigned char enh_translation[max_keymap_entry_size]; 39 | unsigned char shift_translation[max_keymap_entry_size]; 40 | unsigned char ctrl_translation[max_keymap_entry_size]; 41 | unsigned char ctrl_shift_translation[max_keymap_entry_size]; 42 | }; 43 | int map_entries; 44 | struct keysym_map map[max_map_entries]; 45 | }; 46 | -------------------------------------------------------------------------------- /Editor/Include/Unix/xwin_icn.h: -------------------------------------------------------------------------------- 1 | #define write_scrolls_width 38 2 | #define write_scrolls_height 38 3 | #define write_scrolls_x_hot 0 4 | #define write_scrolls_y_hot 0 5 | 6 | static unsigned char write_scrolls_bits[] = 7 | { 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 10 | 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x01, 0x80, 0x09, 0x00, 0x80, 11 | 0x00, 0xc0, 0xff, 0x00, 0x40, 0x00, 0x40, 0x20, 0x01, 0x50, 0x00, 0x40, 12 | 0x10, 0x02, 0x78, 0x00, 0x40, 0xf0, 0x03, 0x50, 0x00, 0x40, 0x10, 0x00, 13 | 0xa0, 0x00, 0x40, 0x10, 0x00, 0x40, 0x01, 0x40, 0x10, 0x00, 0xc0, 0x02, 14 | 0x40, 0x10, 0x00, 0x40, 0x05, 0x40, 0x10, 0x00, 0x40, 0x0a, 0x40, 0x10, 15 | 0x00, 0x40, 0x14, 0x40, 0x10, 0x00, 0x40, 0x28, 0x40, 0x10, 0x00, 0x40, 16 | 0x30, 0x40, 0x10, 0x00, 0x40, 0x00, 0x40, 0x30, 0x00, 0x40, 0x00, 0x40, 17 | 0x70, 0x00, 0x40, 0x00, 0x40, 0xf0, 0x07, 0x40, 0x00, 0x40, 0xf0, 0x07, 18 | 0x40, 0x00, 0x40, 0xf0, 0x03, 0x40, 0x00, 0x40, 0xf0, 0x01, 0x40, 0x00, 19 | 0x40, 0xf0, 0x00, 0x40, 0x00, 0x40, 0x70, 0x00, 0x20, 0x00, 0x40, 0x30, 20 | 0x00, 0x18, 0x00, 0x20, 0x10, 0x00, 0xf0, 0xff, 0x3f, 0x18, 0x00, 0x80, 21 | 0x00, 0x00, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 24 | }; 25 | -------------------------------------------------------------------------------- /Editor/Include/Windows/emacs_python_interface.h: -------------------------------------------------------------------------------- 1 | // 2 | // Emacs_python_interface.h 3 | // 4 | // Copyright (c) 1999-2002 Barry A. Scott 5 | // 6 | class EmacsPythonCommand 7 | { 8 | public: 9 | EmacsPythonCommand(); 10 | virtual ~EmacsPythonCommand(); 11 | 12 | bool executeCommand(); 13 | 14 | bool failed() const; 15 | const EmacsString &failureReason() const; 16 | const Expression &getResult() const; 17 | 18 | void commandSucceeded( const Expression &result ); 19 | void commandFailed( const EmacsString &reason ); 20 | 21 | protected: 22 | virtual void executeCommandImpl() = 0; 23 | 24 | void runPythonStringInsideTryExcept( const EmacsString &command ); 25 | 26 | private: 27 | bool command_failed; 28 | EmacsString failure_reason; 29 | Expression result; 30 | }; 31 | -------------------------------------------------------------------------------- /Editor/Include/Windows/nt_async.h: -------------------------------------------------------------------------------- 1 | // 2 | // Module Name: async.h 3 | // 4 | // Copyright (c) 1991, Microsoft Corporation 5 | // 6 | // Defines types and functions used by async module. 7 | // 8 | // History: 9 | // 06-29-92 Davidc Created. 10 | // 11 | 12 | 13 | // 14 | // Function prototypes 15 | // 16 | 17 | HANDLE 18 | CreateAsync( 19 | BOOL InitialState 20 | ); 21 | 22 | VOID 23 | DeleteAsync( 24 | HANDLE AsyncHandle 25 | ); 26 | 27 | BOOL 28 | ReadFileAsync( 29 | HANDLE hFile, 30 | LPVOID lpBuffer, 31 | DWORD nBytesToRead, 32 | HANDLE AsyncHandle 33 | ); 34 | 35 | BOOL 36 | WriteFileAsync( 37 | HANDLE hFile, 38 | LPVOID lpBuffer, 39 | DWORD nBytesToWrite, 40 | HANDLE AsyncHandle 41 | ); 42 | 43 | HANDLE 44 | GetAsyncCompletionHandle( 45 | HANDLE AsyncHandle 46 | ); 47 | 48 | DWORD 49 | GetAsyncResult( 50 | HANDLE AsyncHandle, 51 | LPDWORD BytesTransferred 52 | ); 53 | 54 | -------------------------------------------------------------------------------- /Editor/Include/Windows/nt_pipe.h: -------------------------------------------------------------------------------- 1 | // Module Name: pipe.h 2 | // 3 | // Copyright (c) 1991, Microsoft Corporation 4 | // 5 | // Defines functions exported by pipe.c 6 | // 7 | // History: 8 | // 06-29-92 Davidc Created. 9 | 10 | 11 | 12 | // 13 | // Function prototypes 14 | // 15 | 16 | BOOL 17 | MyCreatePipe( 18 | LPHANDLE ReadHandle, 19 | LPHANDLE WriteHandle, 20 | LPSECURITY_ATTRIBUTES SecurityAttributes, 21 | DWORD Size, 22 | DWORD Timeout, 23 | DWORD ReadHandleFlags, 24 | DWORD WriteHandleFlags 25 | ); 26 | 27 | -------------------------------------------------------------------------------- /Editor/Include/Windows/nt_proc.h: -------------------------------------------------------------------------------- 1 | // Module Name: session.h 2 | // 3 | // Copyright (c) 1991, Microsoft Corporation 4 | // 5 | // Remote shell session module header file 6 | // 7 | // History: 8 | // 06-28-92 Davidc Created. 9 | 10 | 11 | inline void MyCloseHandle(HANDLE Handle, const char *handle_name) 12 | { 13 | if (CloseHandle(Handle) == FALSE) 14 | { 15 | _dbg_msg( FormatString("Close Handle failed for <%s>, error = %d\n") << handle_name << GetLastError() ); 16 | emacs_assert(FALSE); 17 | } 18 | } 19 | 20 | const int SHELL_BUFFER_SIZE = 1000; 21 | 22 | // 23 | // Define session thread notification values 24 | // 25 | 26 | typedef enum { 27 | ConnectError, 28 | DisconnectError, 29 | ClientDisconnected, 30 | ShellEnded 31 | } SESSION_DISCONNECT_CODE, *PSESSION_NOTIFICATION_CODE; 32 | 33 | 34 | // 35 | // Function protoypes 36 | // 37 | 38 | HANDLE 39 | CreateSession( 40 | VOID 41 | ); 42 | 43 | VOID 44 | DeleteSession( 45 | HANDLE SessionHandle 46 | ); 47 | 48 | HANDLE 49 | ConnectSession( 50 | HANDLE SessionHandle, 51 | EmacsProcess * 52 | ); 53 | 54 | SESSION_DISCONNECT_CODE 55 | DisconnectSession( 56 | HANDLE SessionHandle 57 | ); 58 | 59 | -------------------------------------------------------------------------------- /Editor/Include/Windows/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | #include 6 | -------------------------------------------------------------------------------- /Editor/Include/Windows/win_doc.h: -------------------------------------------------------------------------------- 1 | // win_doc.h : interface of the CWinemacsDoc class 2 | // 3 | ///////////////////////////////////////////////////////////////////////////// 4 | 5 | class CWinemacsDoc : public CDocument 6 | { 7 | protected: // create from serialization only 8 | CWinemacsDoc(); 9 | DECLARE_DYNCREATE(CWinemacsDoc) 10 | 11 | // Attributes 12 | public: 13 | 14 | // Operations 15 | public: 16 | 17 | // Implementation 18 | public: 19 | virtual ~CWinemacsDoc(); 20 | virtual void Serialize(CArchive& ar); // overridden for document i/o 21 | #ifdef _DEBUG 22 | virtual void AssertValid() const; 23 | virtual void Dump(CDumpContext& dc) const; 24 | #endif 25 | protected: 26 | virtual BOOL OnNewDocument(); 27 | virtual BOOL CanCloseFrame( CFrameWnd* pFrame ); 28 | 29 | // Generated message map functions 30 | protected: 31 | //{{AFX_MSG(CWinemacsDoc) 32 | // NOTE - the ClassWizard will add and remove member functions here. 33 | // DO NOT EDIT what you see in these blocks of generated code ! 34 | //}}AFX_MSG 35 | DECLARE_MESSAGE_MAP() 36 | }; 37 | 38 | ///////////////////////////////////////////////////////////////////////////// 39 | -------------------------------------------------------------------------------- /Editor/Include/Windows/win_incl.h: -------------------------------------------------------------------------------- 1 | // 2 | // win_incl.h 3 | // Copyright 1993 Barry A. Scott 4 | // 5 | 6 | // disable level 4 warnings that Microsoft code raises 7 | #pragma warning( disable : 4214 4201) 8 | #ifndef STRICT 9 | # define STRICT 10 | #endif 11 | # include 12 | # include 13 | # include 14 | // back to full level 4 15 | #pragma warning( default : 4214 4201) 16 | -------------------------------------------------------------------------------- /Editor/Include/Windows/win_list_ctrl_ex.h: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////////// 2 | // CListCtrlEx 3 | 4 | #ifndef _win_list_ctrl_ex__h 5 | #define _win_list_ctrl_ex__h 6 | 7 | class CListCtrlEx : public CListCtrl 8 | { 9 | // Attributes 10 | protected: 11 | int next_unique_lparam; 12 | 13 | // Operation 14 | public: 15 | CListCtrlEx(); 16 | virtual ~CListCtrlEx(); 17 | CImageList* SetImageList(CImageList* pImageList, int nImageListType = TVSIL_NORMAL); 18 | BOOL AddColumn( 19 | LPCTSTR strItem,int nItem,int nSubItem = -1, 20 | int nMask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM, 21 | int nFmt = LVCFMT_LEFT); 22 | BOOL AddItem(int nItem,int nSubItem,LPCTSTR strItem,int nImageIndex = -1); 23 | }; 24 | 25 | #endif // _win_list_ctrl_ex__h 26 | -------------------------------------------------------------------------------- /Editor/Include/Windows/win_menu.h: -------------------------------------------------------------------------------- 1 | // 2 | // win_menu.h 3 | // 4 | // Copyright (c) 2000 Barry A. Scott 5 | // 6 | 7 | class EmacsMenu; 8 | 9 | 10 | class EmacsMenuNameTable : public EmacsStringTable 11 | { 12 | public: 13 | EmacsMenuNameTable( int init_size, int grow_amount ) 14 | : EmacsStringTable( init_size, grow_amount ) 15 | { } 16 | virtual ~EmacsMenuNameTable() 17 | { } 18 | 19 | void add( const EmacsString &key, EmacsMenu *value ) 20 | { EmacsStringTable::add( key, value ); } 21 | EmacsMenu *remove( const EmacsString &key ) 22 | { return (EmacsMenu *)EmacsStringTable::remove( key ); } 23 | EmacsMenu *find( const EmacsString &key ) 24 | { return (EmacsMenu *)EmacsStringTable::find( key ); } 25 | EmacsMenu *value( int index ) 26 | { return (EmacsMenu *)EmacsStringTable::value( index ); } 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /Editor/Include/Windows/win_select_buffer.h: -------------------------------------------------------------------------------- 1 | // win_select_buffer.h : header file 2 | // 3 | 4 | ///////////////////////////////////////////////////////////////////////////// 5 | // CBufferSelectDlg dialog 6 | 7 | class CBufferSelectDlg : public CDialog 8 | { 9 | // Construction 10 | public: 11 | CBufferSelectDlg(CWnd* pParent = NULL); // standard constructor 12 | 13 | // Dialog Data 14 | //{{AFX_DATA(CBufferSelectDlg) 15 | enum { IDD = IDD_SWITCH_BUFFER }; 16 | CComboBox m_buffer_combo; 17 | CString m_buffer_name; 18 | //}}AFX_DATA 19 | 20 | void InitParameters( const EmacsString &title, const EmacsString &buffer_name, const EmacsString &buffer_types ); 21 | 22 | // Implementation 23 | protected: 24 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 25 | 26 | virtual BOOL OnInitDialog(); 27 | 28 | // Generated message map functions 29 | //{{AFX_MSG(CBufferSelectDlg) 30 | afx_msg void OnDblclkSwitchBuffer(); 31 | virtual void OnOK(); 32 | //}}AFX_MSG 33 | DECLARE_MESSAGE_MAP() 34 | 35 | EmacsString dialog_title; 36 | int buffer_types_mask; 37 | }; 38 | -------------------------------------------------------------------------------- /Editor/PyQt5/allowed-missing.txt: -------------------------------------------------------------------------------- 1 | sip 2 | pep517 3 | _testinternalcapi 4 | -------------------------------------------------------------------------------- /Editor/PyQt5/be_config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | ==================================================================== 3 | Copyright (c) 2003-2015 Barry A Scott. All rights reserved. 4 | 5 | This software is licensed as described in the file LICENSE.txt, 6 | which you should have received as part of this distribution. 7 | 8 | ==================================================================== 9 | 10 | be_config.py 11 | 12 | Based on code from pysvn WorkBench 13 | 14 | ''' 15 | import sys 16 | 17 | # point size and face need to choosen for platform 18 | if sys.platform.startswith( 'win' ): 19 | face = 'Courier New' 20 | point_size = 8 21 | 22 | elif sys.platform == 'darwin': 23 | face = 'Monaco' 24 | point_size = 12 25 | 26 | else: 27 | # for unix systems 28 | face = 'Courier' 29 | point_size = 12 30 | -------------------------------------------------------------------------------- /Editor/PyQt5/be_platform_specific.py: -------------------------------------------------------------------------------- 1 | ''' 2 | ==================================================================== 3 | Copyright (c) 2003-2015 Barry A Scott. All rights reserved. 4 | 5 | This software is licensed as described in the file LICENSE.txt, 6 | which you should have received as part of this distribution. 7 | 8 | ==================================================================== 9 | 10 | be_platform_specific.py 11 | 12 | ''' 13 | import sys 14 | 15 | if sys.platform == 'win32': 16 | from be_platform_win32_specific import * 17 | 18 | elif sys.platform == 'darwin': 19 | from be_platform_macosx_specific import * 20 | 21 | else: 22 | from be_platform_unix_specific import * 23 | 24 | def getPreferencesFilename(): 25 | return getUserDir() / 'bemacs.xml' 26 | 27 | def getSessionFilename(): 28 | return getUserDir() / 'bemacs-session.xml' 29 | 30 | def getLogFilename(): 31 | return pathlib.Path( os.environ.get( 'BEMACS_GUI_LOG', getUserDir() / 'bemacs.log' ) ) 32 | 33 | def setupPlatform( argv0 ): 34 | setupPlatformSpecific_( argv0 ) 35 | 36 | user_dir = getUserDir() 37 | if not user_dir.exists(): 38 | user_dir.mkdir( parents=True ) 39 | -------------------------------------------------------------------------------- /Editor/PyQt5/be_user.py: -------------------------------------------------------------------------------- 1 | # 2 | # be_user 3 | # 4 | bemacs = None 5 | 6 | def be_init_user( bemacs_ ): 7 | global bemacs 8 | bemacs = bemacs_ 9 | 10 | import sys 11 | import be_platform_specific 12 | sys.path.insert( 0, str(be_platform_specific.getUserDir()) ) 13 | bemacs.log.info( 'Adding user dir to sys.path %r' % (sys.path,) ) 14 | 15 | def be_init_for_unittest(): 16 | global bemacs 17 | class FakeLog: 18 | def __init__( self ): 19 | pass 20 | def info( self, msg ): 21 | print( 'bemacs.log.info: %s' % (msg,) ) 22 | 23 | class FakeBemacs: 24 | def __init__( self ): 25 | self.log = FakeLog() 26 | 27 | bemacs = FakeBemacs() 28 | 29 | def be_import( library ): 30 | module = __import__( library ) 31 | globals()[ module.__name__ ] = module 32 | return None 33 | 34 | def be_call( function_name, *args ): 35 | import sys 36 | function_path = function_name.split('.') 37 | 38 | function = sys.modules['be_user'] 39 | 40 | for name in function_path: 41 | function = getattr( function, name ) 42 | 43 | return function( *args ) 44 | 45 | def be_exec( arg ): 46 | return exec( arg ) 47 | 48 | def be_eval( arg ): 49 | return eval( arg ) 50 | -------------------------------------------------------------------------------- /Editor/PyQt5/beclient-macosx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #export BEMACS_FIFO=.bemacs8devel/.emacs_command 3 | python ${BUILDER_TOP_DIR}/Editor/PyQtBEmacs/be_client.py "$@" 4 | -------------------------------------------------------------------------------- /Editor/PyQt5/bemacs-macosx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export PYTHONPATH=${BUILDER_TOP_DIR}/Editor/PyQtBEmacs:${BUILDER_TOP_DIR}/Editor/exe-pybemacs 3 | # use the library that was create in the last build 4 | export BEMACS_EMACS_LIBRARY="${BUILDER_TOP_DIR}/Builder/tmp/dmg/Barry's Emacs.app/Contents/Resources/emacs_library" 5 | export BEMACS_FIFO=.bemacs8devel/.emacs_command 6 | 7 | if [ ! -e "${BEMACS_EMACS_LIBRARY}/emacslib.db" ] 8 | then 9 | echo "Error: emacslib not found: ${BEMACS_EMACS_LIBRARY}/emacslib.db" 10 | exit 1 11 | fi 12 | 13 | case "$1" in 14 | --debug=*) 15 | export EMACS_DEBUG="${1#--debug=}" 16 | rm -f ${EMACS_DEBUG_FILE} 17 | shift 18 | ;; 19 | *) 20 | ;; 21 | esac 22 | 23 | if [ "$1" = "--lldb" ] 24 | then 25 | shift 1 26 | echo 27 | rm -f .lldbinit 28 | if [ -e init.lldb ] 29 | then 30 | cat init.lldb >.lldbinit 31 | fi 32 | echo 33 | lldb -- ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python -u be_main.py "$@" 34 | 35 | else 36 | which ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python 37 | ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python -u be_main.py "$@" 38 | fi 39 | -------------------------------------------------------------------------------- /Editor/PyQt5/bemacs-windows.cmd: -------------------------------------------------------------------------------- 1 | setlocal 2 | set PYTHONPATH=%BUILDER_TOP_DIR%\Editor\PyQt5;%BUILDER_TOP_DIR%\Editor\exe-pybemacs 3 | set BEMACS_EMACS_LIBRARY=%BUILDER_TOP_DIR%\Builder\tmp\kitfiles\emacs_library 4 | set BEMACS_EMACS_DOC=%BUILDER_TOP_DIR%\Builder\tmp\kitfiles\Documentation 5 | 6 | echo PYTHONPATH=%PYTHONPATH% 7 | echo BEMACS_EMACS_LIBRARY=%BEMACS_EMACS_LIBRARY% 8 | 9 | set BEMACS_STDOUT_LOG=bemacs-stdout.log 10 | set BEMACS_DEBUG_LOG=bemacs-debug.log 11 | set BEMACS_GUI_LOG=bemacs-gui.log 12 | 13 | %BUILDER_TOP_DIR%\Builder\venv.tmp\Scripts\pythonw.exe -u be_main.py %* 2>%BEMACS_DEBUG_LOG% 14 | endlocal 15 | -------------------------------------------------------------------------------- /Editor/PyQt5/bemacs.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/bemacs.icns -------------------------------------------------------------------------------- /Editor/PyQt5/brand.be_version.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | ==================================================================== 4 | Copyright (c) 2009-2015 Barry A Scott. All rights reserved. 5 | 6 | This software is licensed as described in the file LICENSE.txt, 7 | which you should have received as part of this distribution. 8 | 9 | ==================================================================== 10 | 11 | be_version.py.template 12 | 13 | ''' 14 | major = %(major)s 15 | minor = %(minor)s 16 | patch = %(patch)s 17 | build = '' 18 | year = "%(year)s" 19 | commit = '%(commit)s' 20 | -------------------------------------------------------------------------------- /Editor/PyQt5/build-linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Info: PyQtBEmacs build-linux in $( pwd )" 3 | 4 | ROOT_DIR=${1:? Root dir} 5 | BIN_DIR=${2:? Bin dir} 6 | LIB_DIR=${3:? Lib dir} 7 | DOC_DIR=${4:? Doc dir} 8 | FONT_NAME=${5:? Font name} 9 | 10 | ${PYTHON} make_be_images.py 11 | 12 | cp be_*.py xml_preferences.py ${ROOT_DIR}${LIB_DIR} 13 | 14 | rm ${ROOT_DIR}${LIB_DIR}/be_client.py 15 | 16 | cat <${ROOT_DIR}${BIN_DIR}/bemacs_server 17 | #!${PYTHON} 18 | import sys 19 | sys.path.insert( 0, "${LIB_DIR}" ) 20 | import be_main 21 | sys.exit( be_main.main( sys.argv ) ) 22 | EOF 23 | chmod +x ${ROOT_DIR}${BIN_DIR}/bemacs_server 24 | 25 | cat <>${ROOT_DIR}${LIB_DIR}/be_platform_unix_specific.py 26 | library_dir = "${LIB_DIR}" 27 | doc_dir = "${DOC_DIR}" 28 | default_font_name = "${FONT_NAME}" 29 | default_font_point_size = 12 30 | EOF 31 | 32 | ${PYTHON} create_bemacs_client.py . "${ROOT_DIR}${BIN_DIR}/bemacs" 33 | 34 | cd ${ROOT_DIR}${LIB_DIR} 35 | ${PYTHON} -m compileall be_*.py xml_preferences.py 36 | -------------------------------------------------------------------------------- /Editor/PyQt5/build-netbsd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ROOT_DIR=${1:? Root dir} 3 | BIN_DIR=${2:? Bin dir} 4 | LIB_DIR=${3:? Lib dir} 5 | DOC_DIR=${4:? Doc dir} 6 | 7 | # xml_preferences is not packaged for NetBSD 8 | 9 | mkdir -p ${ROOT_DIR}${LIB_DIR}/xml_preferences 10 | cp ~/.local/lib/python3.7/site-packages/xml_preferences/__init__.py ${ROOT_DIR}${LIB_DIR}/xml_preferences 11 | 12 | ./build-linux.sh "${@}" 13 | -------------------------------------------------------------------------------- /Editor/PyQt5/create_bemacs_client.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import os 4 | 5 | sys.path.insert( 0, '%s/Builder' % (os.environ['BUILDER_TOP_DIR'],) ) 6 | import build_log 7 | log = build_log.BuildLog() 8 | log.setColour( True ) 9 | 10 | def main( argv ): 11 | src_dir = argv[1] 12 | cli_client_path = argv[2] 13 | 14 | path = '%s/be_client.py' % (src_dir,) 15 | with open( path, 'r', encoding='utf-8' ) as f: 16 | log.info( 'Reading %s' % (path,) ) 17 | __text = f.read() 18 | 19 | __text = __text.replace( 'org.barrys-emacs.bemacs-devel', 'org.barrys-emacs.bemacs' ) 20 | __text = __text.replace( '#!/usr/bin/env python3\n', '#!%s\n' % (sys.executable,) ) 21 | 22 | with open( cli_client_path, 'w', encoding='utf-8' ) as f: 23 | log.info( 'Writing %s' % (cli_client_path,) ) 24 | f.write( __text ) 25 | 26 | log.info( 'chmod 555 %s' % (cli_client_path,) ) 27 | os.chmod( cli_client_path, 0o555 ) 28 | return 0 29 | 30 | if __name__ == '__main__': 31 | sys.exit( main( sys.argv ) ) 32 | 33 | 34 | -------------------------------------------------------------------------------- /Editor/PyQt5/macosx-app-gdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | X=$( ps -u $(id -u) -o pid,comm|grep be_main.app/Contents/MacOS/be_main ) 3 | PID=${X% *} 4 | EXE=${X#* } 5 | rm -f .gdbinit 6 | gdb --pid=${PID} ${EXE} 7 | -------------------------------------------------------------------------------- /Editor/PyQt5/macosx.mak: -------------------------------------------------------------------------------- 1 | # 2 | # Mac OS X makefile for BEmacs 3 | # 4 | PYTHON=python${PYTHON_VERSION} 5 | PYTHONPATH=${BUILDER_TOP_DIR}/Editor/PyQtBEmacs:${BUILDER_TOP_DIR}/Editor/exe-pybemacs 6 | 7 | all: dist/be_main.app 8 | 9 | dist/be_main.app: be_images.py be_version.py 10 | PYTHONPATH=$(PYTHONPATH) $(PYTHON) setup.py py2app --xref 11 | 12 | clean:: 13 | rm -rf build 14 | rm -rf dist 15 | 16 | locale/en/LC_MESSAGES/pysvn_workbench.mo: 17 | ./make-pot-file.sh 18 | ./make-po-file.sh en 19 | ./make-mo-files.sh locale 20 | 21 | clean:: 22 | rm -rf locale/* 23 | 24 | include be_common.mak 25 | -------------------------------------------------------------------------------- /Editor/PyQt5/org.barrys-emacs.editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/org.barrys-emacs.editor.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/build_compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/build_compile.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/build_next_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/build_next_error.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/build_prev_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/build_prev_error.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/case_capitalise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/case_capitalise.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/case_invert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/case_invert.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/case_lower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/case_lower.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/case_upper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/case_upper.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/close-curly-brace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/close-curly-brace.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/edit.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/edit_copy.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/edit_cut.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/edit_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/edit_delete.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/edit_paste.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/editcopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/editcopy.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/editcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/editcut.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/editpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/editpaste.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/file_open.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/file_print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/file_print.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/file_save.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/file_save_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/file_save_all.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/justify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/justify.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/macro_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/macro_play.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/macro_record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/macro_record.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/macro_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/macro_stop.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/open-curly-brace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/open-curly-brace.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/region_indent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/region_indent.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/region_undent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/region_undent.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/search_find.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/search_fold_case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/search_fold_case.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/stop.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/synchronize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/synchronize.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/tools_grep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/tools_grep.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/view_white_space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/view_white_space.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/view_wrap_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/view_wrap_long.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_cascade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_cascade.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_del_other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_del_other.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_del_this.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_del_this.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_split_horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_split_horiz.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_split_vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_split_vert.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_tile_horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_tile_horiz.png -------------------------------------------------------------------------------- /Editor/PyQt5/toolbar_images/window_tile_vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt5/toolbar_images/window_tile_vert.png -------------------------------------------------------------------------------- /Editor/PyQt6/allowed-missing.txt: -------------------------------------------------------------------------------- 1 | sip 2 | pep517 3 | _testinternalcapi 4 | -------------------------------------------------------------------------------- /Editor/PyQt6/be_config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | ==================================================================== 3 | Copyright (c) 2003-2015 Barry A Scott. All rights reserved. 4 | 5 | This software is licensed as described in the file LICENSE.txt, 6 | which you should have received as part of this distribution. 7 | 8 | ==================================================================== 9 | 10 | be_config.py 11 | 12 | Based on code from pysvn WorkBench 13 | 14 | ''' 15 | import sys 16 | 17 | # point size and face need to choosen for platform 18 | if sys.platform.startswith( 'win' ): 19 | face = 'Courier New' 20 | point_size = 8 21 | 22 | elif sys.platform == 'darwin': 23 | face = 'Monaco' 24 | point_size = 12 25 | 26 | else: 27 | # for unix systems 28 | face = 'Courier' 29 | point_size = 12 30 | -------------------------------------------------------------------------------- /Editor/PyQt6/be_platform_specific.py: -------------------------------------------------------------------------------- 1 | ''' 2 | ==================================================================== 3 | Copyright (c) 2003-2015 Barry A Scott. All rights reserved. 4 | 5 | This software is licensed as described in the file LICENSE.txt, 6 | which you should have received as part of this distribution. 7 | 8 | ==================================================================== 9 | 10 | be_platform_specific.py 11 | 12 | ''' 13 | import sys 14 | 15 | if sys.platform == 'win32': 16 | from be_platform_win32_specific import * 17 | 18 | elif sys.platform == 'darwin': 19 | from be_platform_macosx_specific import * 20 | 21 | else: 22 | from be_platform_unix_specific import * 23 | 24 | def getPreferencesFilename(): 25 | return getUserDir() / 'bemacs.xml' 26 | 27 | def getSessionFilename(): 28 | return getUserDir() / 'bemacs-session.xml' 29 | 30 | def getLogFilename(): 31 | return pathlib.Path( os.environ.get( 'BEMACS_GUI_LOG', getUserDir() / 'bemacs.log' ) ) 32 | 33 | def setupPlatform( argv0 ): 34 | setupPlatformSpecific_( argv0 ) 35 | 36 | user_dir = getUserDir() 37 | if not user_dir.exists(): 38 | user_dir.mkdir( parents=True ) 39 | -------------------------------------------------------------------------------- /Editor/PyQt6/be_user.py: -------------------------------------------------------------------------------- 1 | # 2 | # be_user 3 | # 4 | bemacs = None 5 | 6 | def be_init_user( bemacs_ ): 7 | global bemacs 8 | bemacs = bemacs_ 9 | 10 | import sys 11 | import be_platform_specific 12 | sys.path.insert( 0, str(be_platform_specific.getUserDir()) ) 13 | bemacs.log.info( 'Adding user dir to sys.path %r' % (sys.path,) ) 14 | 15 | def be_init_for_unittest(): 16 | global bemacs 17 | class FakeLog: 18 | def __init__( self ): 19 | pass 20 | def info( self, msg ): 21 | print( 'bemacs.log.info: %s' % (msg,) ) 22 | 23 | class FakeBemacs: 24 | def __init__( self ): 25 | self.log = FakeLog() 26 | 27 | bemacs = FakeBemacs() 28 | 29 | def be_import( library ): 30 | module = __import__( library ) 31 | globals()[ module.__name__ ] = module 32 | return None 33 | 34 | def be_call( function_name, *args ): 35 | import sys 36 | function_path = function_name.split('.') 37 | 38 | function = sys.modules['be_user'] 39 | 40 | for name in function_path: 41 | function = getattr( function, name ) 42 | 43 | return function( *args ) 44 | 45 | def be_exec( arg ): 46 | return exec( arg ) 47 | 48 | def be_eval( arg ): 49 | return eval( arg ) 50 | -------------------------------------------------------------------------------- /Editor/PyQt6/beclient-macosx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #export BEMACS_FIFO=.bemacs8devel/.emacs_command 3 | python ${BUILDER_TOP_DIR}/Editor/PyQt6/be_client.py "$@" 4 | -------------------------------------------------------------------------------- /Editor/PyQt6/bemacs-macosx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export PYTHONPATH=${BUILDER_TOP_DIR}/Editor/PyQt6:${BUILDER_TOP_DIR}/Editor/exe-pybemacs 3 | # use the library that was create in the last build 4 | export BEMACS_EMACS_LIBRARY="${BUILDER_TOP_DIR}/Builder/tmp/dmg/Barry's Emacs.app/Contents/Resources/emacs_library" 5 | export BEMACS_FIFO=.bemacs8devel/.emacs_command 6 | 7 | if [ ! -e "${BEMACS_EMACS_LIBRARY}/emacslib.db" ] 8 | then 9 | echo "Error: emacslib not found: ${BEMACS_EMACS_LIBRARY}/emacslib.db" 10 | exit 1 11 | fi 12 | 13 | case "$1" in 14 | --debug=*) 15 | export EMACS_DEBUG="${1#--debug=}" 16 | rm -f ${EMACS_DEBUG_FILE} 17 | shift 18 | ;; 19 | *) 20 | ;; 21 | esac 22 | 23 | if [ "$1" = "--lldb" ] 24 | then 25 | shift 1 26 | echo 27 | rm -f .lldbinit 28 | if [ -e init.lldb ] 29 | then 30 | cat init.lldb >.lldbinit 31 | fi 32 | echo 33 | lldb -- ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python -u ${BUILDER_TOP_DIR}/Editor/PyQt6/be_main.py "$@" 34 | 35 | else 36 | which ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python 37 | ${BUILDER_TOP_DIR}/Builder/venv.tmp/bin/python -u ${BUILDER_TOP_DIR}/Editor/PyQt6/be_main.py "$@" 38 | fi 39 | -------------------------------------------------------------------------------- /Editor/PyQt6/bemacs-windows.cmd: -------------------------------------------------------------------------------- 1 | setlocal 2 | set PYTHONPATH=%BUILDER_TOP_DIR%\Editor\PyQt6;%BUILDER_TOP_DIR%\Editor\exe-pybemacs 3 | set BEMACS_EMACS_LIBRARY=%BUILDER_TOP_DIR%\Builder\tmp\kitfiles\emacs_library 4 | set BEMACS_EMACS_DOC=%BUILDER_TOP_DIR%\Builder\tmp\kitfiles\Documentation 5 | 6 | echo PYTHONPATH=%PYTHONPATH% 7 | echo BEMACS_EMACS_LIBRARY=%BEMACS_EMACS_LIBRARY% 8 | 9 | set BEMACS_STDOUT_LOG=bemacs-stdout.log 10 | set BEMACS_GUI_LOG=bemacs-gui.log 11 | 12 | %BUILDER_TOP_DIR%\Builder\venv.tmp\Scripts\python.exe -u %BUILDER_TOP_DIR%\Editor\PyQt6\be_main.py %* 13 | endlocal 14 | -------------------------------------------------------------------------------- /Editor/PyQt6/bemacs.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/bemacs.icns -------------------------------------------------------------------------------- /Editor/PyQt6/brand.be_version.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | ==================================================================== 4 | Copyright (c) 2009-2015 Barry A Scott. All rights reserved. 5 | 6 | This software is licensed as described in the file LICENSE.txt, 7 | which you should have received as part of this distribution. 8 | 9 | ==================================================================== 10 | 11 | be_version.py.template 12 | 13 | ''' 14 | major = %(major)s 15 | minor = %(minor)s 16 | patch = %(patch)s 17 | build = '' 18 | year = "%(year)s" 19 | commit = '%(commit)s' 20 | -------------------------------------------------------------------------------- /Editor/PyQt6/build-linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Info: PyQt6 build-linux in $( pwd )" 3 | 4 | ROOT_DIR=${1:? Root dir} 5 | BIN_DIR=${2:? Bin dir} 6 | LIB_DIR=${3:? Lib dir} 7 | DOC_DIR=${4:? Doc dir} 8 | FONT_NAME=${5:? Font name} 9 | 10 | ${PYTHON} make_be_images.py 11 | 12 | echo "Info: PyQt6 libdir ${ROOT_DIR}${LIB_DIR}" 13 | 14 | cp be_*.py xml_preferences.py ${ROOT_DIR}${LIB_DIR} 15 | 16 | rm ${ROOT_DIR}${LIB_DIR}/be_client.py 17 | 18 | cat <${ROOT_DIR}${BIN_DIR}/bemacs_server 19 | #!${PYTHON} 20 | import sys 21 | sys.path.insert( 0, "${LIB_DIR}" ) 22 | import be_main 23 | sys.exit( be_main.main( sys.argv ) ) 24 | EOF 25 | chmod +x ${ROOT_DIR}${BIN_DIR}/bemacs_server 26 | 27 | cat <>${ROOT_DIR}${LIB_DIR}/be_platform_unix_specific.py 28 | library_dir = "${LIB_DIR}" 29 | doc_dir = "${DOC_DIR}" 30 | default_font_name = "${FONT_NAME}" 31 | default_font_point_size = 12 32 | EOF 33 | 34 | ${PYTHON} create_bemacs_client.py . "${ROOT_DIR}${BIN_DIR}/bemacs" 35 | 36 | cd ${ROOT_DIR}${LIB_DIR} 37 | ${PYTHON} -m compileall be_*.py xml_preferences.py 38 | -------------------------------------------------------------------------------- /Editor/PyQt6/build-netbsd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ROOT_DIR=${1:? Root dir} 3 | BIN_DIR=${2:? Bin dir} 4 | LIB_DIR=${3:? Lib dir} 5 | DOC_DIR=${4:? Doc dir} 6 | 7 | # xml_preferences is not packaged for NetBSD 8 | 9 | mkdir -p ${ROOT_DIR}${LIB_DIR}/xml_preferences 10 | cp ~/.local/lib/python3.7/site-packages/xml_preferences/__init__.py ${ROOT_DIR}${LIB_DIR}/xml_preferences 11 | 12 | ./build-linux.sh "${@}" 13 | -------------------------------------------------------------------------------- /Editor/PyQt6/create_bemacs_client.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import os 4 | 5 | sys.path.insert( 0, '%s/Builder' % (os.environ['BUILDER_TOP_DIR'],) ) 6 | import build_log 7 | log = build_log.BuildLog() 8 | log.setColour( True ) 9 | 10 | def main( argv ): 11 | src_dir = argv[1] 12 | cli_client_path = argv[2] 13 | 14 | path = '%s/be_client.py' % (src_dir,) 15 | with open( path, 'r', encoding='utf-8' ) as f: 16 | log.info( 'Reading %s' % (path,) ) 17 | __text = f.read() 18 | 19 | __text = __text.replace( 'org.barrys-emacs.bemacs-devel', 'org.barrys-emacs.bemacs' ) 20 | __text = __text.replace( '#!/usr/bin/env python3\n', '#!/usr/bin/python3\n' ) 21 | 22 | with open( cli_client_path, 'w', encoding='utf-8' ) as f: 23 | log.info( 'Writing %s' % (cli_client_path,) ) 24 | f.write( __text ) 25 | 26 | log.info( 'chmod 555 %s' % (cli_client_path,) ) 27 | os.chmod( cli_client_path, 0o555 ) 28 | return 0 29 | 30 | if __name__ == '__main__': 31 | sys.exit( main( sys.argv ) ) 32 | 33 | 34 | -------------------------------------------------------------------------------- /Editor/PyQt6/macosx-app-gdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | X=$( ps -u $(id -u) -o pid,comm|grep be_main.app/Contents/MacOS/be_main ) 3 | PID=${X% *} 4 | EXE=${X#* } 5 | rm -f .gdbinit 6 | gdb --pid=${PID} ${EXE} 7 | -------------------------------------------------------------------------------- /Editor/PyQt6/macosx.mak: -------------------------------------------------------------------------------- 1 | # 2 | # Mac OS X makefile for BEmacs 3 | # 4 | PYTHON=python${PYTHON_VERSION} 5 | PYTHONPATH=${BUILDER_TOP_DIR}/Editor/PyQtBEmacs:${BUILDER_TOP_DIR}/Editor/exe-pybemacs 6 | 7 | all: dist/be_main.app 8 | 9 | dist/be_main.app: be_images.py be_version.py 10 | PYTHONPATH=$(PYTHONPATH) $(PYTHON) setup.py py2app --xref 11 | 12 | clean:: 13 | rm -rf build 14 | rm -rf dist 15 | 16 | locale/en/LC_MESSAGES/pysvn_workbench.mo: 17 | ./make-pot-file.sh 18 | ./make-po-file.sh en 19 | ./make-mo-files.sh locale 20 | 21 | clean:: 22 | rm -rf locale/* 23 | 24 | include be_common.mak 25 | -------------------------------------------------------------------------------- /Editor/PyQt6/org.barrys-emacs.editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/org.barrys-emacs.editor.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/build_compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/build_compile.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/build_next_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/build_next_error.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/build_prev_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/build_prev_error.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/case_capitalise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/case_capitalise.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/case_invert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/case_invert.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/case_lower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/case_lower.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/case_upper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/case_upper.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/close-curly-brace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/close-curly-brace.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/edit.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/edit_copy.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/edit_cut.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/edit_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/edit_delete.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/edit_paste.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/editcopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/editcopy.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/editcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/editcut.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/editpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/editpaste.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/file_open.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/file_print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/file_print.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/file_save.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/file_save_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/file_save_all.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/justify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/justify.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/macro_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/macro_play.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/macro_record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/macro_record.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/macro_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/macro_stop.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/open-curly-brace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/open-curly-brace.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/region_indent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/region_indent.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/region_undent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/region_undent.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/search_find.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/search_fold_case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/search_fold_case.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/stop.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/synchronize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/synchronize.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/tools_grep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/tools_grep.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/view_white_space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/view_white_space.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/view_wrap_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/view_wrap_long.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_cascade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_cascade.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_del_other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_del_other.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_del_this.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_del_this.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_split_horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_split_horiz.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_split_vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_split_vert.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_tile_horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_tile_horiz.png -------------------------------------------------------------------------------- /Editor/PyQt6/toolbar_images/window_tile_vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/PyQt6/toolbar_images/window_tile_vert.png -------------------------------------------------------------------------------- /Editor/Source/Common/edoprint.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 1982-1993 2 | // Barry A. Scott and nick Emery 3 | 4 | // 5 | // doprint.c 6 | // 7 | // Barry A. Scott 8-Aug-1984 8 | // 9 | #include 10 | 11 | #undef THIS_FILE 12 | static char THIS_FILE[] = __FILE__; 13 | static EmacsInitialisation emacs_initialisation( __DATE__ " " __TIME__, THIS_FILE ); 14 | 15 | #include 16 | -------------------------------------------------------------------------------- /Editor/Source/Common/em_stat.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // em_stat.cpp 3 | // 4 | // Copyright (c) 1996 Barry A. Scott 5 | // 5-Feb-1996 6 | // 7 | 8 | #include 9 | #include 10 | #if defined( __unix__ ) || defined( __WATCOMC__ ) 11 | #include 12 | #endif 13 | 14 | 15 | EmacsFileStat::EmacsFileStat() 16 | { 17 | memset( &stat_buf, 0, sizeof( stat_buf ) ); 18 | } 19 | 20 | EmacsFileStat::~EmacsFileStat() 21 | { } 22 | 23 | bool EmacsFileStat::stat( const char *file_name ) 24 | { 25 | int status = ::stat( file_name, &stat_buf ); 26 | return status == 0; 27 | } 28 | 29 | bool EmacsFileStat::stat( FILE *file ) 30 | { 31 | return stat( fileno( file ) ); 32 | } 33 | 34 | bool EmacsFileStat::stat( int fd ) 35 | { 36 | int status = ::fstat( fd, &stat_buf ); 37 | return status == 0; 38 | } 39 | 40 | bool EmacsFileStat::is_regular() 41 | { 42 | return S_ISREG( stat_buf.st_mode ); 43 | } 44 | 45 | bool EmacsFileStat::is_directory() 46 | { 47 | return S_ISDIR( stat_buf.st_mode ); 48 | } 49 | -------------------------------------------------------------------------------- /Editor/Source/Common/emacs_proc.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // emacs_proc.cpp 3 | // copyright (c) 1995-1996 Barry A. Scott 4 | // 5 | #include 6 | 7 | #undef THIS_FILE 8 | static char THIS_FILE[] = __FILE__; 9 | static EmacsInitialisation emacs_initialisation( __DATE__ " " __TIME__, THIS_FILE ); 10 | 11 | #include 12 | 13 | EmacsProcessNameTable EmacsProcessCommon::name_table( 8, 8 ); 14 | 15 | EmacsProcessCommon::EmacsProcessCommon( const EmacsString &name ) 16 | : proc_name( name ) 17 | { 18 | // this cast is not very nice! 19 | name_table.add( name, (EmacsProcess *)this ); 20 | } 21 | 22 | EmacsProcessCommon::~EmacsProcessCommon() 23 | { 24 | name_table.remove( proc_name ); 25 | } 26 | 27 | EmacsThreadCommon::EmacsThreadCommon() 28 | {} 29 | 30 | EmacsThreadCommon::~EmacsThreadCommon() 31 | {} 32 | -------------------------------------------------------------------------------- /Editor/Source/Common/exec.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | 6 | int main( int argc, char **argv ) 7 | { 8 | close(0); 9 | if(open(argv[1], 0) != 0) { 10 | write(1, "Couldn't open input file\n", 25); 11 | _exit(-1); 12 | } 13 | execvp(argv[2], &argv[2]); 14 | write(1, "Couldn't execute the program!\n", 30); 15 | _exit(-1); 16 | } 17 | -------------------------------------------------------------------------------- /Editor/Source/Common/string_map.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // string_map.cpp 3 | // 4 | // Copyright (c) 2000 Barry A. Scott 5 | // 6 | // 7 | #include 8 | #include 9 | 10 | StringMapBase::StringMapBase( const char **_strings, int *_values ) 11 | : strings( _strings ) 12 | , values( _values ) 13 | { } 14 | 15 | StringMapBase::~StringMapBase() 16 | { } 17 | 18 | 19 | bool StringMapBase::map( const EmacsString &key, int &value ) 20 | { 21 | const char **p = strings; 22 | 23 | for( int i=0; ; i += 1 ) 24 | { 25 | if( p[i] == NULL ) 26 | break; 27 | if( key == p[i] ) 28 | { 29 | value = values[i]; 30 | return true; 31 | } 32 | } 33 | 34 | return false; 35 | } 36 | 37 | EmacsString StringMapBase::map( int value ) 38 | { 39 | for( int i=0; strings[i] != NULL; i++ ) 40 | if( values[i] == value ) 41 | return strings[i]; 42 | return "Unknown"; 43 | } 44 | -------------------------------------------------------------------------------- /Editor/Source/Unix/dld_stub.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | shl_t shl_load(const char *path, int flags, long address) 4 | { 5 | return 0; 6 | } 7 | 8 | int shl_unload(shl_t handle) 9 | { 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /Editor/Source/Unix/linux_ld_fix.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Cannot statically link without this symbol defined. 3 | // 4 | int _IO_stdin_; 5 | -------------------------------------------------------------------------------- /Editor/Source/Unix/unix_ext_func.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // unix_ext_func.cpp 3 | // 4 | // Copyright (c) 1996-2003 Barry A. Scott 5 | // 6 | #include 7 | 8 | #undef THIS_FILE 9 | static char THIS_FILE[] = __FILE__; 10 | static EmacsInitialisation emacs_initialisation( __DATE__ " " __TIME__, THIS_FILE ); 11 | 12 | class EmacsExternImageOsInfo_ForUnix: public EmacsExternImageOsInfo 13 | { 14 | public: 15 | EmacsExternImageOsInfo_ForUnix(); 16 | ~EmacsExternImageOsInfo_ForUnix(); 17 | 18 | bool isLoaded(); 19 | bool load( const EmacsString &file ); 20 | bool unload(); 21 | void *symbolValue( const EmacsString &symbol ); 22 | 23 | EmacsString file; 24 | }; 25 | 26 | extern EmacsExternImageOsInfo *make_EmacsExternImageOsInfo() 27 | { 28 | return new EmacsExternImageOsInfo_ForUnix(); 29 | } 30 | 31 | EmacsExternImageOsInfo_ForUnix::EmacsExternImageOsInfo_ForUnix() 32 | { 33 | } 34 | 35 | EmacsExternImageOsInfo_ForUnix::~EmacsExternImageOsInfo_ForUnix() 36 | { 37 | } 38 | 39 | bool EmacsExternImageOsInfo_ForUnix::isLoaded() 40 | { 41 | return false; 42 | } 43 | 44 | bool EmacsExternImageOsInfo_ForUnix::load( const EmacsString &_file ) 45 | { 46 | file = _file; 47 | return false; 48 | } 49 | 50 | bool EmacsExternImageOsInfo_ForUnix::unload() 51 | { 52 | return false; 53 | } 54 | 55 | void *EmacsExternImageOsInfo_ForUnix::symbolValue( const EmacsString &symbol ) 56 | { 57 | return NULL; 58 | } 59 | -------------------------------------------------------------------------------- /Editor/Source/Windows/Resources/win_emacs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Editor/Source/Windows/Resources/win_emacs.ico -------------------------------------------------------------------------------- /Editor/Source/pybemacs/python-types.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #define outputSizeOf( type ) "sizeof( " #type " ) " << sizeof( type ) 7 | 8 | template void _describeType( const char *T_name ) 9 | { 10 | T cp( -1 ); 11 | if( cp < 0 ) 12 | { 13 | std::cout << T_name << " signed " << sizeof( T ) << std::endl; 14 | } 15 | else 16 | { 17 | std::cout << T_name << " unsigned " << sizeof( T ) << std::endl; 18 | } 19 | } 20 | #define describeType( type ) _describeType( #type ) 21 | 22 | int main( int argc, char **argv ) 23 | { 24 | std::cout << "python types" << std::endl; 25 | 26 | describeType( int ); 27 | describeType( unsigned int ); 28 | describeType( wchar_t ); 29 | describeType( Py_UNICODE ); 30 | describeType( Py_UCS1 ); 31 | describeType( Py_UCS2 ); 32 | describeType( Py_UCS4 ); 33 | describeType( EmacsChar_t ); 34 | describeType( DisplayBody_t ); 35 | describeType( PY_UNICODE_TYPE ); 36 | describeType( Py_UNICODE ); 37 | return 0; 38 | } 39 | 40 | -------------------------------------------------------------------------------- /Editor/Unittest/coverage-debug.cmd: -------------------------------------------------------------------------------- 1 | echo on 2 | set rootdir=%_CWD% 3 | set rootdir=d:\work\emacsv7\editor 4 | set emacs_library=d:\emacs070\library 5 | set emacs_user=%rootdir%\test_data 6 | set emacs_path="emacs_user: emacs_library:" 7 | set envfile=%emacs_user%\purify_coverage.emacs_environment.tmp 8 | set imagefile=%rootdir%\editor\Debug\editor 9 | 10 | mkdir %emacs_user% 11 | 12 | echo Starting up... 13 | echo "(message \"Testing emacs\")" >%emacs_user%\emacsinit.ml 14 | 15 | copy coverage.mlp %emacs_user% 16 | 17 | cd %emacs_user% 18 | 19 | :pass_1 20 | echo Pass 1 21 | erase %envfile% 22 | erase *.ej* 23 | erase *.tmp 24 | 25 | echo int main() >file.c 26 | echo { >>file.c 27 | echo return 0; >>file.c 28 | echo } >>file.c 29 | 30 | set EMACS_DEBUG=0x10000000 # unused debug value 31 | set pass=1 32 | %imagefile% /package=coverage /restore=no-such-file file.c 33 | echo pass 1 done 34 | pause 35 | dir %envfile% 36 | :pass_2 37 | echo Pass 2 38 | d:\emacs070\nt_x86\dbcreate testdb1 -c 39 | d:\emacs070\nt_x86\dbcreate testdb2 -c 40 | set pass=2 41 | echo emacs /package=coverage /restore=%envfile% 42 | pause 43 | %imagefile% /package=coverage /restore=%envfile% 44 | echo pass 2 done 45 | pause 46 | 47 | :pass_3 48 | echo Pass 3 49 | set pass=3 50 | %imagefile% /package=coverage /restore=%envfile% 51 | echo pass 3 done 52 | pause 53 | :done 54 | more coverage.phase-2-results.tmp 55 | echo Done. 56 | -------------------------------------------------------------------------------- /Editor/Unittest/unittest.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | log-error(~test-name ~reason) 3 | (save-excursion 4 | (temp-use-buffer "Unittest.log") 5 | (end-of-file) 6 | (insert-string "Error: " ~test-name " - " ~reason "\n") 7 | (write-named-file "Unittest.log") 8 | ) 9 | ) 10 | 11 | (defun 12 | log-info(~test-name) 13 | (save-excursion 14 | (temp-use-buffer "Unittest.log") 15 | (end-of-file) 16 | (insert-string "Info: Pass test " ~test-name "\n") 17 | (write-named-file "Unittest.log") 18 | ) 19 | ) 20 | 21 | (defun 22 | (unittest 23 | (switch-to-buffer "Unittest.log") 24 | (erase-buffer) 25 | (write-named-file "Unittest.log") 26 | (log-info "unittest search starting") 27 | (if (error-occurred (execute-mlisp-file "search") (unittest-search)) 28 | (log-error "unittest search raised an error" error-message) 29 | (log-info "unittest search complete") 30 | ) 31 | ) 32 | ) 33 | -------------------------------------------------------------------------------- /Editor/Unittest/unittest.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (unittest-com 3 | (execute-mlisp-file "unittest") 4 | (unittest) 5 | (exit-emacs) 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /Editor/Utilities/db_rtl/db-rtl.r-pkg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Editor/Utilities/db_rtl/workflow.r-wkf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /Editor/Utilities/dbadd/dbadd.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #ifdef __unix__ 5 | #include 6 | #else 7 | #include 8 | #endif 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | //static const char *THIS_FILE = __FILE__; 15 | 16 | 17 | const int BUF_SIZE( 500000 ); 18 | 19 | int main(int argc,char **argv) 20 | { 21 | char *buf; 22 | int len = 0, n; 23 | if (argc != 3) { 24 | printf ("Usage: %s database key\n", argv[0]); 25 | exit (1); 26 | } 27 | database db; 28 | if( !db.open_db( argv[1], false, false ) ) 29 | { 30 | printf ("Data base not found %s\n", argv[1]); 31 | exit (1); 32 | } 33 | buf = (char *)EMACS_MALLOC( BUF_SIZE, malloc_type_char ); 34 | while ((n = read (0, buf + len, BUF_SIZE - len)) > 0) 35 | len += n; 36 | if (db.put_db (argv[2], u_str(buf), len ) < 0) 37 | { 38 | printf ("Database update failed %s %s\n", argv[1], argv[2]); 39 | exit(2); 40 | } 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /Editor/Utilities/dbdel/dbdel.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #ifdef __unix__ 5 | #include 6 | #else 7 | #include 8 | #endif 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | int main(int argc, char **argv) 15 | { 16 | database db; 17 | if( argc != 3 ) 18 | { 19 | printf ("Usage: %s \n", argv[0]); 20 | exit( 1 ); 21 | } 22 | 23 | if( !db.open_db( argv[1], false, false ) ) 24 | { 25 | printf ("Data base not found\n"); 26 | exit( 1 ); 27 | } 28 | 29 | db.del_db( argv[2] ); 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /Editor/Utilities/dbprint/dbprint.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #ifdef __unix__ 5 | #include 6 | #else 7 | #include 8 | #endif 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | int main(int argc,char **argv) 15 | { 16 | database db; 17 | 18 | if (argc != 3) 19 | { 20 | printf ("Usage: %s database key\n", argv[0]); 21 | return 1; 22 | } 23 | 24 | if( !db.open_db( argv[1], true, false ) ) 25 | { 26 | printf ("Data base not found\n"); 27 | return 1; 28 | } 29 | 30 | EmacsString contents; 31 | if( db.get_db( argv[2], contents ) < 0) 32 | { 33 | printf ("Not found\n"); 34 | } 35 | else 36 | { 37 | write( 1, contents.utf8_data(), contents.utf8_data_length() ); 38 | } 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /Editor/Utilities/dbprint/dbprint.r-mak: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Editor/Utilities/dbprint/dbprint.r-pkg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Editor/Utilities/dbprint/workflow.r-wkf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /Editor/bemacs-gui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | case $( uname ) in 3 | Linux) 4 | exec PyQt6/bemacs-linux.sh "$@" 5 | ;; 6 | 7 | *) 8 | exec PyQt6/bemacs-macosx.sh "$@" 9 | ;; 10 | esac 11 | -------------------------------------------------------------------------------- /Editor/build-macosx.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "$1" == "--enable-debug" ] 5 | then 6 | shift 7 | SETUP_OPTIONS=--enable-debug 8 | fi 9 | echo "Info: build-macosx.sh Editor - start" 10 | ${PYTHON} setup.py macosx all Makefile ${SETUP_OPTIONS} 11 | make -j 8 -f Makefile "$@" 12 | echo "Info: build-macosx.sh Editor - end" 13 | -------------------------------------------------------------------------------- /Editor/build-netbsd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "$1" == "--enable-debug" ] 5 | then 6 | shift 7 | SETUP_OPTIONS=--enable-debug 8 | fi 9 | 10 | TARGET=${1:-all} 11 | shift 12 | 13 | if [ "${INSTALL_BEMACS_LIB_DIR}" != "" ] 14 | then 15 | LIB_DIR_OPTION="--lib-dir=${INSTALL_BEMACS_LIB_DIR}" 16 | else 17 | LIB_DIR_OPTION="--lib-dir=/usr/local/lib/bemacs" 18 | fi 19 | ${PYTHON} setup.py netbsd ${TARGET} Makefile-${TARGET} ${SETUP_OPTIONS} ${LIB_DIR_OPTION} 20 | if [ -e /proc/cpuinfo ] 21 | then 22 | NUM_PROC=$( grep -i ^processor /proc/cpuinfo |wc -l ) 23 | else 24 | NUM_PROC=4 25 | fi 26 | gmake -j ${NUM_PROC} -f Makefile-${TARGET} "$@" 2>&1 | tee build.log 27 | -------------------------------------------------------------------------------- /Editor/build-windows.cmd: -------------------------------------------------------------------------------- 1 | if "%1" == "--enable-debug" ( 2 | shift 3 | %PYTHON% setup.py win64 all Makefile --enable-debug 4 | ) else ( 5 | %PYTHON% setup.py win64 all Makefile 6 | ) 7 | if errorlevel 1 goto :eof 8 | 9 | nmake /nologo -e -f Makefile %1 %2 %3 %4 %5 10 | -------------------------------------------------------------------------------- /HTML/doc_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Barry's Emacs Document 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
Barry's Emacs
21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /HTML/emacs-documentation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Barry's Emacs Documentation 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | <body> 15 | <div class="contents"> 16 | You need a browser with frames support to view this documentation. 17 | </div> 18 | </body> 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /HTML/extn_frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Emacs Packages and Subsystems 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | <body> 15 | <div class="contents"> 16 | You need a browser with frames support to view this documentation. 17 | </div> 18 | </body> 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /HTML/extn_vms_frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Emacs OpenVMS Packages and Subsystems 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <body> 16 | <div class="contents"> 17 | You need a browser with frames support to view this documentation. 18 | </div> 19 | </body> 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /HTML/fn_front.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Emacs functions 8 | 9 | 10 | 11 | 12 |
13 |

Barry's Emacs 14 |
15 | Functions and Variables Reference

16 | 17 |

This document lists the functions and variables available in the Mock Lisp programming environment of Barry's Emacs. 18 | This document is intended for programmers needing to extend Emacs by using the Mock Lisp programming language:

19 | 20 |

This document lists the following:

21 | 22 |
    23 |
  • All the standard functions in Emacs. The default key binding (if any) for each function is given.
  • 24 | 25 |
  • All the standard variables in Emacs. The default value (if any) for each variable is given.
  • 26 | 27 |
  • All the arithmetic operators in Emacs.
  • 28 |
29 | 30 | 31 |

The Barry's Emacs software and documentation is Copyright © 1980-2016 Barry Scott.

32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /HTML/fn_h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Functions H* 8 | 9 | 10 | 11 | 12 |
13 | 14 |

(help-and-exit) ? (in the Mini-buffer)

15 | 16 |
17 |

This function is used in the Mini-buffer local keymaps to cause the Help window to pop up and list the options available. If called directly, this function is the same as exit-emacs.

18 | 19 |

See also:

20 | 21 | 28 | 29 |
30 | 31 | 32 |
33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /HTML/fn_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Emacs functions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /HTML/fn_y.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Functions Y* 8 | 9 | 10 | 11 | 12 |
13 | 14 |

(yank-buffer buffer-name) ESC-^Y

15 | 16 |
17 |

Inserts the contents of the specified buffer at the position of dot in the current buffer.

18 |
19 | 20 | 21 |

(yank-from-killbuffer) ^Y

22 | 23 |
24 |

Inserts the contents of the Kill buffer at the position of dot in the current buffer.

25 |
26 | 27 | 28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /HTML/mlisp_ref.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Emacs functions 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | <body> 20 | <div class="contents"> 21 | You need a browser with frames support to view this documentation. 22 | </div> 23 | </body> 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /HTML/mlisp_ref_frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | User Guide 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | <body> 20 | <div class="contents"> 21 | You need a browser with frames support to view this documentation. 22 | </div> 23 | </body> 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /HTML/pg_frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | FrameTitle 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <body> 16 | <div class="contents"> 17 | <h2>this web publication contains frames, but this browser doesn't support frames.</h2> 18 | </div> 19 | </body> 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /HTML/ug_bemacs_doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_bemacs_doc.png -------------------------------------------------------------------------------- /HTML/ug_bemacs_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_bemacs_folder.png -------------------------------------------------------------------------------- /HTML/ug_bemacs_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_bemacs_icon.png -------------------------------------------------------------------------------- /HTML/ug_contents.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Barry's Emacs User Guide 8 | 9 | 10 | 11 | 12 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /HTML/ug_drop_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_drop_file.png -------------------------------------------------------------------------------- /HTML/ug_frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | User Guide 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <body> 16 | <div class="contents"> 17 | You need a browser with frames support to view this documentation. 18 | </div> 19 | </body> 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /HTML/ug_modeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_modeline.png -------------------------------------------------------------------------------- /HTML/ug_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_screen.png -------------------------------------------------------------------------------- /HTML/ug_start_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_start_menu.png -------------------------------------------------------------------------------- /HTML/ug_windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/HTML/ug_windows.png -------------------------------------------------------------------------------- /HTML/var_g.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - G 8 | 9 | 10 | 11 | 12 |
13 | 14 |

global-mode-string «

15 | 16 |
17 |

Contains the global mode active in Emacs. The contents of this variable are displayed in every window's mode line with the use of the %M mode-line format identifier.

18 |
19 | 20 | 21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /HTML/var_j.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - J 8 | 9 | 10 | 11 | 12 |
13 | 14 |

journal-frequency « 0

15 | 16 |
17 |

Sets the time in seconds before any journal files are flushed to disk. A reasonable value for this variable is 30 seconds. To disable journalling, set this variable to 0 or false.

18 |
19 | 20 | 21 |

journal-scratch-buffers « 0

22 | 23 |
24 |

By default Emacs will not journal scratch buffers, even when current-buffer-journalled is 1. This is normally a good thing as its improves the performance of Emacs. Many packages use scratch buffers which would be journalled if this variable was set to 1.

25 | 26 |

Set this variable to 1 will enable journalling on all buffers.

27 |
28 | 29 | 30 |
31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /HTML/var_n.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - N 8 | 9 | 10 | 11 | 12 |
13 | 14 |

not-accessible «

15 | 16 |
17 |

The value of this constant is returned by the file-exists function to indicate that the target file cannot be accessed.

18 |
19 | 20 | 21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /HTML/var_q.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - Q 8 | 9 | 10 | 11 | 12 |
13 | 14 |

quick-redisplay « 0

15 | 16 |
17 |

Controls window updating when you have more than on window open on the same buffer and you make changes to a part of the buffer visible in multiple windows.

18 | 19 |

If quick-redisplay is non-zero, Emacs will not keep all windows updated as you type -- this makes display updating much faster. All changes will eventually be applied to all windows.

20 | 21 |

When quick-redisplay it is set to zero, all windows are always accurate.

22 |
23 | 24 | 25 |

query-replace-use-region-for-search « 0

26 | 27 |
28 |

Controls how the query replace functions default the search 29 | string. When ON and there is a region selected it is used as the 30 | search string defualt. 31 |

32 | 33 |
34 | 35 | 36 |
37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /HTML/var_v.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - V 8 | 9 | 10 | 11 | 12 |
13 | 14 |

visible-bell « 0

15 | 16 |
17 |

Controls the bell presentation. If non-zero, Emacs will attempt to use a visible bell (usually a flashing of the screen), instead of the audible terminal bell, when notifying you of some error.

18 |
19 | 20 | 21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /HTML/var_x.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Variables - X 8 | 9 | 10 | 11 | 12 |
13 | 14 |

xon-mode

15 | 16 |
17 |

This variable is no longer used by Emacs, it remains for backwards compatibility.

18 | 19 |
20 | 21 | 22 |
23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Kits/FreeBSD/COMMENT: -------------------------------------------------------------------------------- 1 | Barry's Emacs text editor for X11 and ANSI terminals. 2 | -------------------------------------------------------------------------------- /Kits/FreeBSD/brand.DESC: -------------------------------------------------------------------------------- 1 | Barry's Emacs %(version)s 2 | Copyright (c) 1990-%(year)s Barry A. Scott 3 | 4 | Mailto:barry@barrys-emacs.org 5 | http://www.barrys-emacs.org 6 | -------------------------------------------------------------------------------- /Kits/Linux/DPKG/brand.create-dpkg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mkdir -p tree/DEBIAN 3 | 4 | cat <tree/DEBIAN/control 5 | Package: bemacs 6 | Version: %(maturity)s%(major)s.%(minor)s.%(patch)s 7 | Maintainer: Barry Scott 8 | Description: Barry's Emacs Text editor 9 | Barry's Emacs Text editor 10 | Home page http://www.barrys-emacs.org 11 | Architecture: i386 12 | Depends: libmotif3 13 | EOF 14 | 15 | cat <tree/DEBIAN/postinst 16 | #!/bin/bash 17 | cd /usr/local/bin 18 | ln -s ../bemacs/bemacs bemacs 19 | cd /usr/local/bemacs 20 | ln -s emacs-xfree86.xkeys emacs.xkeys 21 | EOF 22 | chmod +x tree/DEBIAN/postinst 23 | 24 | cat <tree/DEBIAN/prerm 25 | #!/bin/bash 26 | cd /usr/local/bin 27 | rm -f bemacs 28 | cd /usr/local/bemacs 29 | rm -f emacs.xkeys 30 | EOF 31 | chmod +x tree/DEBIAN/prerm 32 | 33 | dpkg-deb -b tree ./ 34 | -------------------------------------------------------------------------------- /Kits/Linux/bemacs-cli.1: -------------------------------------------------------------------------------- 1 | .TH bemacs-cli 1 "26 Dec 2022" "" "bemacs-cli man page" 2 | .SH NAME 3 | bemacs-cli \- Barry's Emacs 4 | .SH SYNOPSIS 5 | Barry's Emacs is a text editor in the Emacs tradition. 6 | 7 | .SH DESCRIPTION 8 | Barry's Emacs is a text editor in the Emacs tradition. 9 | 10 | bemacs-cli is the terminal version of bemacs. 11 | Use bemacs for the GUI version of bemacs. 12 | 13 | Detailed help is available as HTML that is installed in: 14 | 15 | file:///usr/share/doc/bemacs/user_guide.html 16 | 17 | .SH OPTIONS 18 | TBD 19 | 20 | .SH CONTACT 21 | Barry's Emacs main web site if https://barrys-emacs.org 22 | 23 | Discussions are on https://groups.io/g/barrys-emacs 24 | 25 | Source code is hosted at https://github.com/barry-scott/BarrysEmacs 26 | 27 | .SH AUTHOR 28 | Barry Scott (barry@barrys-emacs.org) 29 | -------------------------------------------------------------------------------- /Kits/Linux/bemacs.1: -------------------------------------------------------------------------------- 1 | .TH bemacs 1 "30 Apr 2016" "" "bemacs man page" 2 | .SH NAME 3 | bemacs \- Barry's Emacs 4 | .SH SYNOPSIS 5 | Barry's Emacs is a text editor in the Emacs tradition. 6 | 7 | .SH DESCRIPTION 8 | Barry's Emacs is a text editor in the Emacs tradition. 9 | 10 | Detailed help is available as HTML that is installed in: 11 | 12 | file:///usr/share/doc/bemacs/user_guide.html 13 | 14 | .SH OPTIONS 15 | TBD 16 | 17 | .SH CONTACT 18 | Barry's Emacs main web site if https://barrys-emacs.org 19 | 20 | Discussions are on https://groups.io/g/barrys-emacs 21 | 22 | Source code is hosted at https://github.com/barry-scott/BarrysEmacs 23 | 24 | .SH AUTHOR 25 | Barry Scott (barry@barrys-emacs.org) 26 | -------------------------------------------------------------------------------- /Kits/Linux/bemacs_server.1: -------------------------------------------------------------------------------- 1 | .TH bemacs_server 1 "30 Apr 2016" "" "bemacs_server man page" 2 | .SH NAME 3 | bemacs_server \- Barry's Emacs 4 | .SH SYNOPSIS 5 | Barry's Emacs is a text editor in the Emacs tradition. 6 | 7 | .SH DESCRIPTION 8 | Barry's Emacs is a text editor in the Emacs tradition. 9 | 10 | bemacs_server is the background GUI that is accessed 11 | by the bemacs command. 12 | 13 | Detailed help is available as HTML that is installed in: 14 | 15 | file:///usr/share/doc/bemacs/user_guide.html 16 | 17 | .SH OPTIONS 18 | TBD 19 | 20 | .SH CONTACT 21 | Barry's Emacs main web site if https://barrys-emacs.org 22 | 23 | Discussions are on https://groups.io/g/barrys-emacs 24 | 25 | Source code is hosted at https://github.com/barry-scott/BarrysEmacs 26 | 27 | .SH AUTHOR 28 | Barry Scott (barry@barrys-emacs.org) 29 | -------------------------------------------------------------------------------- /Kits/Linux/org.barrys-emacs.editor.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Comment=Barry's Emacs 4 | Type=Application 5 | Name=Barry's Emacs 6 | Exec=/usr/bin/bemacs %F 7 | Icon=/usr/share/bemacs/org.barrys-emacs.editor.png 8 | Categories=Development; 9 | -------------------------------------------------------------------------------- /Kits/Linux/rpm-repo/barrys-emacs-testing.repo: -------------------------------------------------------------------------------- 1 | [barrys-emacs-testing] 2 | name=Barrys Emacs for Fedora $releasever - $basearch - Testing 3 | failovermethod=priority 4 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs-testing/$basearch/release/ 5 | enabled=1 6 | metadata_expire=7d 7 | repo_gpgcheck=0 8 | type=rpm 9 | gpgcheck=0 10 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 11 | skip_if_unavailable=False 12 | 13 | [barrys-emacs-testing-debuginfo] 14 | name=Barrys Emacs for Fedora $releasever - $basearch - Debug Testing 15 | failovermethod=priority 16 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs-testing/$basearch/debug/ 17 | enabled=0 18 | metadata_expire=7d 19 | repo_gpgcheck=0 20 | type=rpm 21 | gpgcheck=0 22 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 23 | skip_if_unavailable=False 24 | 25 | [barrys-emacs-testing-source] 26 | name=Barrys Emacs for Fedora $releasever - Source Testing 27 | failovermethod=priority 28 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs-testing/$basearch/source/ 29 | enabled=0 30 | metadata_expire=7d 31 | repo_gpgcheck=0 32 | type=rpm 33 | gpgcheck=0 34 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 35 | skip_if_unavailable=False 36 | -------------------------------------------------------------------------------- /Kits/Linux/rpm-repo/barrys-emacs.repo: -------------------------------------------------------------------------------- 1 | [barrys-emacs] 2 | name=Barrys Emacs for Fedora $releasever - $basearch 3 | failovermethod=priority 4 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs/$basearch/release/ 5 | enabled=1 6 | metadata_expire=7d 7 | repo_gpgcheck=0 8 | type=rpm 9 | gpgcheck=0 10 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 11 | skip_if_unavailable=False 12 | 13 | [barrys-emacs-debuginfo] 14 | name=Barrys Emacs for Fedora $releasever - $basearch - Debug 15 | failovermethod=priority 16 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs/$basearch/debug/ 17 | enabled=0 18 | metadata_expire=7d 19 | repo_gpgcheck=0 20 | type=rpm 21 | gpgcheck=0 22 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 23 | skip_if_unavailable=False 24 | 25 | [barrys-emacs-source] 26 | name=Barrys Emacs for Fedora $releasever - Source 27 | failovermethod=priority 28 | baseurl=http://barrys-emacs.org/repos/fedora-$releasever/barrys-emacs/$basearch/source/ 29 | enabled=0 30 | metadata_expire=7d 31 | repo_gpgcheck=0 32 | type=rpm 33 | gpgcheck=0 34 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-barrys-emacs-$releasever-$basearch 35 | skip_if_unavailable=False 36 | -------------------------------------------------------------------------------- /Kits/OpenBSD/COMMENT: -------------------------------------------------------------------------------- 1 | Barry's Emacs text editor for X11 and ANSI terminals. 2 | -------------------------------------------------------------------------------- /Kits/OpenBSD/brand.DESC: -------------------------------------------------------------------------------- 1 | Barry's Emacs %(version)s 2 | Copyright (c) 1990-%(year)s Barry A. Scott 3 | 4 | Mailto:barry@barrys-emacs.org 5 | http://www.barrys-emacs.org 6 | -------------------------------------------------------------------------------- /Kits/Windows/windows_list_uninstall.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import winreg 3 | 4 | for title, access in [ 5 | ('32bit', winreg.KEY_WOW64_32KEY), 6 | ('64bit', winreg.KEY_WOW64_64KEY)]: 7 | with winreg.OpenKey( winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', access=winreg.KEY_READ|access ) as key: 8 | index = 0 9 | while True: 10 | try: 11 | name = winreg.EnumKey( key, index ) 12 | index += 1 13 | except OSError: 14 | break 15 | 16 | if 'barry' in name.lower(): 17 | print( title, name ) 18 | 19 | with winreg.OpenKey( key, name ) as bkey: 20 | bindex = 0 21 | while True: 22 | 23 | try: 24 | name, value, type_ = winreg.EnumValue( bkey, bindex ) 25 | bindex += 1 26 | except OSError: 27 | break 28 | 29 | print( ' %s: %r' % (name, value) ) 30 | -------------------------------------------------------------------------------- /Kits/brand.readme-macos.txt: -------------------------------------------------------------------------------- 1 | macOS notes 2 | 3 | There is a command line tool included on Barry's Emacs disk. 4 | 5 | bemacs is the command line client that can be used to start 6 | the Barry's Emacs Application from the command line or a CLI 7 | version. 8 | 9 | To start the GUI version use: 10 | 11 | $ bemacs 12 | 13 | To start the CLI version use: 14 | 15 | $ bemacs -cli 16 | 17 | Useful when you cannot use the GUI version. For example when 18 | connected to a Mac via ssh or when using sudo. 19 | 20 | Copy these to a folder on your PATH, typically this is ~/bin. 21 | 22 | [end readme-macos.txt] 23 | -------------------------------------------------------------------------------- /Language/language.mll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/Language/language.mll -------------------------------------------------------------------------------- /MLisp/Library/Motif/motif-def.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; motif-def.ml 3 | ; 4 | ; constants used in programming the motif interface functions 5 | ; 6 | (if (! (is-bound sys_literal_loaded)) 7 | (execute-mlisp-file "sys_literals") 8 | ) 9 | (~sys_literal_setup_incr "" 0 1 10 | "XmNO_ORIENTATION" 11 | "XmVERTICAL" 12 | "XmHORIZONTAL" 13 | ) 14 | (~sys_literal_setup_incr "" 0 1 15 | "XmNO_PACKING" 16 | "XmPACK_TIGHT" 17 | "XmPACK_COLUMN" 18 | "XmPACK_NONE" 19 | ) 20 | (~sys_literal_setup_incr "" 0 1 21 | "XmNO_LINE" 22 | "XmSINGLE_LINE" 23 | "XmDOUBLE_LINE" 24 | "XmSINGLE_DASHED_LINE" 25 | "XmDOUBLE_DASHED_LINE" 26 | "XmSHADOW_ETCHED_IN" 27 | "XmSHADOW_ETCHED_OUT" 28 | "XmSHADOW_ETCHED_IN_DASH" 29 | "XmSHADOW_ETCHED_OUT_DASH" 30 | ) 31 | (~sys_literal_setup_incr "" 0 1 32 | "XmDIALOG_TEMPLATE" 33 | "XmDIALOG_ERROR" 34 | "XmDIALOG_INFORMATION" 35 | "XmDIALOG_MESSAGE" 36 | "XmDIALOG_QUESTION" 37 | "XmDIALOG_WARNING" 38 | "XmDIALOG_WORKING" 39 | ) 40 | -------------------------------------------------------------------------------- /MLisp/Library/Python/bemacs_stdio.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | bemacs_stdio.py 4 | 5 | 6 | initialise the python world for Barry's Emacs use 7 | 8 | ''' 9 | import sys 10 | import bemacs 11 | 12 | class BEmacs_stdout: 13 | buffer_name = 'Python Console' 14 | def __init__(self): 15 | pass 16 | 17 | def write( self, text ): 18 | bemacs.function.temp_use_buffer( BEmacs_stdout.buffer_name ) 19 | bemacs.function.end_of_file() 20 | bemacs.function.insert_string( text ) 21 | 22 | def flush( self ): 23 | pass 24 | 25 | 26 | class BEmacs_stdin: 27 | def __init__(self): 28 | pass 29 | 30 | def read( self, size=0 ): 31 | raise IOError, 'No stdin available' 32 | 33 | def readline( self ): 34 | return bemacs.function.get_tty_string( 'Python stdin: ' ) + '\n' 35 | 36 | def readlines( self ): 37 | raise IOError, 'No stdin available' 38 | 39 | def flush( self ): 40 | pass 41 | 42 | def init(): 43 | sys.__stdin__ = BEmacs_stdin() 44 | sys.__stderr__ = BEmacs_stdout() 45 | sys.__stdout__ = sys.__stderr__ 46 | 47 | sys.stdin = sys.__stdin__ 48 | sys.stdout = sys.__stdout__ 49 | sys.stderr = sys.__stderr__ 50 | 51 | # this should appear in the buffer 52 | print( 'bemacs_stdio.py done' ) 53 | 54 | 55 | init() 56 | -------------------------------------------------------------------------------- /MLisp/Library/Unix/unix-process.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "pr-kill-last-command-output" "\^X\^K") 2 | (local-bind-to-key "pr-newline" "\^M") 3 | (local-bind-to-key "pr-newline-kill" "\e\^M") 4 | (local-bind-to-key "pr-send-eot" "\^D") 5 | (local-bind-to-key "pr-send-int-signal" "\^X\^C") 6 | (local-bind-to-key "pr-send-quit-signal" "^X\034") 7 | (local-bind-to-key "pr-grab-last-line" "\e=") 8 | (local-bind-to-key "pr-grab-current-line" "\e+") 9 | (local-bind-to-key "pr-expand-inline-filename" "\e`") 10 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/cli.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | (external-function "cli_define_table" "emacs$share:emacs_cli_shr" "emacs$cli_define_table") 3 | (external-function "cli_list_tables" "emacs$share:emacs_cli_shr" "emacs$cli_list_tables") 4 | (external-function "cli$dcl_parse" "emacs$share:emacs_cli_shr" "emacs$cli$dcl_parse") 5 | (external-function "cli$present" "emacs$share:emacs_cli_shr" "emacs$cli$present") 6 | (external-function "cli$get_value" "emacs$share:emacs_cli_shr" "emacs$cli$get_value") 7 | 8 | (~sys_literal_setup_equal "cli$_" 9 | "absent" 229872 10 | "comma" 261433 11 | "concat" 261417 12 | "defaulted" 261409 13 | "locneg" 229936 14 | "locpres" 261425 15 | "negated" 229880 16 | "nocomd" 229552 17 | "present" 261401 18 | ) 19 | 20 | (defun define-cli-table 21 | ( 22 | ~table (get-tty-string ": cli-define-table ") 23 | ~file (get-tty-string ": cli-define-table (file) ") 24 | ) 25 | (cli_define_table ~table ~file) 26 | 27 | ) 28 | (defun 29 | (list-cli-tables 30 | (save-excursion 31 | (pop-to-buffer "CLI table list") 32 | (erase-buffer) 33 | (cli_list_tables) 34 | ) 35 | ) 36 | ) 37 | ) 38 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/debug32.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (debug32-com 3 | (visit-file (argv 1)) ; the file to look at 4 | (if (> (argc) 2) 5 | (progn 6 | (goto-line (argv 2)) 7 | (beginning-of-line) 8 | ) 9 | ) 10 | (if (> (argc) 3) (goto-character (+ (dot) (argv 3) -1) ) 11 | ) 12 | ) 13 | ) 14 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/dvidef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $dvidef symbols 3 | ; 4 | (if 5 | (if (is-bound $dvidef-loaded) 6 | (! $dvidef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "dvi_def") 11 | (declare-global $dvidef-loaded) 12 | (setq $dvidef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/emacs_sys.ml: -------------------------------------------------------------------------------- 1 | (if (! (is-bound sys_literal_loaded)) 2 | (execute-mlisp-file "sys_literals") 3 | ) 4 | (external-function "sys$fao" "emacs$share:emacs_sys_shr" "emacs$sys$fao") 5 | (external-function "sys$filescan" "emacs$share:emacs_sys_shr" "emacs$sys$filescan") 6 | (external-function "sys$getmsg" "emacs$share:emacs_sys_shr" "emacs$sys$getmsg") 7 | (external-function "sys$setprn" "emacs$share:emacs_sys_shr" "emacs$sys$setprn") 8 | (external-function "sys$getdvi" "emacs$share:emacs_sys_shr" "emacs$sys$getdvi") 9 | (external-function "sys$getjpi" "emacs$share:emacs_sys_shr" "emacs$sys$getjpi") 10 | (external-function "sys$getqui" "emacs$share:emacs_sys_shr" "emacs$sys$getqui") 11 | (external-function "sys$getsyi" "emacs$share:emacs_sys_shr" "emacs$sys$getsyi") 12 | (external-function "sys$sndjbc" "emacs$share:emacs_sys_shr" "emacs$sys$sndjbc") 13 | (external-function "sys$setprv" "emacs$share:emacs_sys_shr" "emacs$sys$setprv") 14 | (external-function "sys$getuai" "emacs$share:emacs_sys_shr" "emacs$sys$getuai") 15 | (external-function "sys$setuai" "emacs$share:emacs_sys_shr" "emacs$sys$setuai") 16 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/fscn_def.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; $fscndef 3 | ; 4 | (~sys_literal_setup_incr "fscn$_" 1 1 5 | "filespec" ; complete filespec 6 | "node" ; node:: field 7 | "device" ; device: field 8 | "root" ; [root.] field 9 | "directory" ; [directory] field 10 | "name" ; name field 11 | "type" ; .typ field 12 | "version" ; ;version field 13 | ) 14 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/fscndef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $fscndef symbols 3 | ; 4 | (if 5 | (if (is-bound $fscndef-loaded) 6 | (! $fscndef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "fscn_def") 11 | (declare-global $fscndef-loaded) 12 | (setq $fscndef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/jpidef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $jpidef symbols 3 | ; 4 | (if 5 | (if (is-bound $jpidef-loaded) 6 | (! $jpidef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "jpi_def") 11 | (declare-global $jpidef-loaded) 12 | (setq $jpidef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/mail.commands: -------------------------------------------------------------------------------- 1 | Emacs mail command summary 2 | -------------------------- 3 | 4 | Mail command Menu Emacs key 5 | ------------ ---- --------- 6 | answer Yes a 7 | back b 8 | compress Yes C 9 | copy Yes c 10 | current not required 11 | delete D 12 | directory Yes* d 13 | dir/folder lf 14 | exit q 15 | extract Yes e 16 | file Yes F 17 | first B back to the top 18 | forward Yes f 19 | help h ? 20 | last N next to bottom 21 | mail Yes m w 22 | move - as file Yes F 23 | next n 24 | print Yes p 25 | purge Yes P 26 | quit Q 27 | read r 28 | read/new R 29 | reply Yes a as answer 30 | search Yes S 31 | select Yes s 32 | send Yes m w 33 | set Yes M Modify user profile 34 | show Yes* lp List user profile 35 | 36 | * Menu only for prefix'ed command. "/" as prefix. 37 | 38 | In addition digits 0-9 act as a read command. So to read 39 | message 23 type "23" 40 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/messages.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "reset-message-buffer" "r") 2 | (local-bind-to-key "delete-message-window" "q") 3 | (local-bind-to-key "view-message-buffer" "v") 4 | (local-bind-to-key "next-line" "n") 5 | (local-bind-to-key "previous-line" "p") 6 | (local-bind-to-key "beginning-of-file" "b") 7 | (local-bind-to-key "end-of-file" "e") 8 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/notes.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (notes-com 3 | (notes) 4 | ) 5 | ) 6 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/quidef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $quidef symbols 3 | ; 4 | (if 5 | (if (is-bound $quidef-loaded) 6 | (! $quidef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "qui_def") 11 | (declare-global $quidef-loaded) 12 | (setq $quidef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/sjcdef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $sjcdef symbols 3 | ; 4 | (if 5 | (if (is-bound $sjcdef-loaded) 6 | (! $sjcdef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "sjc_def") 11 | (declare-global $sjcdef-loaded) 12 | (setq $sjcdef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/spell.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (bind-to-key "spell-word-in-buffer" "\^Xs") 3 | (bind-to-key "spell-region" "\^Xr") 4 | (bind-to-key "spell-buffer" "\^Xf") 5 | (bind-to-key "spell-line" "\^Xl") 6 | (bind-to-key "spell-add-word-in-buffer" "\^Xa") 7 | (bind-to-key "spell-ignore-word-in-buffer" "\^Xi") 8 | ) 9 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/syidef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $syidef symbols 3 | ; 4 | (if 5 | (if (is-bound $syidef-loaded) 6 | (! $syidef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "syi_def") 11 | (declare-global $syidef-loaded) 12 | (setq $syidef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/teco.ml: -------------------------------------------------------------------------------- 1 | ; TECO.ML Emacs routines to execute TECO commands on a buffer 2 | ; * Requires that the DCL command MUNG be defined as: * 3 | ;$ mung :== $sys$system:teco mung 4 | ; 5 | ; Usage is (teco ), user is prompted if not provided. 6 | ; The command string may contain "~" instead of . (Good for 7 | ; PRO keyboards.) There is no (yet) to enter "~". 8 | ; 9 | ; Current position is left where TECO put it. 10 | ; 11 | (defun (teco-command tecostring 12 | (setq tecostring (arg 1 "Enter TECO command:")) 13 | (save-excursion 14 | (temp-use-buffer "Teco") 15 | (erase-buffer) 16 | (insert-string 17 | (concat "ERSYS$INPUT:EWSYS$OUTPUT:P" tecostring "i 18 | emacsteco dot 19 | EX")) 20 | (beginning-of-file) 21 | (error-occurred (replace-string "~" "")) 22 | (write-named-file "sys$login:emacsteco.tmp") 23 | ) 24 | (save-excursion 25 | (set-mark) 26 | (end-of-file) 27 | (filter-region "MUNG sys$login:emacsteco.tmp") 28 | ) 29 | (search-forward " 30 | emacsteco dot 31 | ") 32 | (provide-prefix-argument 15 (delete-previous-character)) 33 | )) 34 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/uaidef.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; load up $uaidef symbols 3 | ; 4 | (if 5 | (if (is-bound $uaidef-loaded) 6 | (! $uaidef-loaded) 7 | 1 8 | ) 9 | (progn 10 | (execute-mlisp-file "uai_def") 11 | (declare-global $uaidef-loaded) 12 | (setq $uaidef-loaded 1) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/VMS/vms_mail.key: -------------------------------------------------------------------------------- 1 | (novalue) 2 | -------------------------------------------------------------------------------- /MLisp/Library/Windows/vss-view.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (vss-view-com 3 | ~buffer-name 4 | ~index 5 | 6 | (visit-file (argv 1)) 7 | (if (= (case-string-lower (file-format-string "%pa" (argv 1))) "c:\\temp\\") 8 | (progn 9 | (setq current-buffer-type "scratch") 10 | (setq ~index 0) 11 | (setq ~buffer-name current-buffer-name) 12 | (while 13 | (error-occurred 14 | (setq current-buffer-name (concat "VSS" (if ~index (concat ~index " ") " ") ~buffer-name)) 15 | ) 16 | (setq ~index (+ ~index 1)) 17 | ) 18 | ) 19 | ) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /MLisp/Library/abbrev.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (bind-to-key "define-global-abbrev-in-buffer" "\^xg") 3 | (bind-to-key "define-local-abbrev-in-buffer" "\^xl") 4 | (bind-to-key "define-global-abbrev-for-region" "\^xr") 5 | (bind-to-key "define-local-abbrev-for-region" "\^xs") 6 | (bind-to-key "edit-all-abbrevs" "\^xa") 7 | (bind-to-key "edit-local-abbrev" "\^xw") 8 | ) 9 | -------------------------------------------------------------------------------- /MLisp/Library/addlog.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (add-log 3 | ~log-file 4 | ~nls 5 | (setq ~log-file (arg 1 ": add-log ")) 6 | (setq ~nls "\n\n") 7 | (save-window-excursion 8 | (switch-to-buffer "Log File") 9 | (setq current-buffer-file-name ~log-file) 10 | (if (error-occurred (read-file ~log-file)) 11 | (progn 12 | (setq ~nls "") 13 | (message 14 | (concat 15 | "Creating new Log file \"" 16 | (current-file-name) 17 | "\"") 18 | ) 19 | ) 20 | ) 21 | (text-mode) 22 | (~TM-set-left-margin 4) 23 | (~TM-set-right-margin 64) 24 | (setq mode-string "Log file edit") 25 | (end-of-file) 26 | (insert-string ~nls) 27 | (insert-string "Entry for ") 28 | (insert-string (current-time)) 29 | (insert-string " made by ") 30 | (insert-string (users-login-name)) 31 | (insert-string " at ") 32 | (insert-string (system-name)) 33 | (newline)(newline) 34 | (to-col 4) 35 | (recursive-edit) 36 | (temp-use-buffer "main") 37 | (delete-buffer "Log File") 38 | ) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /MLisp/Library/addlog.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (addlog-com 3 | (load "addlog") 4 | (add-log 5 | (if (> (argc) 1) (argv 1) (arg 1 "Enter name of log file ")) 6 | ) 7 | (exit-emacs) 8 | ) 9 | ) 10 | -------------------------------------------------------------------------------- /MLisp/Library/blissmode.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (setq-default bliss-auto-expansion 1) ; Set to zero if you dont want auto-expansion 3 | (local-bind-to-key "expand-bliss-keyword" "") 4 | ) 5 | -------------------------------------------------------------------------------- /MLisp/Library/case-convert.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; case-convert.ml 3 | ; 4 | ; Copyright 1998 (c) BArry A. SCott 5 | ; 6 | ; Define case manipulation functions 7 | ; 8 | (defun 9 | (case-lower 10 | (if (error-occurred (mark)) 11 | (case-word-lower) 12 | (case-region-lower) 13 | ) 14 | ) 15 | ) 16 | (defun 17 | (case-upper 18 | (if (error-occurred (mark)) 19 | (case-word-upper) 20 | (case-region-upper) 21 | ) 22 | ) 23 | ) 24 | (defun 25 | (case-capitalize 26 | (if (error-occurred (mark)) 27 | (case-word-capitalize) 28 | (case-region-capitalize) 29 | ) 30 | ) 31 | ) 32 | (defun 33 | (case-invert 34 | (if (error-occurred (mark)) 35 | (case-word-invert) 36 | (case-region-invert) 37 | ) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /MLisp/Library/cd-here.mlp: -------------------------------------------------------------------------------- 1 | ; 2 | ; cd-here.mlp 3 | ; 4 | ; Copyright (c) 2000-2016 Barry A. Scott 5 | ; 6 | (defun 7 | (cd-here-com 8 | ~dir 9 | (setq ~dir (argv 1)) 10 | (if (file-is-a-directory ~dir) 11 | (setq previous-directory ~dir) 12 | (error-message ~dir " is not a directory") 13 | ) 14 | ) 15 | ) 16 | -------------------------------------------------------------------------------- /MLisp/Library/centerlin.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | (declare-global justify-right-margin) 3 | (declare-global justify-left-margin) 4 | (if 5 | (= justify-right-margin 0) 6 | (setq justify-right-margin 78) 7 | ) 8 | (defun 9 | (center-line width 10 | (save-excursion 11 | (beginning-of-line) 12 | (delete-white-space) 13 | (end-of-line) 14 | (delete-white-space) 15 | (setq width (current-column)) 16 | (beginning-of-line) 17 | (to-col 18 | (+ 19 | justify-left-margin 20 | (/ 21 | (- 22 | (- justify-right-margin justify-left-margin) 23 | width) 24 | 2) 25 | ) 26 | ) 27 | ) 28 | ) 29 | ) 30 | ) 31 | -------------------------------------------------------------------------------- /MLisp/Library/cmode.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (setq-default c-auto-expansion 1) ; Set to zero if you dont want auto-expansion 3 | (local-bind-to-key "expand-c-keyword" "") 4 | ) 5 | -------------------------------------------------------------------------------- /MLisp/Library/console-ui.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; console-ui.ml 3 | ; 4 | (declare-global ui-clipboard) 5 | (setq ui-clipboard "") 6 | 7 | (defun UI-edit-copy() 8 | (error-occurred 9 | (setq ui-clipboard (region-to-string)) 10 | (unset-mark) 11 | ) 12 | ) 13 | 14 | (defun UI-edit-paste(~primary 0) 15 | (insert-string ui-clipboard) 16 | ) 17 | 18 | (defun UI-frame-state() 19 | "normal" 20 | ) 21 | -------------------------------------------------------------------------------- /MLisp/Library/describe_word_list.database: -------------------------------------------------------------------------------- 1 | (progn 2 | (error-occurred (extend-database-search-list "subr-names" 3 | "emacs_library:emacs_qinfo_bliss" library-access)) 4 | (error-occurred (extend-database-search-list "subr-names" 5 | "emacs_library:emacs_qinfo_dcl" library-access)) 6 | (error-occurred (extend-database-search-list "subr-names" 7 | "emacs_library:emacs_qinfo_system_services" library-access)) 8 | (error-occurred (extend-database-search-list "subr-names" 9 | "emacs_library:emacs_qinfo_c" library-access)) 10 | ) 11 | -------------------------------------------------------------------------------- /MLisp/Library/diff.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "diff-goto-diff" "\r") 2 | -------------------------------------------------------------------------------- /MLisp/Library/dired.mlp: -------------------------------------------------------------------------------- 1 | (defun 2 | (dired-com i 3 | (declare-global ~DIRED-com) 4 | (setq ~DIRED-com 1) 5 | (setq checkpoint-frequency 0) 6 | (setq silently-kill-processes 1) 7 | (execute-mlisp-file "dired") 8 | (dired 9 | (if (> (argc) 1) (argv 1) "") 10 | ) 11 | ) 12 | ) 13 | -------------------------------------------------------------------------------- /MLisp/Library/edit-variable.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; edit-variable.ml 3 | ; 4 | ; Copyright (c) 2004-2005 Barry A. Scott 5 | ; 6 | (defun edit-variable( ~var (get-tty-variable ": edit-variable ")) 7 | (save-window-excursion 8 | (pop-to-buffer "Edit variable") 9 | (setq current-buffer-journalled 0) 10 | (unset-mark) 11 | (setq mode-string (concat "Variable: " ~var)) 12 | (erase-buffer) 13 | (insert-string (execute-mlisp-line (concat "(concat " ~var ")"))) 14 | (recursive-edit) 15 | (beginning-of-file) 16 | (set-mark) 17 | (end-of-file) 18 | (get-tty-string (concat ": set " ~var " " (region-to-string))) 19 | (set ~var (region-to-string)) 20 | (novalue) 21 | ) 22 | ) 23 | -------------------------------------------------------------------------------- /MLisp/Library/electricc.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; electric-c key bindings 3 | ; 4 | (progn 5 | (local-bind-to-key "begin-C-comment" "\e`") 6 | (local-bind-to-key "c-paren" ")") 7 | (local-bind-to-key "c-paren" "]") 8 | (local-bind-to-key "c-paren" "}") 9 | (local-bind-to-key "end-C-comment" "\e'") 10 | (local-bind-to-key "indent-C-procedure" "\ej") 11 | (local-bind-to-key "fore-paren" "\e)") 12 | (local-bind-to-key "back-paren" "\e(") 13 | (defun 14 | (high-voltage-on-key-binding 15 | (local-bind-to-key "high-voltage-on" "\^^") 16 | ) 17 | ) 18 | (defun 19 | (high-voltage-off-key-binding 20 | (local-bind-to-key "high-voltage-off" "\^^") 21 | ) 22 | ) 23 | ) 24 | -------------------------------------------------------------------------------- /MLisp/Library/emacs_file_reload.ml: -------------------------------------------------------------------------------- 1 | (declare-buffer-specific buffer-file-reload-mode-hook) 2 | (setq-default buffer-file-reload-mode-hook "novalue") 3 | 4 | (defun 5 | emacs-file-reload-handler( ~buffer-name ) 6 | (save-excursion 7 | (temp-use-buffer ~buffer-name) 8 | (execute-mlisp-line 9 | (concat "(" buffer-file-reload-mode-hook ")") 10 | ) 11 | ) 12 | ) 13 | 14 | (setq buffer-file-reloaded-hook "emacs-file-reload-handler") 15 | -------------------------------------------------------------------------------- /MLisp/Library/expandx.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (expand-mlisp-word 3 | (insert-string (get-tty-command ": expand-mlisp-word ")) 4 | (novalue)) 5 | 6 | (expand-mlisp-variable 7 | (insert-string (get-tty-variable ": expand-mlisp-variable ")) 8 | (novalue)) 9 | ) 10 | -------------------------------------------------------------------------------- /MLisp/Library/flasher.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | 3 | (declare-global paren-flash-loaded) 4 | (declare-buffer-specific paren-flash-wait paren-flash-message) 5 | (if (! paren-flash-loaded) 6 | (progn 7 | (setq-default paren-flash-message 1) 8 | (setq-default paren-flash-wait 10) 9 | ) 10 | ) 11 | (setq paren-flash-loaded 1) 12 | 13 | (defun 14 | (paren-flash ; "(" 15 | (insert-character (last-key-struck)) 16 | (paren-flash-only) 17 | ) 18 | ) 19 | 20 | (defun 21 | (paren-flash-only 22 | (save-excursion 23 | (if (! (backward-paren 0))(error-message "No match")) 24 | (if (dot-is-visible) 25 | (sit-for paren-flash-wait) 26 | (if paren-flash-message 27 | (progn ~s 28 | (forward-character) 29 | (set-mark)(beginning-of-line) 30 | (setq ~s (concat (region-to-string) "<< ")) 31 | (end-of-line)(setq ~s (concat ~s (region-to-string))) 32 | (message ~s) 33 | ) 34 | ) 35 | ) 36 | ) 37 | ) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /MLisp/Library/git-commands.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (git-diff 3 | ~diff-buffer 4 | (setq ~diff-buffer current-buffer-name) 5 | (execute-monitor-command (concat "git diff \"" current-buffer-file-name "\"")) 6 | (pop-to-buffer "git diff") 7 | (erase-buffer) 8 | (yank-buffer "command execution") 9 | (setq diff-buffer ~diff-buffer) 10 | (beginning-of-file) 11 | (diff-mode) 12 | ) 13 | ) 14 | -------------------------------------------------------------------------------- /MLisp/Library/globdel.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | (defun 3 | (global-delete-lines 4 | (re-global-delete-lines (quote (arg 1 ": global-delete-lines "))) 5 | ) 6 | ) 7 | (defun 8 | (re-global-delete-lines target delcnt 9 | (setq delcnt 0) 10 | (setq target (arg 1 ": re-global-delete-lines containing ")) 11 | (save-excursion 12 | (error-occurred 13 | (beginning-of-file) 14 | (while 1 15 | (re-search-forward target) 16 | (beginning-of-line) 17 | (kill-to-end-of-line) 18 | (kill-to-end-of-line) 19 | (setq delcnt (+ delcnt 1)) 20 | ) 21 | ) 22 | ) 23 | (message (concat delcnt " lines deleted")) 24 | ) 25 | ) 26 | ) 27 | -------------------------------------------------------------------------------- /MLisp/Library/grep-in-buffers.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; Copyright 1999 Barry A. Scott 3 | ; 4 | ; grep-in-buffer.key - key bindings for the grep in buffer result buffer 5 | ; 6 | (local-bind-to-key "grep-visit-match" "\^m") 7 | (local-bind-to-key "grep-replace-string" "r") 8 | -------------------------------------------------------------------------------- /MLisp/Library/grep.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; Copyright 1993-2002 Barry A. Scott 3 | ; 4 | ; grep.key - key bindings for the grep result buffer 5 | ; 6 | (setq grep-matched-string-colour 1) 7 | (setq grep-name-colour 2) 8 | (setq grep-position-to-match-column 0) 9 | 10 | (local-bind-to-key "grep-visit-match" "\^m") 11 | (local-bind-to-key "grep-replace-string" "r") 12 | 13 | ; set double click hook 14 | (setq mouse-1-double-click-hook "grep-visit-match") 15 | -------------------------------------------------------------------------------- /MLisp/Library/gtags.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; 3 | ; gtags.key 4 | ; 5 | ; Copyright 1999 (c) Barry A. Scott 6 | ; 7 | ; 8 | (bind-to-key "gtags-goto-definition" "\^xD") 9 | (bind-to-key "gtags-goto-reference" "\^xR") 10 | (bind-to-key "gtags-goto-symbol" "\^xS") 11 | (bind-to-key "gtags-goto-definition-in-buffer" "\^xd") 12 | (bind-to-key "gtags-goto-reference-in-buffer" "\^xr") 13 | (bind-to-key "gtags-goto-symbol-in-buffer" "\^xs") 14 | 15 | (bind-to-key "gtags-goto-definition" "\[menu]GD") 16 | (bind-to-key "gtags-goto-reference" "\[menu]GR") 17 | (bind-to-key "gtags-goto-symbol" "\[menu]GS") 18 | (bind-to-key "gtags-goto-definition-in-buffer" "\[menu]Gd") 19 | (bind-to-key "gtags-goto-reference-in-buffer" "\[menu]Gr") 20 | (bind-to-key "gtags-goto-symbol-in-buffer" "\[menu]Gs") 21 | 22 | (UI-add-menu-keys "\[menu]GD" 65 ">ags" 10 "Goto definition...") 23 | (UI-add-menu-keys "\[menu]GR" 65 ">ags" 20 "Goto reference...") 24 | (UI-add-menu-keys "\[menu]GS" 65 ">ags" 30 "Goto symbol...") 25 | (UI-add-menu-keys "-" 65 ">ags" 40 "Sep1") 26 | (UI-add-menu-keys "\[menu]Gd" 65 ">ags" 50 "Goto &definition in buffer") 27 | (UI-add-menu-keys "\[menu]Gr" 65 ">ags" 60 "Goto &reference in buffer") 28 | (UI-add-menu-keys "\[menu]Gs" 65 ">ags" 70 "Goto &symbol in buffer") 29 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (bind-to-key "help-key" "\^_") ; CTRL-? for VT100s 3 | ) 4 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_apropos.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-apropos 3 | ~helpchar-variable 4 | (setq ~helpchar-variable (get-tty-string "Documentation for word? ")) 5 | (save-window-excursion 6 | (switch-to-buffer "Help window") 7 | (erase-buffer) 8 | 9 | (apropos ~helpchar-variable) 10 | (yank-buffer "Help") 11 | (delete-buffer "Help") 12 | 13 | (beginning-of-file) 14 | (use-local-map "~helpchar-view-prefix") 15 | (setq mode-string (~helpchar-more)) 16 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 17 | (recursive-edit) 18 | (use-local-map "~helpchar-prefix") 19 | ) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_compose.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-compose 3 | ~helpchar-variable 4 | (save-window-excursion 5 | (switch-to-buffer "Help window") 6 | (erase-buffer) 7 | (delete-other-windows) 8 | (fetch-database-entry "MLisp-library" "lk201_compose_chart") 9 | (beginning-of-file) 10 | (use-local-map "~helpchar-view-prefix") 11 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 12 | (setq mode-string (~helpchar-more)) 13 | (recursive-edit) 14 | (use-local-map "~helpchar-prefix") 15 | ) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_describe.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-describe 3 | ~helpchar-variable 4 | (setq ~helpchar-variable (get-tty-command "Documentation for command? ")) 5 | (save-window-excursion 6 | (switch-to-buffer "Help window") 7 | (erase-buffer) 8 | 9 | (delete-other-windows) 10 | 11 | (extend-database-search-list "describe" "emacs_library:emacsdesc") 12 | (fetch-database-entry "describe" (concat "C" ~helpchar-variable)) 13 | 14 | (use-local-map "~helpchar-view-prefix") 15 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 16 | (setq mode-string (~helpchar-more)) 17 | 18 | (beginning-of-file) 19 | (recursive-edit) 20 | (use-local-map "~helpchar-prefix") 21 | ) 22 | ) 23 | ) 24 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_describe_bindings.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-describe-bindings 3 | (save-window-excursion 4 | (describe-bindings) 5 | (switch-to-buffer "Help window") 6 | (erase-buffer) 7 | (delete-other-windows) 8 | (yank-buffer "Help") 9 | (beginning-of-file) 10 | (use-local-map "~helpchar-view-prefix") 11 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 12 | (setq mode-string (~helpchar-more)) 13 | (recursive-edit) 14 | (use-local-map "~helpchar-prefix") 15 | ) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_describe_key.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-describe-key 3 | (push-back-character "\^Q") 4 | (message (describe-key (get-tty-string "Doc for keys ( to terminate)? "))) 5 | ) 6 | ) 7 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_help_i.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-help-i 3 | (message "Transferring to the VAX/VMS HELP reader") 4 | (sit-for 0) 5 | (vms-help) 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_info.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-info 3 | (message "Transferring to the INFO documentation reader") 4 | (sit-for 0) 5 | (info) 6 | ) 7 | ) 8 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_news.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-news 3 | ~helpchar-variable 4 | (save-window-excursion 5 | (switch-to-buffer "Help window") 6 | (erase-buffer) 7 | (delete-other-windows) 8 | (if 9 | (error-occurred 10 | (insert-file "SYS$HELP:EMACSNEWS.TXT") 11 | ) 12 | (if 13 | (error-occurred 14 | (insert-file "EMACS_LIBRARY:EMACSNEWS.TXT") 15 | ) 16 | (error-message "No news is available.") 17 | ) 18 | ) 19 | (use-local-map "~helpchar-view-prefix") 20 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 21 | (setq mode-string (~helpchar-more)) 22 | (recursive-edit) 23 | (use-local-map "~helpchar-prefix") 24 | ) 25 | ) 26 | ) 27 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_variable.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-variable 3 | ~helpchar-variable 4 | (setq ~helpchar-variable (get-tty-variable "Documentation for variable? ")) 5 | (save-window-excursion 6 | (switch-to-buffer "Help window") 7 | (erase-buffer) 8 | (delete-other-windows) 9 | 10 | (extend-database-search-list "describe" "emacs_library:emacsdesc") 11 | (fetch-database-entry "describe" (concat "V" ~helpchar-variable)) 12 | 13 | (use-local-map "~helpchar-view-prefix") 14 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 15 | (setq mode-string (~helpchar-more)) 16 | 17 | (beginning-of-file) 18 | (recursive-edit) 19 | (use-local-map "~helpchar-prefix") 20 | ) 21 | ) 22 | ) 23 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_view_help.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-view-help 3 | x 4 | (save-window-excursion 5 | (switch-to-buffer "Help view") 6 | (erase-buffer) 7 | (delete-other-windows) 8 | (setq mode-line-format "") 9 | (insert-string 10 | (concat 11 | "HELP: on Emacs in help view mode\n\n" 12 | " Key Meaning\n" 13 | " --- -------\n" 14 | " Move forward one page\n" 15 | " Move backward one page\n" 16 | " b Move to the beginning of the help\n" 17 | " e Move to the end of the help\n" 18 | " q Continue editting\n" 19 | " ^C Continue editting\n" 20 | " ? Display this help text\n" 21 | ) 22 | ) 23 | (beginning-of-file) 24 | (~helpchar-prompt "-- Type any character to continue HELP --") 25 | (setq x (get-tty-character)) 26 | (if (| (= x ' ') (= x '^H') (= x 'b') (= x 'e') (= x 'q') 27 | (= x '^C') (= x '^[')) 28 | (push-back-character x) 29 | ) 30 | (~helpchar-prompt "-- Type `q' or ^C to continue editing or ? for help --") 31 | ) 32 | ) 33 | ) 34 | -------------------------------------------------------------------------------- /MLisp/Library/helpchar_where_is.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~helpchar-where-is 3 | i j 4 | (setq i (get-tty-command ": where-is ")) 5 | (save-window-excursion 6 | (describe-bindings) 7 | (if (error-occurred (search-forward i)) 8 | (error-message 9 | (concat "Function \"" i "\" is not bound to a key") 10 | ) 11 | ) 12 | (beginning-of-line) 13 | (set-mark) 14 | (search-forward " ") 15 | (backward-character) 16 | (setq j (region-to-string)) 17 | (re-search-forward "[ ]*") 18 | (set-mark) 19 | (end-of-line) 20 | (message 21 | (concat "Function """ (region-to-string) """ is bound to " 22 | j) 23 | ) 24 | ) 25 | ) 26 | ) 27 | -------------------------------------------------------------------------------- /MLisp/Library/html-mode.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/MLisp/Library/html-mode.key -------------------------------------------------------------------------------- /MLisp/Library/incsearch.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; incsearch.key 3 | ; 4 | ; setup keybindings for incsearch 5 | ; 6 | 7 | ; deal with the xon chars first 8 | (if xon-mode 9 | (setup-incsearch ; setup without Xon and Xoff 10 | "forward" "\^^s" 11 | "quote" "\^^q" 12 | ) 13 | ; if ^s is bound to a search function then use ^s to search in inc search 14 | ; otherwise it should have its global meaning 15 | (if (>= (string-index-of-string (global-binding-of "\^s") "search" 0) 0) 16 | (setup-incsearch ; Setup using Xon and Xoff 17 | "forward" "\^s" 18 | "quote" "\^q" 19 | ) 20 | (setup-incsearch ; Setup using Xon and Xoff 21 | "quote" "\^q" 22 | ) 23 | ) 24 | ) 25 | 26 | ; the rest of the setup is common 27 | (setup-more-incsearch 28 | "abort" "\^g" 29 | "delete" "\^?" 30 | "reverse" "\^r" 31 | "recurse" "\^l" 32 | "replace" "\^p" 33 | "help" "\^_" 34 | "help" "\[f1]" 35 | "exit" "\^m" 36 | "forward" "\^f" 37 | "search-clipboard" "\^v" 38 | "search-word" "\^w" 39 | "exit-and-do" "\[up]" 40 | "exit-and-do" "\[down]" 41 | "exit-and-do" "\[left]" 42 | "exit-and-do" "\[right]" 43 | ) 44 | -------------------------------------------------------------------------------- /MLisp/Library/info.mlp: -------------------------------------------------------------------------------- 1 | (progn 2 | (declare-global ~INFO-com) 3 | (setq ~INFO-com 1) 4 | (defun 5 | (info-com 6 | (if (! (is-bound ~info-is-init)) (load "info")) 7 | (if (> (argc) 1) (info (argv 1)) (info)) 8 | 9 | ) 10 | ) 11 | ) 12 | -------------------------------------------------------------------------------- /MLisp/Library/info_at.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-@ 3 | path 4 | menu-part 5 | (save-window-excursion 6 | (setq path (get-tty-string "Path: ")) 7 | (switch-to-buffer "Hack buffer") 8 | (erase-buffer) 9 | (insert-string (concat path " ")) 10 | (beginning-of-file) 11 | (set-mark) 12 | (while (! (error-occurred (re-search-forward " *"))) 13 | (delete-white-space) 14 | (setq menu-part (region-to-string)) 15 | (erase-region) 16 | (set-mark) 17 | (save-excursion 18 | (switch-to-buffer "INFO") 19 | (info-goto-menu-item menu-part) 20 | ) 21 | ) 22 | ) 23 | ) 24 | ) 25 | -------------------------------------------------------------------------------- /MLisp/Library/info_d.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-d 3 | (find-node 4 | (concat 5 | info-default-directory 6 | info-root-file 7 | ) 8 | "TOP" 9 | 0 10 | ) 11 | ) 12 | ) 13 | -------------------------------------------------------------------------------- /MLisp/Library/info_g.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-g 3 | s 4 | (setq s (arg 1 "Node: ")) 5 | (save-window-excursion 6 | (switch-to-buffer "--INFO--") 7 | (erase-buffer) 8 | (setq ~info-file-part (concat info-default-directory info-root-file)) 9 | (setq ~info-node-part "TOP") 10 | (setq ~info-help-part 0) 11 | (insert-string (concat s "\n")) 12 | (beginning-of-file) 13 | (get-node-and-file) 14 | ) 15 | (find-node ~info-file-part ~info-node-part ~info-help-part) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /MLisp/Library/info_h.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-h 3 | (if (error-occurred 4 | (find-node 5 | (concat 6 | info-default-directory 7 | "EMACSIH.TLB" 8 | ) 9 | "help" 10 | 0 11 | ) 12 | ) 13 | (error-message "Help is not available.") 14 | ) 15 | ) 16 | ) 17 | -------------------------------------------------------------------------------- /MLisp/Library/info_hlp.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-hlp 3 | (if (error-occurred 4 | (find-node 5 | (concat 6 | info-default-directory 7 | info-root-file 8 | ) 9 | "CMDS" 10 | 0 11 | ) 12 | ) 13 | (error-message "The command summary is not available.") 14 | ) 15 | ) 16 | ) 17 | -------------------------------------------------------------------------------- /MLisp/Library/info_m.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-m 3 | ~s-pos 4 | (if (setq ~s-pos (info-check-menu)) 5 | (progn 6 | (save-window-excursion 7 | (if (> (+ ~s-pos 0) (+ 0 (dot))) 8 | (progn 9 | (goto-character ~s-pos) 10 | (if (! (dot-is-visible)) 11 | (error-occurred 12 | (line-to-top-of-window) 13 | (provide-prefix-argument 3 (scroll-one-line-down)) 14 | ) 15 | ) 16 | ) 17 | ) 18 | (setq ~s-pos (get-tty-string "Menu item: ")) 19 | ) 20 | (info-goto-menu-item ~s-pos) 21 | ) 22 | (error-message "This node has no menu.") 23 | ) 24 | ) 25 | ) 26 | -------------------------------------------------------------------------------- /MLisp/Library/info_n.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-n 3 | (beginning-of-file) 4 | (end-of-line) 5 | (if (error-occurred (re-search-reverse "Next:[ \t]*")) 6 | (error-message "This node has no Next.") 7 | ) 8 | (re-search-forward "") 9 | (setq ~info-node-part "TOP") 10 | (setq ~info-file-part "") 11 | (get-node-and-file) 12 | (find-node ~info-file-part ~info-node-part ~info-help-part) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/info_o.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-o 3 | (append-to-file (get-tty-file "Append node to file: ")) 4 | ) 5 | ) 6 | -------------------------------------------------------------------------------- /MLisp/Library/info_p.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-p 3 | (beginning-of-file) 4 | (end-of-line) 5 | (if (error-occurred (re-search-reverse "Previous:[ \t]*")) 6 | (error-message "This node has no Previous.") 7 | ) 8 | (re-search-forward "") 9 | (setq ~info-node-part "TOP") 10 | (setq ~info-file-part "") 11 | (get-node-and-file) 12 | (find-node ~info-file-part ~info-node-part ~info-help-part) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/info_save.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-save 3 | (switch-to-buffer "INFO edit") 4 | (put-database-entry "info" ~info-node-part) 5 | (setq ~info-^n-file ~info-file-part) 6 | (setq ~info-^n-node ~info-node-part) 7 | (setq ~info-^n-help-flag ~info-help-part) 8 | (setq buffer-is-modified 0) 9 | (exit-emacs) 10 | ) 11 | ) 12 | -------------------------------------------------------------------------------- /MLisp/Library/info_u.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (~info-u 3 | (beginning-of-file) 4 | (end-of-line) 5 | (if (error-occurred (re-search-reverse "Up:[ \t]*")) 6 | (error-message "This node has no Up.") 7 | ) 8 | (re-search-forward "") 9 | (setq ~info-node-part "TOP") 10 | (setq ~info-file-part "") 11 | (get-node-and-file) 12 | (find-node ~info-file-part ~info-node-part ~info-help-part) 13 | ) 14 | ) 15 | -------------------------------------------------------------------------------- /MLisp/Library/inno-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; inno-mode.key 3 | ; 4 | -------------------------------------------------------------------------------- /MLisp/Library/install-shield-mode.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "(insert-string \"begin\")" "{") 2 | (local-bind-to-key "(insert-string \"end\")" "}") 3 | -------------------------------------------------------------------------------- /MLisp/Library/javamode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; electric-c key bindings 3 | ; 4 | (local-bind-to-key "Java-paren" ")") 5 | (local-bind-to-key "Java-paren" "]") 6 | (local-bind-to-key "Java-paren" "}") 7 | (local-bind-to-key "Java-fore-paren" "\e)") 8 | (local-bind-to-key "Java-back-paren" "\e(") 9 | (local-bind-to-key "Java-high-voltage-on" "\^^B") 10 | 11 | (defun 12 | (high-voltage-on-key-binding 13 | (local-bind-to-key "Java-high-voltage-on" "\^^") 14 | (local-bind-to-key "tab-key" "\^i") 15 | ) 16 | ) 17 | (defun 18 | (high-voltage-off-key-binding 19 | (local-bind-to-key "Java-high-voltage-off" "\^^") 20 | (local-bind-to-key "tab-key" "\^i") 21 | ) 22 | ) 23 | -------------------------------------------------------------------------------- /MLisp/Library/javascriptmode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; electric-c key bindings 3 | ; 4 | (local-bind-to-key "JavaScript-paren" ")") 5 | (local-bind-to-key "JavaScript-paren" "]") 6 | (local-bind-to-key "JavaScript-paren" "}") 7 | (local-bind-to-key "JavaScript-fore-paren" "\e)") 8 | (local-bind-to-key "JavaScript-back-paren" "\e(") 9 | (local-bind-to-key "JavaScript-high-voltage-on" "\^^B") 10 | 11 | 12 | (defun 13 | (high-voltage-on-key-binding 14 | (local-bind-to-key "JavaScript-high-voltage-on" "\^^") 15 | (local-bind-to-key "tab-key" "\^i") 16 | ) 17 | ) 18 | (defun 19 | (high-voltage-off-key-binding 20 | (local-bind-to-key "JavaScript-high-voltage-off" "\^^") 21 | (local-bind-to-key "tab-key" "\^i") 22 | ) 23 | ) 24 | -------------------------------------------------------------------------------- /MLisp/Library/json-mode.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "paren-flash" ")") 2 | (local-bind-to-key "paren-flash" "]") 3 | (local-bind-to-key "paren-flash" "}") 4 | -------------------------------------------------------------------------------- /MLisp/Library/latexmode.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (setq-default latex-auto-expansion 1) ; Set to zero if you dont want auto-expansion 3 | (local-bind-to-key "expand-LaTeX-keyword" "\^\") 4 | ) 5 | -------------------------------------------------------------------------------- /MLisp/Library/lispmode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; define keys used in lisp-mode 3 | ; 4 | (progn 5 | (autoload "expand-mlisp-word-in-buffer" "expand-word-in-buffer") 6 | (autoload "expand-mlisp-variable-in-buffer" "expand-word-in-buffer") 7 | (autoload "describe-command-in-buffer" "describe-in-buffer") 8 | (autoload "describe-variable-in-buffer" "describe-in-buffer") 9 | (local-bind-to-key "Lisp-mode-ESC-map" "\e") 10 | (local-bind-to-key "Lisp-mode-^X-map" "\^x") 11 | (local-bind-to-key "expand-mlisp-word-in-buffer" "`") 12 | (local-bind-to-key "expand-mlisp-variable-in-buffer" "\e`") 13 | (local-bind-to-key "describe-word-in-buffer" "\^x`") 14 | (local-bind-to-key "describe-variable-in-buffer" "\e\^x`") 15 | (local-bind-to-key "compile-mlisp-expression" "\ec") 16 | (local-bind-to-key "compile-mlisp-defun" "\^xc") 17 | (local-bind-to-key "electric-lisp-semi" ";") 18 | (local-bind-to-key "paren-pause" ")") 19 | (local-bind-to-key "forward-sexpr" "\e)") 20 | (local-bind-to-key "backward-sexpr" "\e(") 21 | (local-bind-to-key "indent-lisp-function" "\ej") 22 | (local-bind-to-key "nl-indent" "\^j") 23 | (local-bind-to-key "re-indent-line" "\ei") 24 | ; (local-bind-to-key "zap-defun" "\^x\^l") 25 | ) 26 | -------------------------------------------------------------------------------- /MLisp/Library/lk201_compose_chart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/barry-scott/BarrysEmacs/ac5c442ae0d05164961d58c7688ea77ae9ab4ede/MLisp/Library/lk201_compose_chart -------------------------------------------------------------------------------- /MLisp/Library/lk201_minibuf.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; Minibuffer bindings for LK201 3 | ; 4 | ; 5 | ; Here are the bindings of the VT100 keys in the Minibuf 6 | ; and the vt200_series bindings. 7 | ; 8 | (save-excursion 9 | (temp-use-buffer "keypad-hack") 10 | ; 11 | ; Keymap used with spaces as data 12 | ; 13 | (use-local-map "Minibuf-local-map") 14 | (remove-local-binding "\e") 15 | (remove-local-binding "\^\") 16 | (local-bind-to-key "self-insert" "?") ; ? 17 | (local-bind-to-key "help-and-exit" "\(help)") ; Help 18 | (local-bind-to-key "expand-and-exit" "\(do)") ; Do 19 | ; 20 | ; Keypad used with spaces as expansion 21 | ; 22 | (use-local-map "Minibuf-local-NS-map") 23 | (remove-local-binding "\e") 24 | (remove-local-binding "\^\") 25 | (local-bind-to-key "self-insert" "?") ; ? 26 | (local-bind-to-key "help-and-exit" "\(help)") ; Help 27 | (local-bind-to-key "expand-and-exit" "\(do)") ; Do 28 | 29 | (delete-buffer "keypad-hack") 30 | ) 31 | -------------------------------------------------------------------------------- /MLisp/Library/lua-mode.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "paren-flash" ")") 2 | (local-bind-to-key "paren-flash" "]") 3 | (local-bind-to-key "paren-flash" "}") 4 | -------------------------------------------------------------------------------- /MLisp/Library/makefile-mode.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; makefile-mode.ml 3 | ; 4 | ; Copyright (c) 2004-2016 Barry A. Scott 5 | ; 6 | (defun 7 | (makefile-mode 8 | (setq indent-use-tab 1) 9 | (setq logical-tab-size 8) 10 | (setq tab-size 8) 11 | (setq mode-string "Makefile") 12 | (use-abbrev-table "Makefile") 13 | ) 14 | ) 15 | 16 | ; use sh-modes syntax table for the shell commands 17 | (load "sh-mode") 18 | (save-window-excursion 19 | (temp-use-buffer "keymap-hack") 20 | (use-syntax-table "Makefile") 21 | 22 | (if (is-bound check-for-white-space-problems) 23 | (if check-for-white-space-problems 24 | (add-check-for-white-space-problems-to-syntax-table) 25 | ) 26 | ) 27 | 28 | (~sh-mode-setup-syntax-table) 29 | 30 | (delete-buffer "keymap-hack") 31 | ) 32 | -------------------------------------------------------------------------------- /MLisp/Library/minibuf-recall.key: -------------------------------------------------------------------------------- 1 | ; minibuf-recall.key 2 | ; 3 | ; Define in current global keymap all minibuf local 4 | ; bindings except space, tab, and question mark. 5 | (error-occurred (remove-binding "\e")) 6 | (error-occurred (remove-binding "\^\")) ; \"")) 7 | (error-occurred (remove-binding "?")) 8 | (bind-to-key "mini-error-and-exit" "\^G") 9 | (bind-to-key "mini-newline" "\n") 10 | (bind-to-key "mini-exit" "\r") 11 | (bind-to-key "mini-recall" "\er") 12 | (bind-to-key "mini-recall-reverse" "\ev") 13 | (bind-to-key "mini-left" "\[left]") 14 | (bind-to-key "mini-right" "\[right]") 15 | (bind-to-key "mini-recall" "\[up]") 16 | (bind-to-key "mini-recall-selection" "\[page-up]") 17 | (bind-to-key "mini-recall-selection" "\[page-down]") 18 | (bind-to-key "mini-recall-reverse" "\[down]") 19 | (bind-to-key "help-and-exit" "\[f1]") 20 | -------------------------------------------------------------------------------- /MLisp/Library/misc.ml: -------------------------------------------------------------------------------- 1 | ; Miscellaneous local functions 2 | (defun 3 | (multi-autoload 4 | fns 5 | (if (< (nargs) 2) 6 | (error-message "Insufficient arguments to multi-autoload")) 7 | (setq fns 2) 8 | (while (>= (nargs) fns) 9 | (progn (autoload (arg fns) (arg 1)) (setq fns (+ fns 1)))) 10 | (novalue)) 11 | 12 | 13 | (function-bind ; Do magic to set up bindings 14 | name ; function name 15 | file ; file containing definition 16 | key ; key to bind to 17 | (setq name (arg 1 "Function Name to bind: ")) 18 | (setq file (arg 2 "File containing definition: ")) 19 | (setq key (arg 3 "Key to bind to function: ")) 20 | (autoload name file) 21 | (bind-to-key name key) 22 | (novalue)) 23 | ) 24 | -------------------------------------------------------------------------------- /MLisp/Library/mouse-rectangular.ml: -------------------------------------------------------------------------------- 1 | ; mouserect.ml Mouse interface to rectangular package 2 | ; 3 | ; 27-Jan-1988 Jeff Lomicka 4 | ; 5 | ; Requires "mousev5.ml" and "rectangular.ml" be loaded first. 6 | ; 7 | ; Uses escape-prefix mouse buttons for rectangular operations. 8 | ; Left - Rectangular copy between text cursor and mouse 9 | ; Cetner - Rectangular cut between text cursor and mouse 10 | ; Right - Paste at mouse location 11 | ; If in replace-mode, the replace-mode variation of cut and paste 12 | ; is used. 13 | 14 | (progn 15 | 16 | (defun mouse-rcopy() mousex mousey mouseevent mouse-second-click 17 | (mouse-parameters) 18 | (set-mark) 19 | (rectangular-select) 20 | (mouse-reposition mousex mousey mouseevent) 21 | (rectangular-copy) 22 | ) 23 | 24 | (defun mouse-rcut() mousex mousey mouseevent mouse-second-click 25 | (mouse-parameters) 26 | (set-mark) 27 | (setq replace-with-white-space replace-mode) 28 | (rectangular-select) 29 | (mouse-reposition mousex mousey mouseevent) 30 | (rectangular-cut) 31 | ) 32 | 33 | (defun mouse-rpaste() mousex mousey mouseevent mouse-second-click 34 | (mouse-parameters) 35 | (mouse-reposition mousex mousey mouseevent) 36 | (setq overstrike-mode replace-mode) 37 | (rectangular-paste) 38 | ) 39 | 40 | (bind-to-key "mouse-rcopy" "\e\201C") 41 | (bind-to-key "mouse-rcut" "\e\201E") 42 | (bind-to-key "mouse-rpaste" "\e\201G") 43 | ) 44 | -------------------------------------------------------------------------------- /MLisp/Library/normalmod.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (normal-mode 3 | (setq left-margin 1) 4 | (setq right-margin 1000) 5 | (use-local-map "default-global-keymap") 6 | (use-abbrev-table "normal-mode") 7 | (use-syntax-table "normal-mode") 8 | (setq mode-line-format default-mode-line-format) 9 | (setq mode-string "Normal") 10 | (novalue) 11 | ) 12 | ) 13 | -------------------------------------------------------------------------------- /MLisp/Library/ntcmdmode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; NT-CMD mode key bindings 3 | ; 4 | (progn 5 | (local-bind-to-key "ntcmd-paren" ")") 6 | (local-bind-to-key "ntcmd-flash-fore-paren" "\e)") 7 | (local-bind-to-key "ntcmd-flash-back-paren" "\e(") 8 | ) 9 | -------------------------------------------------------------------------------- /MLisp/Library/p4-change-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; p4-change-mode.key 3 | ; 4 | (local-bind-to-key "p4-toggle-include" "\[f5]") 5 | (local-bind-to-key "p4-all-sections-exclude-all" "\[f6]") 6 | (local-bind-to-key "p4-visit-file" "\[f7]") 7 | (local-bind-to-key "p4-change-diff" "\[f8]") 8 | -------------------------------------------------------------------------------- /MLisp/Library/p4-clientspec-mode.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "p4-tab-key" "\t") 2 | -------------------------------------------------------------------------------- /MLisp/Library/paragraph.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | (if (! (is-bound paragraph-delimiters)) 3 | (progn 4 | (declare-buffer-specific paragraph-delimiters) 5 | (setq-default paragraph-delimiters "^\n\\|^[@.' \t].*\n") 6 | ) 7 | ) 8 | 9 | (defun 10 | (forward-paragraph 11 | (beginning-of-line) 12 | (re-search-forward paragraph-delimiters) 13 | (while (looking-at "") 14 | (search-forward "") 15 | ) 16 | ) 17 | ) 18 | 19 | (defun 20 | (backward-paragraph 21 | (beginning-of-line) 22 | (previous-line) 23 | (while (& (looking-at paragraph-delimiters) (! (bobp))) 24 | (progn (previous-line) (beginning-of-line))) 25 | (if (error-occurred (re-search-reverse "")) 26 | (beginning-of-file)) 27 | (while (looking-at "") 28 | (search-forward "") 29 | ) 30 | ) 31 | ) 32 | ) 33 | -------------------------------------------------------------------------------- /MLisp/Library/process.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (local-bind-to-key "~shell-grab-last-line" "\^b") 3 | (local-bind-to-key "~shell-cr" "\r") 4 | (local-bind-to-key "~shell-nl" "\n") 5 | (local-bind-to-key "~shell-kill" "\^]") 6 | (local-bind-to-key "~shell-send-^C" "\^c") 7 | (local-bind-to-key "~shell-help" "\^_") 8 | (local-bind-to-key "~shell-help" "\[f1]") 9 | ) 10 | -------------------------------------------------------------------------------- /MLisp/Library/process.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; process.ml 3 | ; 4 | ; Copyright (c) Barry A. Scott 1994-2010 5 | ; 6 | ; This module supports Unix processes, VMS and NT processes 7 | ; The code is OS dependant - however the VMS and NT code is 8 | ; resonable common. 9 | ; 10 | (if 11 | (= operating-system-name "VMS") 12 | (execute-mlisp-file "vms-process.ml") 13 | (= operating-system-name "Windows") 14 | (execute-mlisp-file "windows-process.ml") 15 | (= operating-system-name "unix") 16 | (execute-mlisp-file "unix-process.ml") 17 | (= operating-system-name "Linux") 18 | (execute-mlisp-file "unix-process.ml") 19 | (= operating-system-name "MacOSX") 20 | (execute-mlisp-file "unix-process.ml") 21 | (error-message "process.ml does not support operating system " operating-system-name) 22 | ) 23 | -------------------------------------------------------------------------------- /MLisp/Library/puppet-mode.key: -------------------------------------------------------------------------------- 1 | (local-bind-to-key "puppet-syntax-check" "\ec") 2 | (local-bind-to-key "paren-flash" ")") 3 | (local-bind-to-key "paren-flash" "]") 4 | (local-bind-to-key "paren-flash" "}") 5 | -------------------------------------------------------------------------------- /MLisp/Library/pybemacs-ui.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; pybemacs-ui.ml 3 | ; 4 | (defun UI-edit-copy() 5 | (error-occurred 6 | (UI-python-hook "edit-copy" (region-to-string)) 7 | ) 8 | ) 9 | 10 | (defun UI-edit-paste(~primary 0) 11 | (error-occurred 12 | (insert-string (UI-python-hook "edit-paste" ~primary)) 13 | ) 14 | ) 15 | 16 | (defun UI-frame-state() 17 | "normal" 18 | ) 19 | 20 | ;(if (! (is-bound filter-region)) 21 | ; (defun filter-region( ~cmd (get-tty-string ": filter-region (through command) ")) 22 | ; ~input-string 23 | ; (setq ~input-string (region-to-string)) 24 | ; (erase-region) 25 | ; (insert-string (UI-python-hook "filter-string" ~cmd ~input-string)) 26 | ; (novalue) 27 | ; ) 28 | ;) 29 | -------------------------------------------------------------------------------- /MLisp/Library/python-mode.key: -------------------------------------------------------------------------------- 1 | (define-keymap "Python-^X-prefix") 2 | (local-bind-to-key "Python-^X-prefix" "\^x") 3 | (local-bind-to-key "Python-compile" "\ec") 4 | (local-bind-to-key "Python-checker" "\[menu]bc") 5 | (local-bind-to-key "(message (Python-within-class-def))" "\e?") 6 | (local-bind-to-key "(insert-string (Python-within-class-def))" "\e=") 7 | (local-bind-to-key "Python-previous-def" "\^x[") 8 | (local-bind-to-key "Python-next-def" "\^x]") 9 | (local-bind-to-key "Python-previous-class" "\^x{") 10 | (local-bind-to-key "Python-next-class" "\^x}") 11 | (local-bind-to-key "paren-flash" ")") 12 | (local-bind-to-key "paren-flash" "]") 13 | (local-bind-to-key "paren-flash" "}") 14 | -------------------------------------------------------------------------------- /MLisp/Library/rust-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; rust-mode.key 3 | ; 4 | (define-keymap "rust-^X-prefix") 5 | (local-bind-to-key "rust-^X-prefix" "\^x") 6 | (local-bind-to-key "rust-compile" "\ec") 7 | (local-bind-to-key "paren-flash" ")") 8 | (local-bind-to-key "paren-flash" "]") 9 | (local-bind-to-key "paren-flash" "}") 10 | -------------------------------------------------------------------------------- /MLisp/Library/sentence.ml: -------------------------------------------------------------------------------- 1 | (if (! (is-bound sentence-delimiters)) 2 | (progn 3 | (declare-global sentence-delimiters) 4 | (setq sentence-delimiters "[.!?][ \n\t][ \n\t]*") 5 | )) 6 | 7 | (defun (forward-sentence 8 | (re-search-forward sentence-delimiters) 9 | (while (looking-at "") 10 | (search-forward ""))) 11 | ) 12 | 13 | (defun (backward-sentence stpos searchp 14 | (setq stpos (dot)) 15 | (preceding-char) 16 | (if (error-occurred (re-search-reverse sentence-delimiters)) 17 | (beginning-of-file)) 18 | (setq searchp (dot)) 19 | (while (looking-at "") 20 | (search-forward "")) 21 | (if (>= (dot) stpos) 22 | (progn 23 | (goto-character searchp) 24 | (if (error-occurred (re-search-reverse "")) 25 | (beginning-of-file)) 26 | (while (looking-at "") 27 | (search-forward ""))) 28 | ) 29 | ) 30 | ) 31 | -------------------------------------------------------------------------------- /MLisp/Library/sh-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; sh-mode.key 3 | ; 4 | -------------------------------------------------------------------------------- /MLisp/Library/shell.mlp: -------------------------------------------------------------------------------- 1 | (progn 2 | (argc) 3 | (shell) 4 | ) 5 | -------------------------------------------------------------------------------- /MLisp/Library/spawn.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; spawn.ml 3 | ; 4 | ; Barry A. Scott 26-Mar-1985 5 | (defun 6 | (spawn 7 | (return-to-monitor) 8 | ) 9 | ) 10 | -------------------------------------------------------------------------------- /MLisp/Library/spell.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; spell.key 3 | ; 4 | 5 | (setup-spell-checker 6 | "quit" "q" 7 | "help" "h" 8 | "next" "n" 9 | "edit" "e" 10 | "apply-to-all" "a" 11 | "suggestion-1" "1" 12 | "suggestion-2" "2" 13 | "suggestion-3" "3" 14 | "suggestion-4" "4" 15 | "suggestion-5" "5" 16 | "suggestion-6" "6" 17 | "suggestion-7" "7" 18 | "suggestion-8" "8" 19 | "suggestion-9" "9" 20 | "undo" "0" 21 | "undo" "u" 22 | ) 23 | -------------------------------------------------------------------------------- /MLisp/Library/sql-mode.key: -------------------------------------------------------------------------------- 1 | ; TBD 2 | -------------------------------------------------------------------------------- /MLisp/Library/tags.key: -------------------------------------------------------------------------------- 1 | (progn 2 | (bind-to-key "add-tag" "\^x\^a") 3 | (bind-to-key "goto-tag" "\^x\^l") 4 | (bind-to-key "visit-function" "\^x\^p") 5 | ) 6 | -------------------------------------------------------------------------------- /MLisp/Library/teach.mlp: -------------------------------------------------------------------------------- 1 | (progn 2 | ~teach-mode-line-format 3 | (switch-to-buffer "main") 4 | (setq ~teach-mode-line-format mode-line-format) 5 | (if (file-exists "emacs_doc:emacs.cbi") 6 | (visit-file "emacs_doc:emacs.cbi") 7 | (progn 8 | (switch-to-buffer "Teach error") 9 | (insert-string "No help available today") 10 | ) 11 | ) 12 | (delete-other-windows) 13 | (setq mode-line-format ~teach-mode-line-format) 14 | (setq current-buffer-type "scratch") 15 | (setq current-buffer-checkpointable 0) 16 | (argc) 17 | (beginning-of-file) 18 | ) 19 | -------------------------------------------------------------------------------- /MLisp/Library/textmode.key: -------------------------------------------------------------------------------- 1 | ; text-mode local keymap definitions 2 | (progn 3 | (local-bind-to-key "Text-mode-ESC-map" "\e") 4 | (local-bind-to-key "set-indent-offset" "\ei") 5 | (local-bind-to-key "fill-and-justify-paragraph" "\ej") 6 | (local-bind-to-key "fill-and-justify-region" "\eJ") 7 | (local-bind-to-key "set-left-margin" "\e1") 8 | (local-bind-to-key "set-right-margin" "\e\^h") 9 | (local-bind-to-key "justify-mode" "\em") 10 | (local-bind-to-key "~TM-center-line" "\ec") 11 | (if (is-bound TM-spell-line-hook) 12 | (if (error-occurred 13 | (local-bind-to-key "spell-newline" "\r") 14 | (local-bind-to-key "spell-newline-and-indent" "\n") 15 | ) 16 | (error-occurred 17 | (autoload "spell-newline" "spell") 18 | (autoload "spell-newline-and-indent" "spell") 19 | (local-bind-to-key "spell-newline" "\r") 20 | (local-bind-to-key "spell-newline-and-indent" "\n") 21 | ) 22 | ) 23 | ) 24 | ) 25 | -------------------------------------------------------------------------------- /MLisp/Library/time.ml: -------------------------------------------------------------------------------- 1 | (progn 2 | (declare-global time-interval &time-running) 3 | (if (= time-interval 0) (setq time-interval 1)) 4 | (defun 5 | (%time %time-is 6 | (setq %time-is (substr (current-time) 12 8)) 7 | (setq mode-string %time-is) 8 | (schedule-procedure "%time" time-interval) 9 | ) 10 | (time 11 | (if &time-running 12 | (schedule-procedure "%time" 0) 13 | (schedule-procedure "%time" time-interval) 14 | ) 15 | (setq &time-running (!= &time-running 0)) 16 | (setq &time-running (! &time-running)) 17 | (novalue) 18 | ) 19 | ) 20 | ) 21 | -------------------------------------------------------------------------------- /MLisp/Library/trace.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (trace 3 | x 4 | (setq x (decompile-current-line)) 5 | (if (> (length x) 0) 6 | (progn 7 | (message x) 8 | (sit-for trace-mode) 9 | ) 10 | ) 11 | ) 12 | ) 13 | -------------------------------------------------------------------------------- /MLisp/Library/undo.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; undo.ml 3 | ; 4 | ; Barry A. Scott (c) 1997 5 | ; 6 | (defun 7 | (new-undo 8 | ~c 9 | 10 | ~cont-char 11 | 12 | ~message 13 | 14 | (if (= (length last-keys-struck) 1) 15 | (progn 16 | (setq ~c (string-to-char last-keys-struck)) 17 | (if (< ~c ' ') 18 | (setq ~message (concat "Press or to undo more")) 19 | (setq ~message (concat "Press <" last-keys-struck "> or to undo more")) 20 | ) 21 | (setq ~cont-char (string-to-char last-keys-struck)) 22 | ) 23 | (progn 24 | (setq ~message "Press to undo more") 25 | (setq ~cont-char ' ') 26 | ) 27 | ) 28 | 29 | (undo) 30 | 31 | (while 32 | (progn 33 | (message ~message) 34 | (setq ~c (get-tty-character)) 35 | (| (= ~c ~cont-char) (= ~c ' ')) 36 | ) 37 | (undo-boundary) 38 | (undo-more) 39 | ) 40 | 41 | (message "Finished undoing.") 42 | 43 | (if (& 44 | (!= ~c '\n') 45 | (!= ~c '\r') 46 | ) 47 | (push-back-character ~c) 48 | ) 49 | ) 50 | ) 51 | -------------------------------------------------------------------------------- /MLisp/Library/vbscript-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; vbscript-mode.key 3 | ; 4 | (local-bind-to-key "vbscript-view-buffer" "\ec") 5 | -------------------------------------------------------------------------------- /MLisp/Library/white-space-mini-mode.ml: -------------------------------------------------------------------------------- 1 | (declare-global 2 | check-for-white-space-problems 3 | check-for-use-of-tabs-problems) 4 | (setq check-for-white-space-problems 0) 5 | (setq check-for-use-of-tabs-problems 0) 6 | 7 | (defun 8 | (add-check-for-white-space-problems-to-syntax-table 9 | (if check-for-white-space-problems 10 | (progn 11 | ; tab after space 12 | (modify-syntax-table "problem,ere" " *\t+") 13 | ; trailing white space 14 | (modify-syntax-table "problem,ere" " [ \t]*$") 15 | (modify-syntax-table "problem,ere" "\t[ \t]*$") 16 | ) 17 | ) 18 | ) 19 | ) 20 | 21 | (defun 22 | (add-check-for-use-of-tabs-problems-syntax-table 23 | (if check-for-use-of-tabs-problems 24 | (progn 25 | ; tab 26 | (modify-syntax-table "problem,ere" "\t\t*") 27 | ) 28 | ) 29 | ) 30 | ) 31 | -------------------------------------------------------------------------------- /MLisp/Library/windiff.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; windiff.ml 3 | ; copyright (c) 1995 Barry A. Scott 4 | ; 5 | 6 | ; 7 | ; diff the current window and the next 8 | ; starting from the top 9 | ; 10 | (defun 11 | (window-diff-start 12 | (beginning-of-file) 13 | (next-window) 14 | (beginning-of-file) 15 | (previous-window) 16 | (window-diff-continue) 17 | ) 18 | ) 19 | (defun 20 | (window-diff-continue 21 | ~line 22 | (while 23 | (progn 24 | (beginning-of-line) 25 | (set-mark) 26 | (end-of-line) 27 | (setq ~line (region-to-string)) 28 | (next-window) 29 | (beginning-of-line) 30 | (set-mark) 31 | (end-of-line) 32 | (exchange-dot-and-mark) 33 | (= ~line (region-to-string)) 34 | ) 35 | ;(sit-for 0) 36 | (next-line) 37 | (previous-window) 38 | (forward-character) 39 | ) 40 | ) 41 | ) 42 | -------------------------------------------------------------------------------- /MLisp/Library/writereg.ml: -------------------------------------------------------------------------------- 1 | (defun 2 | (write-region-to-file fname 3 | (setq fname 4 | (if (interactive) 5 | (get-tty-file ": write-region-to-file ") 6 | (arg 1 ": write-region-to-file ") 7 | ) 8 | ) 9 | (save-excursion 10 | (copy-region-to-buffer "write-temp") 11 | (temp-use-buffer "write-temp") 12 | (write-named-file fname) 13 | (kill-buffer "write-temp") 14 | ) 15 | (novalue) 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /MLisp/Library/xhtml-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; xhtml-mode.key 3 | ; 4 | (autoload "HTML-view-buffer" "html-mode") 5 | (autoload "XML-matching-tag-forward" "xml-mode") 6 | (autoload "XML-matching-tag-backward" "xml-mode") 7 | 8 | (local-bind-to-key "HTML-view-buffer" "\ec") 9 | (local-bind-to-key "XML-matching-tag-forward" "\e)") 10 | (local-bind-to-key "XML-matching-tag-backward" "\e(") 11 | -------------------------------------------------------------------------------- /MLisp/Library/xhtml-mode.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; xhtml-mode.ml 3 | ; 4 | (autoload "~HTML-setup-syntax" "html-mode" ) 5 | 6 | (defun 7 | (XHTML-mode 8 | (setq mode-string "XHTML") 9 | (use-syntax-table "XHTML") 10 | (use-local-map "XHTML-keymap") 11 | (use-abbrev-table "XHTML") 12 | ; defaults for grep 13 | (error-occurred (setq grep-default-files "*.html")) 14 | (novalue) 15 | ) 16 | ) 17 | 18 | (defun 19 | (~XHTML-setup-keymap 20 | (temp-use-buffer "~mode-hack") 21 | 22 | (define-keymap "XHTML-keymap") 23 | (use-local-map "XHTML-keymap") 24 | 25 | (execute-mlisp-file "xhtml-mode.key") 26 | 27 | (kill-buffer "~mode-hack") 28 | (novalue) 29 | ) 30 | ) 31 | 32 | (~HTML-setup-syntax "XHTML" "") 33 | (~XHTML-setup-keymap) 34 | -------------------------------------------------------------------------------- /MLisp/Library/xml-mode.key: -------------------------------------------------------------------------------- 1 | ; 2 | ; xml-mode.key 3 | ; 4 | (local-bind-to-key "XML-view-buffer" "\ec") 5 | (local-bind-to-key "XML-matching-tag-forward" "\e)") 6 | (local-bind-to-key "XML-matching-tag-backward" "\e(") 7 | -------------------------------------------------------------------------------- /MLisp/emacsinit.ml: -------------------------------------------------------------------------------- 1 | ; 2 | ; emacsinit.ml 3 | ; 4 | 5 | ; 6 | ; Setup EMACS in the windows UI style 7 | ; 8 | ; windows - setup the basic windows settings 9 | ; windows-extended - add more key binding for windows 10 | ; 11 | (default-emacs-init "windows,windows-extended") 12 | 13 | (message "Emacs is initialised.") (sit-for 5) 14 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Barry's Emacs 3 | ============= 4 | 5 | Barry's Emacs is easy to use and accessible, yet powerful. 6 | 7 | You can start using Barry's Emacs as a notepad replacement. Then, at your own speed use more advanced features. 8 | 9 | It's user interface uses the familiar Windows style user interface, key bindings, menus, toolbar and dialogs. 10 | Barry's Emacs is integrated with the Windows explorer. 11 | 12 | Barry's Emacs main web site: http://barrys-emacs.org 13 | 14 | Email and forum discussion are on: https://groups.io/g/barrys-emacs 15 | 16 | Features 17 | -------- 18 | 19 | * Full HTML documentation 20 | * windows style user interface 21 | * Edit multiple files 22 | * Multiple buffers 23 | * Syntax colouring 24 | * Regular expression searching 25 | * Fully programmable 26 | * Integrated Python extension language 27 | * Dark mode support 28 | 29 | Installation instructions 30 | ------------------------- 31 | 32 | Pre-built kits for Windows and macOS are available from the http://barrys-emacs.org/emacs8.html page. 33 | 34 | Fedora RPMs are available from COPR repos: 35 | * Barry's Emacs - https://copr.fedorainfracloud.org/coprs/barryascott/tools/ 36 | 37 | Details on how to build and install Barry's Emacs for Linux, macOS and Windows from source are covered in 38 | `INSTALL.html `_. 39 | --------------------------------------------------------------------------------