{"id":13831885,"url":"https://github.com/lokedhs/gnu-apl-mode","last_synced_at":"2025-07-09T15:33:48.141Z","repository":{"id":12101797,"uuid":"14690626","full_name":"lokedhs/gnu-apl-mode","owner":"lokedhs","description":"GNU APL mode for Emacs","archived":false,"fork":false,"pushed_at":"2022-04-04T03:41:02.000Z","size":728,"stargazers_count":94,"open_issues_count":7,"forks_count":18,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-04T10:07:56.913Z","etag":null,"topics":["emacs"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"liferay/liferay-plugins","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lokedhs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-25T16:14:46.000Z","updated_at":"2024-07-31T15:27:12.000Z","dependencies_parsed_at":"2022-08-07T06:16:44.318Z","dependency_job_id":null,"html_url":"https://github.com/lokedhs/gnu-apl-mode","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokedhs%2Fgnu-apl-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokedhs%2Fgnu-apl-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokedhs%2Fgnu-apl-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokedhs%2Fgnu-apl-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lokedhs","download_url":"https://codeload.github.com/lokedhs/gnu-apl-mode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225565944,"owners_count":17489288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs"],"created_at":"2024-08-04T10:01:43.662Z","updated_at":"2024-11-20T13:31:59.858Z","avatar_url":"https://github.com/lokedhs.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"Emacs mode for GNU APL\n======================\n\nAuthor contact information\n--------------------------\n\n  - Elias Mårtenson\n  - Email: lokedhs@gmail.com\n\nInstalling gnu-apl-mode\n-----------------------\n\nTo install, add the following to your `init.el`:\n\n```lisp\n(add-to-list 'load-path \"~/path-to/gnu-apl-mode\")\n(require 'gnu-apl-mode)\n```\n\nYou can then start the APL interaction using `M-x gnu-apl`.\n\nGNU APL version requirements\n----------------------------\n\nThis package requires certain features of GNU APL that was implemented\nas of version 1.2. In partciular, it takes advantage of a command line\noption called `--emacs` which enables certain features that are used\nby this mode. If your version of GNU APL is too old, you will get an\nerror message saying that the `--emacs` flag is not understood.\n\nNative code dependencies\n------------------------\n\nThis application contains a native part that is compiled into a shared\nlibrary that is loaded by GNU APL. The source code for this library\ncan be found in the directory `native`.\n\nGNU APL ships with this library, but if you are using a newer version\nof this Emacs mode, it may cause compatibility problems between the\nnative module and the Emacs Lisp code. If this happens, you need to\ncompile the module yourself and install it in the `lib/apl` directory\nwhere GNU APL is installed.\n\nKeymap\n------\n\nThis mode provides two different ways to input APL characters. The\nfirst is part of the mode itself, and implements the full GNU APL\nkeymap, when the \"super\" key is active.\n\nIf your keyboard does not have a super key (I highly recommend that\nyou map one, for example the otherwise useless windows key), you can\nalso use the `APL-Z` mode. Simply press `C-\\` and choose `APL-Z`. This\nwill provide the same keymap, but prefixed by \".\". Pressing dot twice\nwill output a dot on its own.\n\nKeyboard help\n-------------\n\nBy default, the keyboard help buffer is opened whenever the GNU APL\ninteractive mode is started. If you do not want this behaviour, set\nthe variable `gnu-apl-show-keymap-on-startup` to `nil`. This value can\nbe customised using `M-x customize-variable`.\n\nFonts\n-----\n\nSome operating systems (in particular, Fedora) does not ship with\nfonts that contain all the nescessary APL symbols. One free font that\ncontains all symbols and also looks good is GNU Free Mono. It can be\ndownloaded here: https://www.gnu.org/software/freefont/\n\nConfiguring APL font\n--------------------\n\nUsually, one wants to use a different font for APL buffers. This mode\nincludes a face called `gnu-apl-default` which is used in various\nplaces, such as the help buffers. However, it's not currently enabled\nby default in the interactive session, nor in APL buffers.\n\nIf you want to enable this, add the following to your\n`~/.emacs.d/init.el`:\n\n```lisp\n(defun em-gnu-apl-init ()\n  (setq buffer-face-mode-face 'gnu-apl-default)\n  (buffer-face-mode))\n\n(add-hook 'gnu-apl-interactive-mode-hook 'em-gnu-apl-init)\n(add-hook 'gnu-apl-mode-hook 'em-gnu-apl-init)\n```\n\nThis enables `buffer-face-mode` with the chosen font when an APL\nbuffer is opened.\n\nThis may be changed to be the default in a future version.\n\nCustomising keyboard layout\n---------------------------\n\nSometimes the default keyboard layout may not be enough, for example\nfor Dvorak users. In this case it can be customised by redefining 2\nvariables: `gnu-apl--symbols`, which is a list of triplets: character\nname, APL symbol and a corresponding key in the current keyboard\nlayout.\n\nTo customise displayed keyboard help it is necessary to redefine the\n`gnu-apl-keymap-template` variable to match the physical keyboard. For\nexample the old macbook's keyboard with the Dvorak layout could look\nlike this:\n\n```lisp\n(setq gnu-apl-keymap-template\"\n╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗\n║ ±∇ ║ !∇ ║ @∇ ║ #∇ ║ $∇ ║ %∇ ║ ^∇ ║ \u0026∇ ║ *∇ ║ (∇ ║ )∇ ║ _∇ ║ +∇ ║         ║\n║ §∇ ║ 1∇ ║ 2∇ ║ 3∇ ║ 4∇ ║ 5∇ ║ 6∇ ║ 7∇ ║ 8∇ ║ 9∇ ║ 0∇ ║ -∇ ║ =∇ ║ BACKSP  ║\n╠════╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦═╩══╦══════╣\n║       ║ \\\"∇ ║ \u003c∇ ║ \u003e∇ ║ P∇ ║ Y∇ ║ F∇ ║ G∇ ║ C∇ ║ R∇ ║ L∇ ║ ?∇ ║ +∇ ║ RET  ║\n║  TAB  ║ '∇ ║ ,∇ ║ .∇ ║ p∇ ║ y∇ ║ f∇ ║ g∇ ║ c∇ ║ r∇ ║ l∇ ║ /∇ ║ =∇ ║      ║\n╠═══════╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╦══╩═╗    ║\n║ (CAPS   ║ A∇ ║ O∇ ║ E∇ ║ U∇ ║ I∇ ║ D∇ ║ H∇ ║ T∇ ║ N∇ ║ S∇ ║ _∇ ║ |∇ ║    ║\n║  LOCK)  ║ a∇ ║ o∇ ║ e∇ ║ u∇ ║ i∇ ║ d∇ ║ h∇ ║ t∇ ║ n∇ ║ s∇ ║ -∇ ║ \\\\∇ ║    ║\n╠════════╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩═══╦╩════╩════╣\n║        ║ ~∇ ║ Z∇ ║ X∇ ║ C∇ ║ V∇ ║ B∇ ║ N∇ ║ M∇ ║ \u003c∇ ║ \u003e∇ ║ ?∇ ║          ║\n║  SHIFT ║ `∇ ║ z∇ ║ x∇ ║ c∇ ║ v∇ ║ b∇ ║ n∇ ║ m∇ ║ ,∇ ║ .∇ ║ /∇ ║  SHIFT   ║\n╚════════╩════╩════╩════╩════╩════╩════╩════╩════╩════╩════╩════╩══════════╝\")\n```\n\nNote that both of these variable shall be set _before_ loading the\n`gnu-apl-mode`. In order for changes in `gnu-apl--symbols` to take\nplace one better to restart Emacs; for `gnu-apl-keymap-template` it is\nenough to just hide/show keyboard help.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokedhs%2Fgnu-apl-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flokedhs%2Fgnu-apl-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokedhs%2Fgnu-apl-mode/lists"}