commit c043fc288382e924249bb90a852dd84a32569a30 Author: TakeV Date: Sun Feb 5 00:37:11 2023 -0800 Initial commit diff --git a/README.org b/README.org new file mode 100644 index 0000000..7450baa --- /dev/null +++ b/README.org @@ -0,0 +1,42 @@ +#+TITLE: mastodon layer +# Document tags are separated with "|" char +# The example below contains 2 tags: "layer" and "web service" +# Avaliable tags are listed in /.ci/spacedoc-cfg.edn +# under ":spacetools.spacedoc.config/valid-tags" section. +#+TAGS: layer|web service + +# The maximum height of the logo should be 200 pixels. +[[img/mastodon.png]] + +# TOC links should be GitHub style anchors. +* Table of Contents :TOC_4_gh:noexport: +- [[#description][Description]] + - [[#features][Features:]] +- [[#install][Install]] +- [[#key-bindings][Key bindings]] + +* Description +This layer adds support for something. + +** Features: + - Autocomplete + - Lint + - Refactor + - ... + +* Install +To use this configuration layer, add it to your =~/.spacemacs=. You will need to +add =mastodon= to the existing =dotspacemacs-configuration-layers= list in this +file. + +* Key bindings + +| Key Binding | Description | +|-------------+----------------| +| ~SPC x x x~ | Does thing01 | + +# Use GitHub URLs if you wish to link a Spacemacs documentation file or its heading. +# Examples: +# [[https://github.com/syl20bnr/spacemacs/blob/master/doc/VIMUSERS.org#sessions]] +# [[https://github.com/syl20bnr/spacemacs/blob/master/layers/%2Bfun/emoji/README.org][Link to Emoji layer README.org]] +# If space-doc-mode is enabled, Spacemacs will open a local copy of the linked file. diff --git a/config.el b/config.el new file mode 100644 index 0000000..af4ada0 --- /dev/null +++ b/config.el @@ -0,0 +1,24 @@ +;;; packages.el --- mastodon layer packages file for Spacemacs. +;; +;; Copyright (c) 2012-2022 Sylvain Benner & Contributors +;; +;; Author: TakeV +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +(defvar mastodon-enable-discover nil + "If not nil, discover will be installed, and mastodon-discover will be enabled") diff --git a/packages.el b/packages.el new file mode 100644 index 0000000..2fc76f7 --- /dev/null +++ b/packages.el @@ -0,0 +1,101 @@ +;;; packages.el --- mastodon layer packages file for Spacemacs. +;; +;; Copyright (c) 2012-2022 Sylvain Benner & Contributors +;; +;; Author: TakeV +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; See the Spacemacs documentation and FAQs for instructions on how to implement +;; a new layer: +;; +;; SPC h SPC layers RET +;; +;; +;; Briefly, each package to be installed or configured by this layer should be +;; added to `mastodon-packages'. Then, for each package PACKAGE: +;; +;; - If PACKAGE is not referenced by any other Spacemacs layer, define a +;; function `mastodon/init-PACKAGE' to load and initialize the package. + +;; - Otherwise, PACKAGE is already referenced by another Spacemacs layer, so +;; define the functions `mastodon/pre-init-PACKAGE' and/or +;; `mastodon/post-init-PACKAGE' to customize the package as it is loaded. + +;;; Code: + +(defconst mastodon-packages + '(mastodon + (discover + :location (recipe :fetcher github :repo "mickeynp/discover.el") + :toggle mastodon-enable-discover)) + "The list of Lisp packages required by the mastodon layer. + +Each entry is either: + +1. A symbol, which is interpreted as a package to be installed, or + +2. A list of the form (PACKAGE KEYS...), where PACKAGE is the + name of the package to be installed or loaded, and KEYS are + any number of keyword-value-pairs. + + The following keys are accepted: + + - :excluded (t or nil): Prevent the package from being loaded + if value is non-nil + + - :location: Specify a custom installation location. + The following values are legal: + + - The symbol `elpa' (default) means PACKAGE will be + installed using the Emacs package manager. + + - The symbol `local' directs Spacemacs to load the file at + `./local/PACKAGE/PACKAGE.el' + + - A list beginning with the symbol `recipe' is a melpa + recipe. See: https://github.com/milkypostman/melpa#recipe-format") + + +(defun mastodon/init-mastodon () + (use-package mastodon + :defer t + :ensure t + :init + (progn + (spacemacs/set-leader-keys "awm" 'mastodon) + (spacemacs/set-leader-keys-for-major-mode 'mastodon-mode + "gl" 'mastodon-tl--get-local-timeline + "gp" 'mastodon-profile--my-profile + "gn" 'mastodon-notifications-get + "gf" 'mastodon-tl--get-federated-timeline + "gh" 'mastodon-tl--get-home-timeline + "f" 'mastodon-toot--toggle-favourite + "b" 'mastodon-toot--toggle-boost + "n" 'mastodon-tl--goto-next-item + "t" 'mastodon-toot + "r" 'mastodon-toot--reply)))) + +(defun mastodon/init-discover () + (use-package discover + :defer t + :init + (progn + (require 'mastodon-discover) + (with-eval-after-load 'mastodon (mastodon-discover)))))