Files
memex/inbox-emacs.org

264 KiB
Raw Blame History

TODO Emacs [65/338]   emacs

[2024-02-28 Wed 16:14]

NEXT Refile GTD knowledge as org-roam

(defun my/org-gtd-roam-knowledge-func ()
  (setq-local org-gtd--organize-type 'knowledge)
  (org-gtd-organize-apply-hooks)
  (org-delete-property "ID")
  (when (yes-or-no-p "Does this need to be ID'd? ")
    (org-set-property "ID" (org-id-new)))
  (org-copy-subtree)
  (org-paste-subtree)
  (goto-char (point-min))
  ;; Do not cancel out here (otherwise double up headings)
  (org-roam-refile))

(setq org-gtd-knowledge-func #'my/org-gtd-roam-knowledge-func)

TODO [0/7] Reorganize this file to follow Emacs manual

  • State "DONE" from "DONE" [2023-07-28 Fri 13:25]
  • State "DONE" from [2023-07-28 Fri 13:24]
TODO Menu
TODO Distribution
TODO Introduction
TODO Important General Concepts
TODO 1 The Organization of the Screen
TODO 1.1 Point
TODO 1.2 The Echo Area
TODO 1.3 The Mode Line
TODO 1.4 The Menu Bar
TODO 2 Kinds of User Input
TODO 3 Keys
TODO 4 Keys and Commands
TODO 5 Entering Emacs
TODO 6 Exiting Emacs
TODO Fundamental Editing Commands
TODO 7 Basic Editing Commands
TODO 7.1 Inserting Text
TODO 7.2 Changing the Location of Point
TODO 7.3 Erasing
TODO 7.4 Undoing Changes
TODO 7.5 Files
TODO 7.6 Help
TODO 7.7 Blank Lines
TODO 7.8 Continuation Lines
TODO 7.9 Cursor Position Information
TODO 7.10 Numeric Arguments
TODO 7.11 Repeating a Command
TODO 8 The Minibuffer
TODO 8.1 Using the Minibuffer
TODO 8.2 Minibuffers for File Names
TODO 8.3 Editing in the Minibuffer
TODO 8.4 Completion
TODO 8.4.1 Completion Example
TODO 8.4.2 Completion Commands
TODO 8.4.3 Completion Exit
TODO 8.4.4 How Completion Alternatives Are Chosen
TODO 8.4.5 Completion Options
TODO 8.5 Minibuffer History
TODO 8.6 Repeating Minibuffer Commands
TODO 8.7 Entering passwords
TODO 8.8 Yes or No Prompts
TODO 9 Running Commands by Name
TODO 10 Help
TODO 10.1 Help Summary
TODO 10.2 Documentation for a Key
TODO 10.3 Help by Command or Variable Name
TODO 10.4 Apropos
TODO 10.5 Help Mode Commands
TODO 10.6 Keyword Search for Packages
TODO 10.7 Help for International Language Support
TODO 10.8 Other Help Commands
TODO 10.9 Help Files
TODO 10.10 Help on Active Text and Tooltips
TODO Important Text-Changing Commands
TODO 11 The Mark and the Region
TODO 11.1 Setting the Mark
TODO 11.2 Commands to Mark Textual Objects
TODO 11.3 Operating on the Region
TODO 11.4 The Mark Ring
TODO 11.5 The Global Mark Ring
TODO 11.6 Shift Selection
TODO 11.7 Disabling Transient Mark Mode
TODO 12 Killing and Moving Text
TODO 12.1 Deletion and Killing
TODO 12.1.1 Deletion
TODO 12.1.2 Killing by Lines
TODO 12.1.3 Other Kill Commands
TODO 12.1.4 Options for Killing
TODO 12.2 Yanking
TODO 12.2.1 The Kill Ring
TODO 12.2.2 Yanking Earlier Kills
TODO 12.2.3 Appending Kills
TODO 12.3 “Cut and Paste” Operations on Graphical Displays
TODO 12.3.1 Using the Clipboard
TODO 12.3.2 Cut and Paste with Other Window Applications
TODO 12.3.3 Secondary Selection
TODO 12.4 Accumulating Text
TODO 12.5 Rectangles
TODO 12.6 CUA Bindings
TODO 13 Registers
TODO 13.1 Saving Positions in Registers
TODO 13.2 Saving Text in Registers
TODO 13.3 Saving Rectangles in Registers
TODO 13.4 Saving Window Configurations in Registers
TODO 13.5 Keeping Numbers in Registers
TODO 13.6 Keeping File Names in Registers
TODO 13.7 Keyboard Macro Registers
TODO 13.8 Bookmarks
TODO 14 Controlling the Display
TODO 14.1 Scrolling
TODO 14.2 Recentering
TODO 14.3 Automatic Scrolling
TODO 14.4 Horizontal Scrolling
TODO 14.5 Narrowing
TODO 14.6 View Mode
TODO 14.7 Follow Mode
TODO 14.8 Text Faces
TODO 14.9 Colors for Faces
TODO 14.9.1 Color Names
TODO 14.9.2 RGB Triplets
TODO 14.10 Standard Faces
TODO 14.11 Text Scale
TODO 14.12 Font Lock mode
TODO 14.13 Interactive Highlighting
TODO 14.14 Window Fringes
TODO 14.15 Displaying Boundaries
TODO 14.16 Useless Whitespace
TODO 14.17 Selective Display
TODO 14.18 Optional Mode Line Features
TODO 14.19 How Text Is Displayed
TODO 14.20 Displaying the Cursor
TODO 14.21 Line Truncation
TODO 14.22 Visual Line Mode
TODO 14.23 Customization of Display
TODO 15 Searching and Replacement
TODO 15.1 Incremental Search
TODO 15.1.1 Basics of Incremental Search
TODO 15.1.2 Repeating Incremental Search
TODO 15.1.3 Isearch Yanking
TODO 15.1.4 Errors in Incremental Search
TODO 15.1.5 Special Input for Incremental Search
TODO 15.1.6 Not Exiting Incremental Search
TODO 15.1.7 Searching the Minibuffer
TODO 15.2 Nonincremental Search
TODO 15.3 Word Search
TODO 15.4 Symbol Search
TODO 15.5 Regular Expression Search
TODO 15.6 Syntax of Regular Expressions
TODO 15.7 Backslash in Regular Expressions
TODO 15.8 Regular Expression Example
TODO 15.9 Lax Matching During Searching
TODO 15.10 Replacement Commands
TODO 15.10.1 Unconditional Replacement
TODO 15.10.2 Regexp Replacement
TODO 15.10.3 Replace Commands and Lax Matches
TODO 15.10.4 Query Replace
TODO 15.11 Other Search-and-Loop Commands
TODO 15.12 Tailoring Search to Your Needs
TODO 16 Commands for Fixing Typos
TODO 16.1 Undo
TODO 16.2 Transposing Text
TODO 16.3 Case Conversion
TODO 16.4 Checking and Correcting Spelling
TODO 17 Keyboard Macros
TODO 17.1 Basic Use
TODO 17.2 The Keyboard Macro Ring
TODO 17.3 The Keyboard Macro Counter
TODO 17.4 Executing Macros with Variations
TODO 17.5 Naming and Saving Keyboard Macros
TODO 17.6 Editing a Keyboard Macro
TODO 17.7 Stepwise Editing a Keyboard Macro
TODO Major Structures of Emacs
TODO 18 File Handling
TODO 18.1 File Names
TODO 18.2 Visiting Files
TODO 18.3 Saving Files
TODO 18.3.1 Commands for Saving Files
TODO 18.3.2 Backup Files
TODO 18.3.2.1 Single or Numbered Backups
TODO 18.3.2.2 Automatic Deletion of Backups
TODO 18.3.2.3 Copying vs. Renaming
TODO 18.3.3 Customizing Saving of Files
TODO 18.3.4 Protection against Simultaneous Editing
TODO 18.3.5 Shadowing Files
TODO 18.3.6 Updating Time Stamps Automatically
TODO 18.4 Reverting a Buffer
TODO 18.5 Auto Revert: Keeping buffers automatically up-to-date
TODO 18.5.1 Auto Reverting Non-File Buffers
TODO 18.5.1.1 Auto Reverting the Buffer Menu
TODO 18.5.1.2 Auto Reverting Dired buffers
TODO 18.6 Auto-Saving: Protection Against Disasters
TODO 18.6.1 Auto-Save Files
TODO 18.6.2 Controlling Auto-Saving
TODO 18.6.3 Recovering Data from Auto-Saves
TODO 18.7 File Name Aliases
TODO 18.8 File Directories
TODO 18.9 Comparing Files
TODO 18.10 Diff Mode
TODO 18.11 Copying, Naming and Renaming Files
TODO 18.12 Miscellaneous File Operations
TODO 18.13 Accessing Compressed Files
TODO 18.14 File Archives
TODO 18.15 Remote Files
TODO 18.16 Quoted File Names
TODO 18.17 File Name Cache
TODO 18.18 Convenience Features for Finding Files
TODO 18.19 Viewing Image Files
TODO 18.20 Filesets
TODO 19 Using Multiple Buffers
TODO 19.1 Creating and Selecting Buffers
TODO 19.2 Listing Existing Buffers
TODO 19.3 Miscellaneous Buffer Operations
TODO 19.4 Killing Buffers
TODO 19.5 Operating on Several Buffers
TODO 19.6 Indirect Buffers
TODO 19.7 Convenience Features and Customization of Buffer Handling
TODO 19.7.1 Making Buffer Names Unique
TODO 19.7.2 Fast minibuffer selection
TODO 19.7.3 Customizing Buffer Menus
TODO 20 Multiple Windows
TODO 20.1 Concepts of Emacs Windows
TODO 20.2 Splitting Windows
TODO 20.3 Using Other Windows
TODO 20.4 Displaying in Another Window
TODO 20.5 Deleting and Resizing Windows
TODO 20.6 Displaying a Buffer in a Window
TODO 20.6.1 How display-buffer works
TODO 20.6.2 Displaying non-editable buffers.
TODO 20.7 Convenience Features for Window Handling
TODO 20.8 Window Tab Line
TODO 21 Frames and Graphical Displays
TODO 21.1 Mouse Commands for Editing
TODO 21.2 Mouse Commands for Words and Lines
TODO 21.3 Following References with the Mouse
TODO 21.4 Mouse Clicks for Menus
TODO 21.5 Mode Line Mouse Commands
TODO 21.6 Creating Frames
TODO 21.7 Frame Commands
TODO 21.8 Fonts
TODO 21.9 Speedbar Frames
TODO 21.10 Multiple Displays
TODO 21.11 Frame Parameters
TODO 21.12 Scroll Bars
TODO 21.13 Window Dividers
TODO 21.14 Drag and Drop
TODO 21.15 Menu Bars
TODO 21.16 Tool Bars
TODO 21.17 Tab Bars
TODO 21.18 Using Dialog Boxes
TODO 21.19 Tooltips
TODO 21.20 Mouse Avoidance
TODO 21.21 Non-Window Terminals
TODO 21.22 Using a Mouse in Text Terminals
TODO 22 International Character Set Support
TODO 22.1 Introduction to International Character Sets
TODO 22.2 Language Environments
TODO 22.3 Input Methods
TODO 22.4 Selecting an Input Method
TODO 22.5 Coding Systems
TODO 22.6 Recognizing Coding Systems
TODO 22.7 Specifying a Files Coding System
TODO 22.8 Choosing Coding Systems for Output
TODO 22.9 Specifying a Coding System for File Text
TODO 22.10 Coding Systems for Interprocess Communication
TODO 22.11 Coding Systems for File Names
TODO 22.12 Coding Systems for Terminal I/O
TODO 22.13 Fontsets
TODO 22.14 Defining Fontsets
TODO 22.15 Modifying Fontsets
TODO 22.16 Undisplayable Characters
TODO 22.17 Unibyte Editing Mode
TODO 22.18 Charsets
TODO 22.19 Bidirectional Editing
TODO Advanced Features
TODO 23 Major and Minor Modes
TODO 23.1 Major Modes
TODO 23.2 Minor Modes
TODO 23.3 Choosing File Modes
TODO 24 Indentation
TODO 24.1 Indentation Commands
TODO 24.2 Tab Stops
TODO 24.3 Tabs vs. Spaces
TODO 24.4 Convenience Features for Indentation
TODO 25 Commands for Human Languages
TODO 25.1 Words
TODO 25.2 Sentences
TODO 25.3 Paragraphs
TODO 25.4 Pages
TODO 25.5 Quotation Marks
TODO 25.6 Filling Text
TODO 25.6.1 Auto Fill Mode
TODO 25.6.2 Explicit Fill Commands
TODO 25.6.3 The Fill Prefix
TODO 25.6.4 Adaptive Filling
TODO 25.7 Case Conversion Commands
TODO 25.8 Text Mode
TODO 25.9 Outline Mode
TODO 25.9.1 Format of Outlines
TODO 25.9.2 Outline Motion Commands
TODO 25.9.3 Outline Visibility Commands
TODO 25.9.4 Viewing One Outline in Multiple Views
TODO 25.9.5 Folding Editing
TODO 25.10 Org Mode
TODO 25.10.1 Org as an organizer
TODO 25.10.2 Org as an authoring system
TODO 25.11 TeX Mode
TODO 25.11.1 TeX Editing Commands
TODO 25.11.2 LaTeX Editing Commands
TODO 25.11.3 TeX Printing Commands
TODO 25.11.4 TeX Mode Miscellany
TODO 25.12 SGML and HTML Modes
TODO 25.13 Nroff Mode
TODO 25.14 Enriched Text
TODO 25.14.1 Enriched Mode
TODO 25.14.2 Hard and Soft Newlines
TODO 25.14.3 Editing Format Information
TODO 25.14.4 Faces in Enriched Text
TODO 25.14.5 Indentation in Enriched Text
TODO 25.14.6 Justification in Enriched Text
TODO 25.14.7 Setting Other Text Properties
TODO 25.15 Editing Text-based Tables
TODO 25.15.1 What is a Text-based Table?
TODO 25.15.2 Creating a Table
TODO 25.15.3 Table Recognition
TODO 25.15.4 Commands for Table Cells
TODO 25.15.5 Cell Justification
TODO 25.15.6 Table Rows and Columns
TODO 25.15.7 Converting Between Plain Text and Tables
TODO 25.15.8 Table Miscellany
TODO 25.16 Two-Column Editing
TODO 26 Editing Programs
TODO 26.1 Major Modes for Programming Languages
TODO 26.2 Top-Level Definitions, or Defuns
TODO 26.2.1 Left Margin Convention
TODO 26.2.2 Moving by Defuns
TODO 26.2.3 Imenu
TODO 26.2.4 Which Function Mode
TODO 26.3 Indentation for Programs
TODO 26.3.1 Basic Program Indentation Commands
TODO 26.3.2 Indenting Several Lines
TODO 26.3.3 Customizing Lisp Indentation
TODO 26.3.4 Commands for C Indentation
TODO 26.3.5 Customizing C Indentation
TODO 26.4 Commands for Editing with Parentheses
TODO 26.4.1 Expressions with Balanced Parentheses
TODO 26.4.2 Moving in the Parenthesis Structure
TODO 26.4.3 Matching Parentheses
TODO 26.5 Manipulating Comments
TODO 26.5.1 Comment Commands
TODO 26.5.2 Multiple Lines of Comments
TODO 26.5.3 Options Controlling Comments
TODO 26.6 Documentation Lookup
TODO 26.6.1 Info Documentation Lookup
TODO 26.6.2 Man Page Lookup
TODO 26.6.3 Emacs Lisp Documentation Lookup
TODO 26.7 Hideshow minor mode
TODO 26.8 Completion for Symbol Names
TODO 26.9 MixedCase Words
TODO 26.10 Semantic
TODO 26.11 Other Features Useful for Editing Programs
TODO 26.12 C and Related Modes
TODO 26.12.1 C Mode Motion Commands
TODO 26.12.2 Electric C Characters
TODO 26.12.3 Hungry Delete Feature in C
TODO 26.12.4 Other Commands for C Mode
TODO 26.13 Asm Mode
TODO 26.14 Fortran Mode
TODO 26.14.1 Motion Commands
TODO 26.14.2 Fortran Indentation
TODO 26.14.2.1 Fortran Indentation and Filling Commands
TODO 26.14.2.2 Continuation Lines
TODO 26.14.2.3 Line Numbers
TODO 26.14.2.4 Syntactic Conventions
TODO 26.14.2.5 Variables for Fortran Indentation
TODO 26.14.3 Fortran Comments
TODO 26.14.4 Auto Fill in Fortran Mode
TODO 26.14.5 Checking Columns in Fortran
TODO 26.14.6 Fortran Keyword Abbrevs
TODO 27 Compiling and Testing Programs
TODO 27.1 Running Compilations under Emacs
TODO 27.2 Compilation Mode
TODO 27.3 Subshells for Compilation
TODO 27.4 Searching with Grep under Emacs
TODO 27.5 Finding Syntax Errors On The Fly
TODO 27.6 Running Debuggers Under Emacs
TODO 27.6.1 Starting GUD
TODO 27.6.2 Debugger Operation
TODO 27.6.3 Commands of GUD
TODO 27.6.4 GUD Customization
TODO 27.6.5 GDB Graphical Interface
TODO 27.6.5.1 GDB User Interface Layout
TODO 27.6.5.2 Source Buffers
TODO 27.6.5.3 Breakpoints Buffer
TODO 27.6.5.4 Threads Buffer
TODO 27.6.5.5 Stack Buffer
TODO 27.6.5.6 Other GDB Buffers
TODO 27.6.5.7 Watch Expressions
TODO 27.6.5.8 Multithreaded Debugging
TODO 27.7 Executing Lisp Expressions
TODO 27.8 Libraries of Lisp Code for Emacs
TODO 27.9 Evaluating Emacs Lisp Expressions
TODO 27.10 Lisp Interaction Buffers
TODO 27.11 Running an External Lisp
TODO 28 Maintaining Large Programs
TODO 28.1 Version Control
TODO 28.1.1 Introduction to Version Control
TODO 28.1.1.1 Understanding the Problems it Addresses
TODO 28.1.1.2 Supported Version Control Systems
TODO 28.1.1.3 Concepts of Version Control
TODO 28.1.1.4 Merge-based vs Lock-based Version Control
TODO 28.1.1.5 Changeset-based vs File-based Version Control
TODO 28.1.1.6 Decentralized vs Centralized Repositories
TODO 28.1.1.7 Types of Log File
TODO 28.1.2 Version Control and the Mode Line
TODO 28.1.3 Basic Editing under Version Control
TODO 28.1.3.1 Basic Version Control with Merging
TODO 28.1.3.2 Basic Version Control with Locking
TODO 28.1.3.3 Advanced Control in C-x v v
TODO 28.1.4 Features of the Log Entry Buffer
TODO 28.1.5 Registering a File for Version Control
TODO 28.1.6 Examining And Comparing Old Revisions
TODO 28.1.7 VC Change Log
TODO 28.1.8 Undoing Version Control Actions
TODO 28.1.9 Ignore Version Control Files
TODO 28.1.10 VC Directory Mode
TODO 28.1.10.1 The VC Directory Buffer
TODO 28.1.10.2 VC Directory Commands
TODO 28.1.11 Version Control Branches
TODO 28.1.11.1 Switching between Branches
TODO 28.1.11.2 Pulling/Pushing Changes into/from a Branch
TODO 28.1.11.3 Merging Branches
TODO 28.1.11.4 Creating New Branches
TODO 28.1.12 Miscellaneous Commands and Features of VC
TODO 28.1.12.1 Change Logs and VC
TODO 28.1.12.2 Deleting and Renaming Version-Controlled Files
TODO 28.1.12.3 Revision Tags
TODO 28.1.12.4 Inserting Version Control Headers
TODO 28.1.13 Customizing VC
TODO 28.1.13.1 General Options
TODO 28.1.13.2 Options for RCS and SCCS
TODO 28.1.13.3 Options specific for CVS
TODO 28.2 Working with Projects
TODO 28.2.1 Project Commands That Operate on Files
TODO 28.2.2 Project Commands That Operate on Buffers
TODO 28.2.3 Switching Projects
TODO 28.2.4 Managing the Project List File
TODO 28.3 Change Logs
TODO 28.3.1 Change Log Commands
TODO 28.3.2 Format of ChangeLog
TODO 28.4 Find Identifier References
TODO 28.4.1 Find Identifiers
TODO 28.4.1.1 Looking Up Identifiers
TODO 28.4.1.2 Commands Available in the xref Buffer
TODO 28.4.1.3 Searching and Replacing with Identifiers
TODO 28.4.1.4 Identifier Inquiries
TODO 28.4.2 Tags Tables
TODO 28.4.2.1 Source File Tag Syntax
TODO 28.4.2.2 Creating Tags Tables
TODO 28.4.2.3 Etags Regexps
TODO 28.4.3 Selecting a Tags Table
TODO 28.5 Emacs Development Environment
TODO 28.6 Merging Files with Emerge
TODO 28.6.1 Overview of Emerge
TODO 28.6.2 Submodes of Emerge
TODO 28.6.3 State of a Difference
TODO 28.6.4 Merge Commands
TODO 28.6.5 Exiting Emerge
TODO 28.6.6 Combining the Two Versions
TODO 28.6.7 Fine Points of Emerge
TODO 28.7 Bug Reference
TODO 29 Abbrevs
TODO 29.1 Abbrev Concepts
TODO 29.2 Defining Abbrevs
TODO 29.3 Controlling Abbrev Expansion
TODO 29.4 Abbrevs Suggestions
TODO 29.5 Examining and Editing Abbrevs
TODO 29.6 Saving Abbrevs
TODO 29.7 Dynamic Abbrev Expansion
TODO 29.8 Customizing Dynamic Abbreviation
TODO 30 Dired, the Directory Editor
TODO 30.1 Entering Dired
TODO 30.2 Navigation in the Dired Buffer
TODO 30.3 Deleting Files with Dired
TODO 30.4 Flagging Many Files at Once
TODO 30.5 Visiting Files in Dired
TODO 30.6 Dired Marks vs. Flags
TODO 30.7 Operating on Files
TODO 30.8 Shell Commands in Dired
TODO 30.9 Transforming File Names in Dired
TODO 30.10 File Comparison with Dired
TODO 30.11 Subdirectories in Dired
TODO 30.12 Subdirectory Switches in Dired
TODO 30.13 Moving Over Subdirectories
TODO 30.14 Hiding Subdirectories
TODO 30.15 Updating the Dired Buffer
TODO 30.16 Dired and find
TODO 30.17 Editing the Dired Buffer
TODO 30.18 Viewing Image Thumbnails in Dired
TODO 30.19 Other Dired Features
TODO 31 The Calendar and the Diary
TODO 31.1 Movement in the Calendar
TODO 31.1.1 Motion by Standard Lengths of Time
TODO 31.1.2 Beginning or End of Week, Month or Year
TODO 31.1.3 Specified Dates
TODO 31.2 Scrolling in the Calendar
TODO 31.3 Counting Days
TODO 31.4 Miscellaneous Calendar Commands
TODO 31.5 Writing Calendar Files
TODO 31.6 Holidays
TODO 31.7 Times of Sunrise and Sunset
TODO 31.8 Phases of the Moon
TODO 31.9 Conversion To and From Other Calendars
TODO 31.9.1 Supported Calendar Systems
TODO 31.9.2 Converting To Other Calendars
TODO 31.9.3 Converting From Other Calendars
TODO 31.10 The Diary
TODO 31.10.1 The Diary File
TODO 31.10.2 Displaying the Diary
TODO 31.10.3 Date Formats
TODO 31.10.4 Commands to Add to the Diary
TODO 31.10.5 Special Diary Entries
TODO 31.10.6 Appointments
TODO 31.10.7 Importing and Exporting Diary Entries
TODO 31.11 Daylight Saving Time
TODO 31.12 Summing Time Intervals
TODO 31.13 More advanced features of the Calendar and Diary
TODO 31.13.1 Customizing the Calendar
TODO 31.13.2 Customizing the Holidays
TODO 31.13.3 Converting from the Mayan Calendar
TODO 31.13.4 Date Display Format
TODO 31.13.5 Time Display Format
TODO 31.13.6 Customizing the Diary
TODO 31.13.7 Diary Entries Using non-Gregorian Calendars
TODO 31.13.8 Diary Display
TODO 31.13.9 Fancy Diary Display
TODO 31.13.10 Sexp Entries and the Fancy Diary Display
TODO 32 Sending Mail
TODO 32.1 The Format of the Mail Buffer
TODO 32.2 Mail Header Fields
TODO 32.3 Mail Aliases
TODO 32.4 Mail Commands
TODO 32.4.1 Mail Sending
TODO 32.4.2 Mail Header Editing
TODO 32.4.3 Citing Mail
TODO 32.4.4 Mail Miscellany
TODO 32.5 Mail Signature
TODO 32.6 Mail Amusements
TODO 32.7 Mail-Composition Methods
TODO 33 Reading Mail with Rmail
TODO 33.1 Basic Concepts of Rmail
TODO 33.2 Scrolling Within a Message
TODO 33.3 Moving Among Messages
TODO 33.4 Deleting Messages
TODO 33.5 Rmail Files and Inboxes
TODO 33.6 Multiple Rmail Files
TODO 33.7 Copying Messages Out to Files
TODO 33.8 Labels
TODO 33.9 Rmail Attributes
TODO 33.10 Sending Replies
TODO 33.11 Summaries
TODO 33.11.1 Making Summaries
TODO 33.11.2 Editing in Summaries
TODO 33.12 Sorting the Rmail File
TODO 33.13 Display of Messages
TODO 33.14 Rmail and Coding Systems
TODO 33.15 Editing Within a Message
TODO 33.16 Digest Messages
TODO 33.17 Reading Rot13 Messages
TODO 33.18 movemail program
TODO 33.19 Retrieving Mail from Remote Mailboxes
TODO 33.20 Retrieving Mail from Local Mailboxes in Various Formats
TODO 34 Email and Usenet News with Gnus
TODO 34.1 Gnus Buffers
TODO 34.2 When Gnus Starts Up
TODO 34.3 Using the Gnus Group Buffer
TODO 34.4 Using the Gnus Summary Buffer
TODO 35 Host Security
TODO 36 Network Security
TODO 37 Document Viewing
TODO 37.1 DocView Navigation
TODO 37.2 DocView Searching
TODO 37.3 DocView Slicing
TODO 37.4 DocView Conversion
TODO 38 Running Shell Commands from Emacs
TODO 38.1 Single Shell Commands
TODO 38.2 Interactive Subshell
TODO 38.3 Shell Mode
TODO 38.4 Shell Prompts
TODO 38.5 Shell Command History
TODO 38.5.1 Shell History Ring
TODO 38.5.2 Shell History Copying
TODO 38.5.3 Shell History References
TODO 38.6 Directory Tracking
TODO 38.7 Shell Mode Options
TODO 38.8 Emacs Terminal Emulator
TODO 38.9 Term Mode
TODO 38.10 Remote Host Shell
TODO 38.11 Serial Terminal
TODO 39 Using Emacs as a Server
TODO 39.1 TCP Emacs server
TODO 39.2 Invoking emacsclient
TODO 39.3 emacsclient Options
TODO 40 Printing Hard Copies
TODO 40.1 PostScript Hardcopy
TODO 40.2 Variables for PostScript Hardcopy
TODO 40.3 Printing Package
TODO 41 Sorting Text
TODO 42 Editing Pictures
TODO 42.1 Basic Editing in Picture Mode
TODO 42.2 Controlling Motion after Insert
TODO 42.3 Picture Mode Tabs
TODO 42.4 Picture Mode Rectangle Commands
TODO 43 Editing Binary Files
TODO 44 Saving Emacs Sessions
TODO 45 Recursive Editing Levels
TODO 46 Hyperlinking and Web Navigation Features
TODO 46.1 Web Browsing with EWW
TODO 46.2 Embedded WebKit Widgets
TODO 46.3 Following URLs
TODO 46.4 Activating URLs
TODO 46.5 Finding Files and URLs at Point
TODO 47 Games and Other Amusements
TODO 48 Emacs Lisp Packages
TODO 48.1 The Package Menu Buffer
TODO 48.2 Package Statuses
TODO 48.3 Package Installation
TODO 48.4 Package Files and Directory Layout
TODO 49 Customization
TODO 49.1 Easy Customization Interface
TODO 49.1.1 Customization Groups
TODO 49.1.2 Browsing and Searching for Settings
TODO 49.1.3 Changing a Variable
TODO 49.1.4 Saving Customizations
TODO 49.1.5 Customizing Faces
TODO 49.1.6 Customizing Specific Items
TODO 49.1.7 Custom Themes
TODO 49.1.8 Creating Custom Themes
TODO 49.2 Variables
TODO 49.2.1 Examining and Setting Variables
TODO 49.2.2 Hooks
TODO 49.2.3 Local Variables
TODO 49.2.4 Local Variables in Files
TODO 49.2.4.1 Specifying File Variables
TODO 49.2.4.2 Safety of File Variables
TODO 49.2.5 Per-Directory Local Variables
TODO 49.2.6 Per-Connection Local Variables
TODO 49.3 Customizing Key Bindings
TODO 49.3.1 Keymaps
TODO 49.3.2 Prefix Keymaps
TODO 49.3.3 Local Keymaps
TODO 49.3.4 Minibuffer Keymaps
TODO 49.3.5 Changing Key Bindings Interactively
TODO 49.3.6 Rebinding Keys in Your Init File
TODO 49.3.7 Modifier Keys
TODO 49.3.8 Rebinding Function Keys
TODO 49.3.9 Named ASCII Control Characters
TODO 49.3.10 Rebinding Mouse Buttons
TODO 49.3.11 Disabling Commands
TODO 49.4 The Emacs Initialization File
TODO 49.4.1 Init File Syntax
TODO 49.4.2 Init File Examples
TODO 49.4.3 Terminal-specific Initialization
TODO 49.4.4 How Emacs Finds Your Init File
TODO 49.4.5 Non-ASCII Characters in Init Files
TODO 49.4.6 The Early Init File
TODO 49.5 Keeping Persistent Authentication Information
TODO Recovery from Problems
TODO 50 Quitting and Aborting
TODO 51 Dealing with Emacs Trouble
TODO 51.1 If DEL Fails to Delete
TODO 51.2 Recursive Editing Levels
TODO 51.3 Garbage on the Screen
TODO 51.4 Garbage in the Text
TODO 51.5 Running out of Memory
TODO 51.6 When Emacs Crashes
TODO 51.7 Recovery After a Crash
TODO 51.8 Emergency Escape
TODO 51.9 Long Lines
TODO 52 Reporting Bugs
TODO 52.1 Reading Existing Bug Reports and Known Problems
TODO 52.2 When Is There a Bug
TODO 52.3 Understanding Bug Reporting
TODO 52.4 Checklist for Bug Reports
TODO 52.5 Sending Patches for GNU Emacs
TODO 53 Contributing to Emacs Development
TODO 53.1 Coding Standards
TODO 53.2 Copyright Assignment

DONE Straight package manager

  • State "DONE" from "TODO" [2024-07-10 Wed 09:57]

TODO Diary

(setq diary-file (concat org-directory "diary"))

TODO Phone

TODO Phone pictures in org?
(setq browse-url-browser-function 'browse-url-firefox)
(unless window-system
  (xterm-mouse-mode 1)
  (global-set-key [mouse-4] (lambda ()
                              (interactive)
                              (scroll-down 1)))
  (global-set-key [mouse-5] (lambda ()
                              (interactive)
                              (scroll-up 1))))
(use-package org
  :config
  (when my-phone-p
    (add-to-list 'org-file-apps '("\\.png\\'" . default))
    (add-to-list 'org-file-apps '("\\.jpg\\'" . default))
    (add-to-list 'org-file-apps '("\\.jpeg\\'" . default)))
  )

(defun my/format-intent (intent &optional params)
  "Return a command string for sending INTENT with PARAMS.
      PARAMS is an alist of (\"key\" . \"value\") pairs."
  (format "am broadcast --user 0 -a %s %s"
          intent
          (mapconcat
           (lambda (o)
             (format
              "-e %s %s"
              (shell-quote-argument (car o))
              (shell-quote-argument (cdr o))))
           params
           " ")))

(defun my/send-intent (intent &optional params)
  "Send broadcast INTENT to my phone.
      PARAMS is a plist of :key value pairs."
  (let ((command (my-format-intent intent params)))
    (if my-phone-p
        (shell-command command)
      (shell-command (format "ssh phone %s" (shell-quote-argument command))))))
TODO AnE macs interface for KDE Connect   emacs computer
  (use-package kdeconnect
    :ensure t
    :config
    (setq kdeconnect-devices "1bd8e06bb908496b")
    (setq kdeconnect-active-device "1bd8e06bb908496b")
    )

TODO Hydra

  (use-package hydra
    )

TODO Compare directories

  (use-package ztree
    :bind* (("M-m g v" . ztree-dir)
            ("M-m g V" . ztree-diff))
    :init
    (setq ztree-dir-move-focus t))

TODO helm interface for the recoll desktop search tool.

  (defun helm-ff-recoll-index-directory (directory)
  "Create a recoll index directory from DIRECTORY.
Add the new created directory to `helm-recoll-directories' using the
basename of DIRECTORY as name.
By using `customize-set-variable', a new source is created for this
new directory."
  (cl-assert (boundp 'helm-recoll-directories) nil
             "Package helm-recoll not installed or configured")
  (let* ((bn (helm-basename (expand-file-name directory)))
         (index-dir (format "~/.recoll-%s" bn))
         (conf-file (expand-file-name "recoll.conf" index-dir))) 
    (mkdir index-dir)
    (with-current-buffer (find-file-noselect conf-file)
      (insert (format "topdirs = %s" (expand-file-name directory)))
      (save-buffer)
      (kill-buffer))
    (customize-set-variable 'helm-recoll-directories
                            (append `((,bn . ,index-dir)) helm-recoll-directories))
    (message "Don't forget to index config directory with 'recollindex -c %s'" index-dir)))

(defmethod helm-setup-user-source ((source helm-source-ffiles))
  (helm-source-add-action-to-source-if
   "Recoll index directory"
   'helm-ff-recoll-index-directory
   source
   'file-directory-p
   3))
  (use-package helm-recoll
    :commands helm-recoll
    :init (setq helm-recoll-directories
                '(("confdir" . "~/.recoll-.emacs.d")
                  ("lisp sources" . "~/.recoll-emacs-lisp")
                  ("work" . "~/.recoll-work"))))

TODO u11 / csv.el · GitLab   emacs archive

TODO OpenVPN management mode for Emacs   emacs security

CNCL Emacs Helm interface for pass   emacs security

  • State "CNCL" from "DONE" [2023-08-26 Sat 11:59]
  • State "DONE" from "TODO" [2023-07-06 Thu 11:41]
  (use-package helm-pass
     )

CNCL A major mode for password-store   emacs security

  • State "CNCL" from "DONE" [2023-08-26 Sat 11:59]
  • State "DONE" from "TODO" [2023-07-06 Thu 11:42]
  (use-package pass
    :ensure t
    )

CNCL Install Prelude

  • State "CNCL" from [2023-07-02 Sun 15:04]

CNCL Gnome calendar integration with emacs   emacs linux

  • State "CNCL" from [2023-07-31 Mon 17:45]

CNCL Integrate orgmode with the GNOME desktop   emacs linux

  • State "CNCL" from [2023-07-31 Mon 14:01]

CNCL Open files with external programs   emacs computer

  • State "CNCL" from [2023-07-31 Mon 17:48]

CNCL Control GNU/Linux computer from Emacs   emacs

  • State "CNCL" from [2023-07-31 Mon 17:46]

CNCL Access existed File Managers' bookmarks in Dired.   emacs archive linux

  • State "CNCL" from [2023-07-31 Mon 17:47]

TODO Emacs-Lisp

  • State "DONE" from "NEXT" [2023-08-09 Wed 13:52]
  (use-package "eldoc"
    ;;  :if my-laptop-p
    :diminish eldoc-mode
    :commands turn-on-eldoc-mode
    :defer t
    :init
    (progn
      (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)
      (add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode)
      (add-hook 'ielm-mode-hook 'turn-on-eldoc-mode)
      )
    )
  (use-package emacs-lisp-mode
    :mode ("\\.el$" . emacs-lisp-mode)
    :bind (:map emacs-lisp-mode-map
                ("C-c I" . describe-function)
                ("C-c S" . find-function-at-point)
                )
    )

DONE Docker

  • State "DONE" from "NEXT" [2023-08-09 Wed 13:52]
  (use-package dockerfile-mode
     :mode ("Dockerfile\\'" . dockerfile-mode)
    )

DONE Web

  • State "DONE" from "NEXT" [2023-08-09 Wed 13:53]
  (use-package web-mode
    :mode ("\\.html$" . web-mode)
    )

DONE Python

  • State "DONE" from "NEXT" [2023-08-09 Wed 13:52]
  (use-package python
    :mode ("\\.py\\'" . python-mode)
    :config
    (setq python-shell-interpreter "ipython"
          python-shell-interpreter-args "-i")
    )

DONE Anaconda Python

  • State "DONE" from "TODO" [2023-08-28 Mon 19:03]

Anaconda mode provides python code navigation and completion but you need to install a few dependencies first from pip first or it will install on its own.

  (use-package anaconda-mode
    :defer 2
    :diminish anaconda-mode
    :diminish anaconda-eldoc-mode
    :bind (:map python-mode-map
                ("C-c I" . anaconda-mode-show-doc)
                ("C-c S" . anaconda-mode-find-definitions))
    :config
    (progn
      (add-hook 'python-mode-hook 'anaconda-mode)))

DONE Define Python path

  • State "DONE" from "TODO" [2023-08-28 Mon 19:03]
  (setq python-interpreter "/usr/bin/python3")

DONE YALM

  • State "DONE" from "TODO" [2023-08-28 Mon 19:03]
  (use-package yaml-mode
    :mode "\\.yml$")

DONE R

  (use-package ess
    :mode (("\\.r$" . R-mode)
           ("\\.R$" . R-mode)
           ("\\.jl$" . julia-mode))
    :commands (R-mode
               julia-mode
               my-julia-shell-here
               ess-eval-function
               ess-eval-line
               ess-eval-buffer
               ess-switch-to-ESS)
    :config
    (require 'ess-site)
    )

DONE NGINX

  • State "DONE" from "TODO" [2023-08-22 Tue 13:20]
  (use-package nginx-mode
    :commands (nginx-mode)
    )

TODO Orgzly sync

From this Reddit post. In termux, you also need to pkg install diffutils.

  (setq ediff-toggle-skip-similar t
        ediff-diff-options "-w"
        ediff-window-setup-function 'ediff-setup-windows-plain
        ediff-split-window-function 'split-window-horizontally
        )
  (defun my/resolve-orgzly-syncthing ()
    (interactive)
    (ibizaman/syncthing-resolve-conflicts "~/sync/orgzly")
    )

  (defun ibizaman/syncthing-resolve-conflicts (directory)
    "Resolve all conflicts under given DIRECTORY."
    (interactive "D")
    (let* (
           (all (ibizaman/syncthing--get-sync-conflicts directory))
           (chosen (ibizaman/syncthing--pick-a-conflict all))
           )
      (ibizaman/syncthing-resolve-conflict chosen)
      )
    )

  (defun ibizaman/syncthing-show-conflicts-dired (directory)
    "Open dired buffer at DIRECTORY showing all syncthing conflicts."
    (interactive "D")
    (find-name-dired directory "*.sync-conflict-*")
    )

  (defun ibizaman/syncthing-resolve-conflict-dired (&optional arg)
    "Resolve conflict of first marked file in dired or close to point with ARG."
    (interactive "P")
    (let ((chosen (car (dired-get-marked-files nil arg))))
      (ibizaman/syncthing-resolve-conflict chosen)
      )
    )

  (defun ibizaman/syncthing-resolve-conflict (conflict)
    "Resolve CONFLICT file using ediff."
    (let* ((normal (ibizaman/syncthing--get-normal-filename conflict)))
      (ibizaman/ediff-files)
      (list conflict normal)
      `(lambda ()
         (when (y-or-n-p "Delete conflict file? ")
           (kill-buffer (get-file-buffer ,conflict)
                        )
           (delete-file ,conflict)
           )
         )
      )
    )

  (defun ibizaman/syncthing--get-sync-conflicts (directory)
    "Return a list of all sync conflict files in a DIRECTORY."
    (seq-filter
     (lambda (o) (not (string-match "\\.stversions" o)))
     (directory-files-recursively directory "\\.sync-conflict-")
     )
    )

  (defvar ibizaman/syncthing--conflict-history nil
    "Completion conflict history")

  (defun ibizaman/syncthing--pick-a-conflict (conflicts)
    "Let user choose the next conflict from CONFLICTS to investigate."
    (completing-read "Choose the conflict to investigate: " conflicts
                     nil t nil ibizaman/syncthing--conflict-history)
    )

  (defun ibizaman/syncthing--get-normal-filename (conflict)
    "Get non-conflict filename matching the given CONFLICT."
    (replace-regexp-in-string "\\.sync-conflict-.*\\(\\..*\\)$" "\\1" conflict)
    )

  (defun ibizaman/ediff-files (&optional files quit-hook)
    (interactive)
    (lexical-let ((files (or files (dired-get-marked-files)))
                  (quit-hook quit-hook)
                  (wnd (current-window-configuration))
                  )
                 (if (<= (length files) 2)
                     (let ((file1 (car files))
                           (file2 (if (cdr files)
                                      (cadr files)
                                    (read-file-name
                                     "file: "
                                     (dired-dwim-target-directory))
                                    )
                                  )
                           )
                       (if (file-newer-than-file-p file1 file2)
                           (ediff-files file2 file1)
                         (ediff-files file1 file2)
                         )
                       (add-hook 'ediff-after-quit-hook-internal
                                 (lambda ()
                                   (setq ediff-after-quit-hook-internal nil)
                                   (when quit-hook (funcall quit-hook)
                                         )
                                   (set-window-configuration wnd)
                                   )
                                 )
                       )
                   (error "no more than 2 files should be marked")
                   )
                 )
    )
  )

CNCL Create an Orgzly feature request asking for android web page share to Orgzly to be in the format Title for easy bookmarking, leaving the note content for notes.

CNCL Write an Emacs keyboard macro to covert Orgzly phone capture to standard capture

  • State "CNCL" from [2023-07-02 Sun 15:06]

Adding TITLE and URI properties, converting heading to a hyperlink.

TODO Narrow to org-hierarchy

  • State "DONE" from "TODO" [2023-07-07 Fri 16:23]
  (with-eval-after-load 'org
  (let ((listvar (if (boundp 'org-speed-commands) 'org-speed-commands
                   'org-speed-commands-user)))
    (add-to-list listvar '("N" org-narrow-to-subtree))
    (add-to-list listvar '("W" widen))
    (add-to-list listvar '("T" my/org-agenda-for-subtree))
    (add-to-list listvar '("b" my/org-bounce-to-file))))

(defun my/org-agenda-for-subtree ()
  (interactive)
  (when (derived-mode-p 'org-agenda-mode) (org-agenda-switch-to))
  (my/org-with-current-task
   (let ((org-agenda-view-columns-initially t))
     (org-agenda nil "t" 'subtree))))

TODO Download file at URL and attach with org-attach

  • State "DONE" from "NEXT" [2023-08-09 Wed 09:06]
  (defun my/org-attach-download (url)
    "Download file at URL and attach with org-attach.

  Interactively, look for URL at point, in X clipboard, and in \"kill-ring\", prompting if not found.  With prefix, prompt for URL."
    (interactive (list (if current-prefix-arg
                           (read-string "URL: ")
                         (or (org-element-property :raw-link (org-element-context))
                             (org-web-tools--get-first-url)
                             (read-string "URL: ")
                             )
                         )
                       )
                 )
    (when (yes-or-no-p (concat "Attach file at URL: " url))
      (let* ((temp-dir (make-temp-file "org-attach-download-" 'dir))
             (basename (file-name-nondirectory (directory-file-name url)))
             (local-path (expand-file-name basename temp-dir))
             size)
        (unwind-protect
            (progn
              (url-copy-file url local-path 'ok-if-exists 'keep-time)
              (setq size (file-size-human-readable
                          (file-attribute-size
                           (file-attributes local-path))))
              (org-attach-attach local-path nil 'mv)
              (message "Attached %s (%s)" url size))
          (delete-directory temp-dir)
          )
        )
      )
    )
DONE Go to the headline corresponding to this org-attach directory
  • State "DONE" from "NEXT" [2023-08-09 Wed 09:06]
  (defun my/org-attach-visit-headline-from-dired ()
      "Go to the headline corresponding to this org-attach directory.

    from https://fuco1.github.io/2023-02-08-Visit-the-org-headline-from-the-attach-dired-buffer.html"
      (interactive)
      (let* ((id-parts (last (split-string default-directory "/" t) 2))
             (id (apply #'concat id-parts))
             )
        (let ((m (org-id-find id 'marker)))
          (unless m (user-error "Cannot find entry with ID \"%s\"" id))
          (pop-to-buffer (marker-buffer m))
          (goto-char m)
          (move-marker m nil)
          (org-fold-show-context)
          )
        )
      )

TODO Encryption

  • State "DONE" from [2023-09-02 Sat 13:05]
  (use-package org-crypt
    :config
    (org-crypt-use-before-save-magic)
    (setq org-tags-exclude-from-inheritance '("crypt"))

    (setq org-crypt-key nil)
    ;; GPG key to use for encryption.
    ;; nil means  use symmetric encryption unconditionally.
    ;; "" means use symmetric encryption unless heading sets CRYPTKEY property.

    (setq auto-save-default nil)
    ;; Auto-saving does not cooperate with org-crypt.el: so you need to
    ;; turn it off if you plan to use org-crypt.el quite often.  Otherwise,
    ;; you'll get an (annoying) message each time you start Org.

    ;; To turn it off only locally, you can insert this:
    ;;
    ;; # -*- buffer-auto-save-file-name: nil; -*-
    )

DONE Convert org header into org-roam node

  • State "DONE" from "TODO" [2023-07-31 Mon 13:43]
(defun my/convert-to-org-roam-node ()
  "Convert org header at point into org-roam node."
  (interactive)
  (when (org-at-heading-p) ; Check if we're at a heading
    (let* ((header (org-get-heading t t t t))
           (content (org-get-entry)) ; Get content under the header
           ;; Get properties block start and end
           (props-start (string-match ":PROPERTIES:" content))
           (props-end (when props-start (string-match ":END:" content props-start)))
           ;; Save the existing properties into a variable
           (existing-props (when (and props-start props-end)
                             (let ((props (split-string (substring content (+ props-start 13) (- props-end 4)) "\n")))
                               (mapconcat #'identity
                                          (seq-remove (lambda (s) (string-match-p ":CREATED:" s)) props) "\n"))))
           ;; Extract and format CREATED property
           (created (when-let ((created-match (string-match ":CREATED: \\[\\(.*?\\)\\]" content)))
                      (format "%s" (match-string 1 content)))))
      (if created
          (let* ((cleaned-created (substring created 0 10)) ; Extract YYYY-MM-DD
                 (filename (concat cleaned-created "-" (replace-regexp-in-string " " "-" header) ".org")))
            (with-temp-buffer
              (insert "* " header "\n\n") ; Put an empty line between the header and properties drawer
              (insert ":PROPERTIES:\n:ID: " (org-id-uuid) "\n:CREATED: [" created "]\n") ; Add new ID and CREATED properties
              ;; Append existing properties, if any
              (when existing-props
                (insert existing-props "\n"))
              (insert ":END:\n\n")
              ;; Insert the content, skipping existing properties block
              (insert (if (and props-start props-end)
                          (substring content (+ props-end 6))
                        content))
              (write-file filename)))
        (message "No CREATED property found for this heading")))))

TODO Covert org header to org-roam-dailies header

  (defun my/org-header-to-org-roam-dailies (filename)
  "Migrate Org-header to org-roam-dailies file.
Searches for a the :CREATED: property in the supplied org FILENAME and create an org-roam-dailies file from it."
  (with-current-buffer (find-file-noselect filename)
    (goto-char (point-min))
    (let ((created-property
           (when (re-search-forward "^\\*+ .*?\\s-+:PROPERTIES:\\s-+:CREATED:\\s-+\\[\\(\\<[0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\) .*?\\]")
             (match-string-no-properties 1))))
      (if created-property
          (let ((daily-filename (concat org-roam-dailies-directory "/" created-property ".org")))
            (unless (file-exists-p daily-filename)
              (org-roam-dailies-capture created-property)
              (with-current-buffer (find-file-noselect daily-filename)
                (insert (buffer-substring (point-min) (point-max)))
                (save-buffer))))
        (error "No :CREATED: property found")))))

TODO Capture from web pages & org-roam : r/orgmode

  • State "DONE" from "TODO" [2023-08-22 Tue 12:43]
  (setq org-roam-capture-ref-templates
       '(("i" "internet" plain #'org-roam-capture--get-point "%?"
          :file-name "float/%<%Y%m%d%H%M>-${slug}"
          :head "#+title: ${title}\n#+roam_key: ${ref}\n#+roam_tags: bookmark"
          :unnarrowed t)))

TODO Get summaries of wikipedia articles in Emacs   emacs web search

TODO Publishing

  • State "DONE" from "TODO" [2023-08-10 Thu 07:32]
  • State "DONE" from "TODO" [2023-08-09 Wed 09:11]

This is taken from ox-hugo and https://justin.vc/posts/ox-hugo-and-org-roam/[[JustinVC's modifications to make it work with org-roam.

  (use-package ox-hugo
    :after ox
    :bind (
           ("C-c C-e H H" . org-hugo-export-wim-to-md)
  	 ("C-C C-e H H" . org-hugo-export-wim-to-md :all-subtres)
  	 ("C-c C-e H h" . org-hugo-export-to-md)
  	 )
    )

DONE Org mode epub export   emacs books

  • State "DONE" from "NEXT" [2023-08-11 Fri 13:25]
  (use-package ox-epub
    )

TODO Org2blog: Blog from Org mode to WordPress   emacs web publishing

TODO A carefully crafted Org exporter back-end for Hugo   emacs web publishing

TODO View, capture, and archive Waeb pages in Org-mode   emacs

  • State "DONE" from "NEXT" [2023-08-03 Thu 13:18]
  • State "DONE" from "NEXT" [2023-08-03 Thu 13:17]
      (use-package org-web-tools
        :bind (:map org-mode-map
                    ("C-c w" . org-web-tools-archive-attach)
                    ("C-c W" . org-web-tools-archive-view)
                    )
        :config
;      (setq org-web-tools-archive-wget-options
;            (delete "--execute robots=off" org-web-tools-archive-wget-options))
;      (add-to-list 'org-web-tools-archive-wget-options "-e robots=off")

  ;;    :custom
    ;    (org-web-tools-archive-wget-option   ;; Fix wget bug with -e robots=off https://github.com/alphapapa/org-web-tools/issues/35
    ;     '("--execute"
    ;       "robots=off)"
    ;       )
     ;    )
      )

TODO Convert html to org format text   emacs web html archive

TODO org-bookmarks-extractor   emacs web archive

TODO Archive Mastodon links

  (defun my/mastodon-store-link ()
  "Store links in Mastodon buffers."
  (when (derived-mode-p 'mastodon-mode)
    (let ((json (get-text-property (point) 'toot-json)))
      (org-link-store-props
       :link (assoc-default 'url json)
       :content (assoc-default 'content json)
       :text
       (concat
        (string-trim (mastodon-tl--render-text (assoc-default 'content json)))
        (if (assoc-default 'media_attachments json)
            (concat "\n\n"
                    (mapconcat
                     (lambda (attachment)
                       (org-link-make-string
                        (assoc-default 'url attachment)
                        (assoc-default 'description attachment)))
                     (assoc-default 'media_attachments json)
                     "\n"
                     )))
            "")
        ))))

(use-package org
  :config
  (org-link-set-parameters
   "mastodon"
   :store 'my/mastodon-store-link)
  (add-to-list 'org-capture-templates
               `("m" "Mastodon" entry (file ,my/org-inbox-file)
                 "* %?

#+begin_quote
%:text
#+end_quote

%a"
                 :prepend t)))

TODO [0/2] org-roam-capture web articles in web/

  • State "DONE" from "TODO" [2023-08-19 Sat 20:03]
  • web highlight L template is converted into block quotes
  • notes are written below each block quote
  • Node CREATED timestamp in file properties
TODO org-roam-capture
  (defun my/org-protocol-insert-selection-dwim (selection)
  "Insert SELECTION as an org blockquote."
  (unless (string= selection "")
    (format "#+begin_quote\n%s\n#+end_quote" selection)
    (format "\n%s\n" selection)))
TODO Templates
  (add-to-list 'org-roam-capture-templates
               '("r" "ref" plain
                 "* %U\n  %(my/org-protocol-insert-selection-dwim \"%i\")%?"
                 :target (file+head "web/${slug}.org"
                                    "#+title: ${title}\n
                                     ,#+roam_key: ${ref}\n
                                     ,#+created: %u\n"
                                    )
                 :unnarrowed t
                 )
               )

TODO Article is pulled into *Article below block quotes using org-web-tools

  • Article ACCESSED timestamp in header properties
  • Link to node is listed as a header in web.org, sorted by CREATED date. Web.org is added to agenda with custom TODO statuses: READ ARCHIVE DONE
  • ARCHIVE is when entire web page ZIP archive is captured using org-web-tools.

CNCL Org mode's web archiver.   emacs archive

  • State "CNCL" from [2023-08-09 Wed 09:15]
    Using org-web-tools instead, being actively developed.

CNCL Manage zotero collections from emacsemacs.   emacs archive academia

  • State "CNCL" from "TODO" [2023-08-22 Tue 13:00]

TODO Emacs Zotero · GitLab   emacs archive academia

TODO zotxt: a Zotero extension for text   emacs archive academia

TODO BibTeX-Mode for GNU Emacs   emacs

TODO helm-bibtex

  • State "DONE" from "NEXT" [2023-08-03 Thu 13:15]
  (use-package helm-bibtex
    :ensure t
    :config (setq bibtex-completion-bibliography bib-files-directory
                  bibtex-completion-library-path pdf-files-directory
                  bibtex-completion-pdf-field "File"
                  bibtex-completion-notes-path org-directory
                  )
    )

TODO Org Roam integration with bibliography management software   emacs archive

  • State "DONE" from "NEXT" [2023-08-03 Thu 13:15]
  (use-package org-roam-bibtex
    :after (org-roam helm-bibtex)
    :bind (
           :map org-mode-map ("C-c n b" . orb-note-actions))
    :config
    (require 'org-ref)
    (org-roam-bibtex-mode)
    )

  (add-hook 'bibtex-mode-hook 'flyspell-mode ) ;; Spell checking (requires the ispell software)

  ;; Change fields and format
  (setq bibtex-user-optional-fields '(("keywords" "Keywords to describe the entry" "")
                                      ("file" "Link to document file." ":"))
        bibtex-align-at-equal-sign t
        bib-files-directory (directory-files
                             (concat org-directory "library") t                            "^[A-Z|a-z].+.bib$")
        pdf-files-directory (concat org-directory "documents/pdf"))

TODO org-ref

  (use-package org-ref
    :ensure t
    :defer t
    :config (setq org-ref-completion-library 'org-ref-helm-cite
                  org-ref-get-pdf-filename-function 'org-ref-get-pdf-filename-helm-bibtex
                  org-ref-default-bibliography bib-files-directory
                  org-ref-notes-directory org-directory
                  org-ref-notes-function 'orb-edit-notes
                  )
    )

TODO Zotra: get bibliographic information from a url and save it into a bibtex file

  (use-package zotra
    :ensure t
    )

TODO Annotate and sort incoming PDFs into your org files   emacs archive

    (use-package org-incoming
      :ensure t
      :config
      (setq org-incoming-dirs
            '(
            (:source "Download" :target "/home/amr/org/library/documents/pdf")
;            (:source (concat (getenv "HOME") "/Download") :target (concat org-directory "/library/documents/pdf"))
  ;            (:source (concat org-directory "/inbox") :target (concat org-directory "/library/documents/pdf") :use-roam 't)
  ;            (:source "/home/user/incoming/folder3" :target "/home/user/org/todos" :pdf-subdir "originals")
              )
            )
      )

TODO Emacs support library for PDF files.   emacs archive

  • State "DONE" from "NEXT" [2023-08-09 Wed 14:53]
  (use-package pdf-tools
    :ensure t
    :hook (org-mode . org-pdftools-setup-link)
    :config
    (pdf-tools-install)
    (setq-default pdf-view-display-size 'fit-width)
    (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward)
    :custom
    (pdf-annot-activate-created-annotations t "automatically annotate highlights")
    )
  (defun my/fix-pdf-selection ()
  "Replace pdf with one where selection shows transparently."
  (interactive)
  (unless (equal (file-name-extension (buffer-file-name)) "pdf")
    (error "Buffer should visit a pdf file."))
  (unless (equal major-mode 'pdf-view-mode)
    (pdf-view-mode))
  ;; save file in QDF-mode
  (qpdf-run (list
             (concat "--infile="
                     (buffer-file-name))
             "--qdf --object-streams=disable"
             "--replace-input"))
  ;; do replacements
  (text-mode)
  (read-only-mode -1)
  (while (re-search-forward "3 Tr" nil t)
    (replace-match "7 Tr" nil nil))
  (save-buffer)
  (pdf-view-mode))

TODO Send books to Kindle

  (use-package org-kindle ;; Send books to Kindle
    :ensure t
    )

TODO Convert between Kindle clippings and org mode.   python kindle emacs

TODO Reading list management with org mode   emacs books

TODO Open EPUBs in CalibreDB inside Emacs

  (defun calibredb-open-file-with-default-tool (arg &optional candidate)
  "Open file with the system default tool.
If the universal prefix ARG is used, ignore `calibredb-preferred-format'.
Optional argument CANDIDATE is the selected item."
  (interactive "P")
  (unless candidate
    (setq candidate (car (calibredb-find-candidate-at-point))))
  (if arg
      (let ((calibredb-preferred-format nil))
        (calibredb-open-with-default-tool (calibredb-get-file-path candidate t)))
    (calibredb-open-with-default-tool (calibredb-get-file-path candidate t))))
(defun my/calibredb-open-file-with-emacs (&optional candidate)
    "Open file with Emacs.
Optional argument CANDIDATE is the selected item."
    (interactive "P")
    (unless candidate
      (setq candidate (car (calibredb-find-candidate-at-point))))
    (find-file (calibredb-get-file-path candidate t)))
  (define-key calibredb-search-mode-map "V" #'my/calibredb-open-file-with-emacs)

CNCL Extract highlights and notes from Calibre EPUB reader   emacs books

CLOSED: [2024-02-03 Sat 03:08]

CNCL Create book library report

  • State "CNCL" from [2023-07-02 Sun 15:09]

CNCL Import book library report into org

  • State "CNCL" from [2023-07-02 Sun 15:09]

CNCL Create sync mechanism between Calibre library and org book report

  • State "CNCL" from [2023-07-02 Sun 15:09]

TODO Install mpd controller

TODO Emms   emacs music

TODO Install org-download

This extension facilitates moving images from point A to point B.

Point A (the source) can be:

  • An image inside your browser that you can drag to Emacs.
  • An image on your file system that you can drag to Emacs.
  • A local or remote image address in kill-ring. Use the org-download-yank command for this. Remember that you can use "0 w" in dired to get an address.
  • A screenshot taken using gnome-screenshot, scrot, gm, xclip (on Linux), screencapture (on OS X) or , imagemagick/convert (on Windows). Use the org-download-screenshot command for this. Customize the backend with org-download-screenshot-method.

Point B (the target) is an Emacs org-mode buffer where the inline link will be inserted. Several customization options will determine where exactly on the file system the file will be stored.

  (use-package org-download
    )
  (add-hook 'dired-mode-hook 'org-download-enable)     ;; Drag-and-drop to `dired`

TODO Control mpv for easy note takin   emacs video

TODO peertube - MELPA   emacs video

TODO Movie watchlist management using org-mode.   emacs archive video

  • State "DONE" from "NEXT" [2023-08-13 Sun 11:45]
  (use-package org-movies
    :ensure t
    :config
    ;;    (setq org-movies-api-key "f99b1ad3")
    (setq org-movies-api-key (auth-source-pass-get "api-key" "www/omdbapi.com/witty.zone3686@fastmail.com"))
    (add-to-list 'org-capture-templates
                '("m"
                   "Movie"
                   entry
                   ;;(file+headline (concat org-directory "library/movies.org") "To-watch")
                   (file+headline "~/org/library/movies.org" "Movies")
                   "%(call-interactively 'org-movies-from-url)"
                   :prepend t
                   :empty-lines 1
                   :created t
                   :kill-buffer t
                  )
                )
    )

TODO ytdl   emacs video youtube

TODO Extract YouTube video subtitles   emacs video youtube

TODO View and annotate video and audio

  (use-package org-media-note
    :init (setq org-media-note-use-org-ref t)
    :hook (org-mode .  org-media-note-mode)
    :bind (
           ("H-v" . org-media-note-hydra/body))  ;; Main entrance
    :config
    (setq org-media-note-screenshot-image-dir (concat org-directory "images/"))  ;; Folder to save screenshot
    (setq org-media-note-use-refcite-first t)  ;; use videocite link instead of video link if possible
    )

DONE Install Pandoc

  • State "DONE" from "TODO" [2023-07-05 Wed 17:17]
sudo apt-install pandoc

TODO Connect Pandoc and Org

  (use-package org-pandoc-import
    :straight (:host github :repo "tecosaur/org-pandoc-import" :files ("*.el" "filters" "preprocessors"))
    )

CNCL orgmodeweb   emacs

CLOSED: [2023-01-30 Mon 21:41]

  • State "CNCL" from [2023-07-02 Sun 15:05]

CNCL A simple org-mode based journaling mode

CLOSED: [2023-01-31 Tue 05:04]

  • State "CNCL" from [2023-07-02 Sun 15:05]

CNCL Store Emacs configs in org file using org-dotemacs

  • State "CNCL" from [2023-07-02 Sun 15:05]

CNCL Install org-board

  • State "CNCL" from [2023-07-02 Sun 15:05]

CNCL Org-appear

  • State "CNCL" from [2023-07-02 Sun 15:06]
  (use-package org-appear ;; Show hidden emphasis markers
    :hook (org-mode . org-appear-mode)
    )

CNCL Superstar

  • State "CNCL" from [2023-07-02 Sun 15:06]
  (use-package org-superstar ;; Nice bullets
    :ensure t
    :config
    (setq org-superstar-special-todo-items t)
    (add-hook 'org-mode-hook (lambda ()
                               (org-superstar-mode 1)
                               )
              )
    )

TODO Increase size of LaTeX fragment previews

  (plist-put org-format-latex-options :scale 2)

TODO Html As Markdown. Transparently edit an html file using markdown.   emacs web

:URI: ATED: [2023-01-28 Sat 09:09

TODO kiwix - MELPA   emacs wiki

TODO Wikipedia Infobox -> Emacs-Lisp   emacs wiki

TODO Org mode wikinfo integration   emacs wiki

TODO Mastodon keyboard shortcuts via Hydra

   ;; Not in the following hydra, but mentioned in "M-x describe-mode". Also, the README.org
  ;; contains several functions that aren't in my hydra.
  ;;
  ;; TAB                     mastodon-tl--next-tab-item
  ;; D                       mastodon-toot--delete-and-redraft-toot
  ;; C-S-b                   mastodon-tl--unblock-user
  ;; S-TAB                   mastodon-tl--previous-tab-item
  ;; S-RET                   mastodon-tl--unmute-user
  ;; C-S-w                   mastodon-tl--unfollow-user
  ;; S-SPC                   scroll-down-command
  ;; <backtab>               mastodon-tl--previous-tab-item
  ;; C-M-i                   mastodon-tl--previous-tab-item
  ;; M-n                     mastodon-tl--next-tab-item
  ;; M-p                     mastodon-tl--previous-tab-item

  (defhydra my/mastodon-help (:color blue :hint nil)
    "
Timelines^^   Toots^^^^           Own Toots^^   Profiles^^      Users/Follows^^  Misc^^
^^-----------------^^^^--------------------^^----------^^-------------------^^------^^-----
_H_ome        _n_ext _p_rev       _r_eply       _A_uthors       follo_W_         _X_ lists
_L_ocal       _T_hread of toot^^  wri_t_e       user _P_rofile  _N_otifications  f_I_lter
_F_ederated   (un) _b_oost^^      _e_dit        ^^              _R_equests       _C_opy URL
fa_V_orites   (un) _f_avorite^^   _d_elete      _O_wn           su_G_estions     _S_earch
_#_ tagged    (un) p_i_n^^        ^^            _U_pdate own    _M_ute user      _h_elp
_@_ mentions  (un) boo_k_mark^^   show _E_dits  ^^              _B_lock user
boo_K_marks   _v_ote^^
trendin_g_
_u_pdate      _w_rite Emacs news  _o_rg  _s_creenshot
"
    ;; my custom stuff
    ("s" my/mastodon-toot-screenshot)
    ("w" my/mastodon-save-toot-for-emacs-news)
    ("o" (org-capture nil "m"))
    ;; more general things
    ("H" mastodon-tl--get-home-timeline)
    ("L" mastodon-tl--get-local-timeline)
    ("F" mastodon-tl--get-federated-timeline)
    ("V" mastodon-profile--view-favourites)
    ("#" mastodon-tl--get-tag-timeline)
    ("@" mastodon-notifications--get-mentions)
    ("K" mastodon-profile--view-bookmarks)
    ("g" mastodon-search--trending-tags)
    ("u" mastodon-tl--update :exit nil)

    ("n" mastodon-tl--goto-next-toot)
    ("p" mastodon-tl--goto-prev-toot)
    ("T" mastodon-tl--thread)
    ("b" mastodon-toot--toggle-boost :exit nil)
    ("f" mastodon-toot--toggle-favourite :exit nil)
    ("i" mastodon-toot--pin-toot-toggle :exit nil)
    ("k" mastodon-toot--bookmark-toot-toggle :exit nil)
    ("c" mastodon-tl--toggle-spoiler-text-in-toot)
    ("v" mastodon-tl--poll-vote)

    ("A" mastodon-profile--get-toot-author)
    ("P" mastodon-profile--show-user)
    ("O" mastodon-profile--my-profile)
    ("U" mastodon-profile--update-user-profile-note)

    ("W" mastodon-tl--follow-user)
    ("N" mastodon-notifications-get)
    ("R" mastodon-profile--view-follow-requests)
    ("G" mastodon-tl--get-follow-suggestions)
    ("M" mastodon-tl--mute-user)
    ("B" mastodon-tl--block-user)

    ("r" mastodon-toot--reply)
    ("t" mastodon-toot)
    ("e" mastodon-toot--edit-toot-at-point)
    ("d" mastodon-toot--delete-toot)
    ("E" mastodon-toot--view-toot-edits)

    ("I" mastodon-tl--view-filters)
    ("X" mastodon-tl--view-lists)
    ("C" mastodon-toot--copy-toot-url)
    ("S" mastodon-search--search-query)
    ("h" describe-mode)

    ("q" nil :exit t)
  )
(use-package mastodon
 :bind ("s-m" . my/mastodon-help/body))

TODO Web search from Emacs and the terminal   emacs web search

TODO Maciej Barć / emacs-websearch · GitLab   emacs web search

CNCL Emacs wallabag client   emacs web

  • State "CNCL" from [2023-08-09 Wed 12:26]

CNCL Emacs client for Pocket reading list (getpocket.com)   emacs web

  • State "CNCL" from [2023-07-06 Thu 11:30]

TODO Install BBDB contact manager

  (use-package bbdb
    :config
    (bbdb-initialize 'gnus 'message 'w3)
    (bbdb-insinuate-message)
    (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
    (setq bbdb-north-american-phone-numbers nil)
    )
  (require 'bbdb-autoloads)
    (require 'bbdb) 
   (load "bbdb-com" t)
    (bbdb-initialize 'gnus 'message 'reportmail 'w3)
    (bbdb-insinuate-reportmail)
    (bbdb-insinuate-message)
    ;; (bbdb-insinuate-sc)
    (bbdb-insinuate-w3)
    (setq bbdb-north-american-phone-numbers nil)
    (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
    (setq bbdb-auto-notes-alist
          (quote (("To"
                   ("w3o" . "w3o")
                   ("plug" . "plug")
                   ("linux" . "linux")
                   ("emacs-commit" . "emacs commit")
                   ("emacs" . "emacs")
                   ("pinoyjug" . "pinoyjug")
                   ("digitalfilipino" . "digitalfilipino")
                   ("sacha" . "personal mail"))
                  ("From"
                   ("admu" company "Ateneo de Manila University")
                  ("Organization" (".*" company 0 nil))
                  ))))
    (setq bbdb-auto-notes-ignore (quote (("Organization" . "^Gatewayed from\\\\|^Source only"))))
    (setq bbdb-auto-notes-ignore-all nil)
    (setq bbdb-check-zip-codes-p nil)
    (setq bbdb-default-area-code 632)
    (setq bbdb-default-country "Philippines")
    (setq bbdb-ignore-some-messages-alist (quote (("From" . "hotmail") ("To" . "handhelds") ("From" . "yahoo.com"))))
    (setq bbdb-notice-hook (quote (bbdb-auto-notes-hook)))
    (setq bbdb/mail-auto-create-p t)
    (setq bbdb/news-auto-create-p (quote bbdb-ignore-some-messages-hook))

TODO bbdb-csv-import - MELP   emacs archive

TODO Synchronize calendars and contacts.   calendar carddav

TODO org-contacts - MELPA   emacs contacts

TODO org-contacts2vcard   emacs contacts

TODO Org sync with Google Tasks   emacs work

TODO Hanno Perrey / khalel · GitLab   emacs calendar carddav

TODO pomodoro technique for org-mode   emacs work

TODO News and mail on Gnus

TODO SMTP
  (setq 
   user-mail-address    "amr@gharbeia.net"   ; $EMAIL
   user-full-name       "Amr Gharbeia")        ; $NAME
  smtpmail-smtp-server "imap.fastmail.com"    ; $SMTPSERVER
  send-mail-function   'smtpmail-send-it     ;
  smtpmail-smtp-service 587                  ; SMTP port
                                          ; gnus-select-method '(nntp "foo.bar.com")  ; Connect to an NNTP server
  )
  ;; A list of additional servers
  (add-to-list gnus-secondary-select-methods
               '((nnspool "localhost")
                 (nnml "")))

      ;; nnml gets credentials here.
  (setq mail-sources
        '((pop :server   "imap.fastmail.com"   
               :user     "amr@gharbeia.net")))

  (setq user-mail-address    "amr@gharbeia.net")   ; $EMAIL
  (setq user-full-name       "Amr Gharbeia")        ; $NAME
  (setq smtpmail-smtp-server "imap.fastmail.com")    ; $SMTPSERVER
  (setq send-mail-function   'smtpmail-send-it)     ;
  (setq smtpmail-smtp-service 587)                  ; SMTP port
  (setq gnus-select-method '(nnimap "imap.gmail.com")  ; Connect to an NNTP server

        ;; A list of additional servers
        (add-to-list gnus-secondary-select-methods
                     '((nnspool "localhost")
                       (nnml "")))

        ;; nnml gets credentials here.
        (setq mail-sources
              '((pop :server   "imap.fastmail.com"))
              )

TODO Use Linux/Windows/Mac mail program to send mail from Emacs   emacs email

  (use-package desktop-mail-user-agent
    :ensure t
    :config
    (setq mail-user-agent sendmail-user-agent)
    )

TODO Install elfeed

TODO Make elfeed work with tt-rss using elfeed-protocol

TODO Elfeed with Tiny Tiny RSS   emacs rss

TODO A frontend for elfeed   emacs rss

TODO Emacs interface to tt-rss   emacs rss

TODO mastodon - MELPA   emacs social_network

TODO A Gnus backend for Twitter   emacs twitter

TODO A Gnus backend for Reddit   emacs reddit

TODO Emacs Mode for Reddit   emacs web reddit

TODO Install Memacs

  • State "DONE" from "NEXT" [2023-08-07 Mon 13:39]

TODO Recipes   emacs food

This is probably dated and unmaintained.

  (use-package org-chef
  :ensure t)

  (add-to-list 'org-capture-templates '("c"
                                        "Cookbook"
                                        entry
                                        (file "cookbook.org")
                                        "%(org-chef-get-recipe-from-url)"
                                        :empty-lines 1
                                        )
               )

  (add-to-list 'org-capture-templates '("m"
                                        "Manual Cookbook"
                                        entry
                                        (file "cookbook.org")
                                        "* %^{Recipe title: }\n  :PROPERTIES:\n  :source-url:\n  :servings:\n  :prep-time:\n  :cook-time:\n  :ready-in:\n  :END:\n** Ingredients\n   %?\n** Directions\n\n"
                                        )
               )

TODO Philip Woods / org-if · GitLab   emacs writing

TODO Currency converter in Emacs   emacs money

TODO OpenStreetMap viewer for Emacs   emacs maps

TODO OpenSCAD Emacs mode   emacs archive physibles

TODO Org CV

TODO ellama

  (use-package ellama
  :init
  (setq ellama-language "English")
  (require 'llm-ollama)
  (setq ellama-buffer-mode org)
  (setopt ellama-provider
                  (make-llm-ollama
                   :chat-model "mistral:7b-instruct-v0.2-q6_K"
                   :embedding-model "mistral:7b-instruct-v0.2-q6_K")
                  )
  )

TODO LLM

  (use-package llm-refactoring
    :init
    (require 'llm-openai)
    (setq llm-refactoring-provider (make-llm-openai :key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")))
          )

TODO Llama-cpp in Emacs

  (use-package llama-cpp
  :ensure t)

TODO org-ai: Emacs as your personal AI assistant. Use LLMs such as ChatGPT or LLaMA for text generation or DALL-E and Stable Diffusion for image generation. Also supports speech input / output.

  (use-package org-ai
  :ensure t
  :commands (org-ai-mode
             org-ai-global-mode)
  :init
  (add-hook 'org-mode-hook #'org-ai-mode) ; enable org-ai in org-mode
  (org-ai-global-mode) ; installs global keybindings on C-c M-a
  :config
  (setq org-ai-default-chat-model "gpt-4") ; if you are on the gpt-4 beta:
  (org-ai-install-yasnippets)) ; if you are using yasnippet and want `ai` snippets

TODO openai

  (use-package openai
    :config (setq openai-key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
                  openai-user (auth-source-pass-get "login" "www/openai.com/amr@gharbeia.net")
                  )
    )
  (use-package chatgpt
    :config (setq chatgpt-model "gpt-4"
                  chatgpt-max-tokens "2000"
                  chatgpt-temperature "1.0"
                  chatgpt-input-method 'window
                  chatgpt-spinner-type 'moon
                  chatgpt-display tokens-info t
                  chatgp-animate-text -t
                  chatp-gpt-animate-fps 5
                  )
    )
  (use-package dall-e
    :config (setq dall-e-n 5
                  dall-e-size "256x256"
                  dall-e-spinner-type 'moon
                  dall-e-cache-dir "~/Downloads"
                  dall-e-display-width 200
                  )
    )
  (use-package codegpt
    :config (setq codegpt-tunnel 'completion
                  codegpt-model "gpt-4"
                  codegpt-max-tokens
                  codegpt-temperature
                  )
    )

TODO org-ai

  (use-package org-ai
    :commands (org-ai-mode
               org-ai-global-mode)
    :init
    (add-hook 'org-mode-hook #'org-ai-mode) ; enable org-ai in org-mode
    (org-ai-global-mode) ; installs global keybindings on C-c M-a
    :config
    (org-ai-install-yasnippets)
    (setq org-ai-default-chat-model "gpt-4"
          org-ai-openai-api-token (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
          )
    )

Only needed if you want speach input and output

  (use-package greader
    (require 'whisper)
    (setq org-ai-talk-say-words-per-minute 210
          org-ai-talk-say-voice "Karen"
          )
    )
  (use-package whisper
    :load-path (concat (getenv "HOME") "/library/src/git/github.com/natrys/whisper.el")
    :bind ("C-H-r" . whisper-run)
    :config
    (setq whisper-install-directory (concat (getenv "HOME") "/.emacs.d/whisper")
          whisper-model "large"
          whisper-language "en"
          whisper-translate nil
          )
    )

TODO gptai

  (use-package gptai
    set configurations
    (setq gptai-model "gpt-4"
          gptai-username (auth-source-pass-get "login" "www/openai.com/amr@gharbeia.net")
          gptai-api-key (auth-source-pass-get "api-key" "www/openai.com/amr@gharbeia.net")
          gptai-max-tokens 2000
          )
    ;; set keybindings optionally
    (global-set-key (kbd "C-c o") 'gptai-send-query)
    )

DONE Install anki-editor   emacs learning

  • State "DONE" from "TODO" [2023-08-21 Mon 13:36]
  (use-package anki-editor
    :ensure t
    )

CNCL Install anki-mode   emacs learning

  • State "CNCL" from "TODO" [2023-08-21 Mon 13:31]
    This uses markdown, while anki-editor uses org-mode

A major mode for creating Anki cards.

TODO Macros

  (use-package elmacro
    )

TODO Restart Emacs from Emacs

  (use-package restart-emacs
    :bind* (("C-x M-c" . restart-emacs)
            )
    )

TODO Save & shutdown when we get an "end of session" signal on dbus

  (require 'dbus)
  (defun my/register-signals (client-path)
    "Register for the 'QueryEndSession' and 'EndSession' signals from Gnome SessionManager.

  When we receive 'QueryEndSession', we just respond with 'EndSessionResponse(true, \"\")'.  When we receive 'EndSession', we append this EndSessionResponse to kill-emacs-hook, and then call kill-emacs.  This way, we can shut down the Emacs daemon cleanly before we send our 'ok' to the SessionManager."
    (setq my/gnome-client-path client-path)
    (let ( (end-session-response (lambda (&optional arg)
                                   (dbus-call-method-asynchronously
                                    :session "org.gnome.SessionManager" my/gnome-client-path
                                    "org.gnome.SessionManager.ClientPrivate" "EndSessionResponse" nil
                                    t "")
                                   )
                                 )
           )
      (dbus-register-signal
       :session "org.gnome.SessionManager" my/gnome-client-path
       "org.gnome.SessionManager.ClientPrivate" "QueryEndSession"
       end-session-response )
      (dbus-register-signal

       :session "org.gnome.SessionManager" my/gnome-client-path
       "org.gnome.SessionManager.ClientPrivate" "EndSession"
       `(lambda (arg)
          (add-hook 'kill-emacs-hook ,end-session-response t)
          (kill-emacs)
          )
       )
      )
    )

  ;; DESKTOP_AUTOSTART_ID is set by the Gnome desktop manager when emacs is autostarted.  We can use it to register as a client with gnome SessionManager.
  (dbus-call-method-asynchronously
   :session "org.gnome.SessionManager"
   "/org/gnome/SessionManager" 
   "org.gnome.SessionManager" "RegisterClient" 'my/register-signals
   "Emacs server" (getenv "DESKTOP_AUTOSTART_ID")
   )

TODO Tips for refiling into org roam dailies? : r/OrgRoam

This has the solution to my refile-to-org-roam-dailies blues

TODO Lisp Operating System

Wonderful

TODO EmacsWiki: Gnus Tutorial   emacs

DONE Emacs Turbo-Charges My Writing // Take on Rules   emacs

  • State "DONE" from "TODO" [2024-02-01 Thu 13:50]

TODO GNU ELPA - csv-mode   emacs

TODO auto-dictionary-mode   emacs

TODO CSS for Org-exported HTML   emacs

TODO Deft for Emacs   emacs

TODO Building a Emacs Org-Mode Blog   emacs publishing

TODO dots/config.el at master · jethrokuan/dots · GitHub

Very good Emacs configs by the maker of org-roam

CNCL dotemacs/gemacsclient at master · karlicoss/dotemacs · GitHub   emacs

  • State "CNCL" from [2023-08-11 Fri 13:58]

TODO Microblog Server   radio software emacs

Microblogging on JS8Call

TODO The Emacsmirror   emacs

The Emacsmirror is a growing collection of Emacs Lisp packages. All mirrored packages are available as Git repositories. In most cases this is done by mirroring the upstream Git repository, but if upstream uses something else, then the mirror nevertheless makes the package available as a Git repository.

TODO Dont manage work email with Emacs   emacs email

TODO GitHub - antham/git-backup   emacs archive computers

TODO crontab-mode   emacs

TODO cheatsheet   emacs

TODO More Productive with Emacs: Writing, Researching, Publishing   emacs

Very good introduction, tutorial and configs to get one started with Emacs for prose purposes.

TODO How I Take Notes with Org-roam

By the maker of org-roam himself

TODO EmacsWiki   emacs

DONE GitHub - pprevos/EmacsLife: Managing your life and work with Emacs   emacs

CLOSED: [2023-01-30 Mon 07:25]

Great Emacs and Org-mode setup tutorial and config files

DONE My Emacs Setup | Clinton Liddick   emacs

  • State "DONE" from "TODO" [2023-07-02 Sun 15:10]

Daemon Terminal support Use-package for portability

DONE My Minimal Emacs Setup | Sandeep Nambiar   emacs

CLOSED: [2023-01-23 Mon 13:37]

TODO Org Mode - Organize Your Life In Plain Text!   org_mode organisation emacs

  • State "DONE" from "TODO" [2024-02-02 Fri 16:37]

TODO Emacs X Window Manager   emacs

DONE An Emacs Tutorial: Beginner's Guide to Emacs - Mastering Emacs   emacs

CLOSED: [2023-01-20 Fri 04:31]

DONE Behind the code: project planning - Devalot   emacs

CLOSED: [2023-01-21 Sat 09:54]

TODO Debian-el   emacs

  (use-package debian-el
    :ensure t
    )

DONE Digitizing All Your Paper Stuff   emacs

CLOSED: [2023-01-13 Fri 13:22]

DONE EmacsWiki: Learning Emacs   emacs

CLOSED: [2023-01-21 Sat 09:58]

DONE Getting Started • Zettelkasten Method   emacs

CLOSED: [2023-01-15 Sun 04:52]

DONE How to Design File Management for a Company   emacs

CLOSED: [2023-01-21 Sat 08:37]

DONE How to learn Emacs :: About this guide to Emacs   emacs

CLOSED: [2023-01-20 Fri 04:37]

DONE How to Use Tags   emacs

CLOSED: [2023-01-21 Sat 08:40]

DONE metajack.im - Journaling with Emacs OrgMode   emacs

CLOSED: [2023-01-21 Sat 09:54]

DONE Org for GTD and other Task managment systems   emacs

CLOSED: [2023-01-14 Sat 03:21]

DONE Orgmode for GTD   emacs

CLOSED: [2023-01-14 Sat 03:27]

DONE org-mode snippets | tychoish   emacs

CLOSED: [2023-01-21 Sat 09:54]

DONE Per-contact FROM-email Addresses for Users Of mutt and org-contacts.el   emacs

CLOSED: [2023-01-15 Sun 10:56]

DONE The Tag «decentralization»   emacs

CLOSED: [2023-01-17 Tue 03:49]

DONE UOMF: Linking Headings   emacs

CLOSED: [2023-01-14 Sat 03:39]

DONE UOMF: Managing web bookmarks with Org Mode   emacs

CLOSED: [2023-01-14 Sat 03:16]

DONE UOMF: My Current Mobile Capture Process   emacs

CLOSED: [2023-01-14 Sat 03:33]

DONE UOMF: My Current Org Mode Files and Heading Structure   emacs

CLOSED: [2023-01-15 Sun 10:57]

I like the quantified self things here. Need to learn more.

DONE UOMF: On How to Define Projects in Org Mode   emacs

CLOSED: [2023-01-13 Fri 10:12]

DONE UOMF: Reference Management with Org Mode   emacs

CLOSED: [2023-01-14 Sat 03:00]

This could replace Zotero for academic papers.

TODO UOMF: Using Template Files for Pandoc Exports to Word or LibreOffice

Apparently good scanner drivers for Linux

TODO GitHub - tmalsburg/guess-language.el: Emacs minor mode that detects the language you're typing in. Automatically switches spell checker. Supports multiple languages per document.   emacs languages

:URI: https://github.com/tmalsburg/guess-language.el :TITLE: GitHub - tmalsburg/guess-language.el: Emacs minor mode that detects the language you're typing in. Automatically switches spell checker. Supports multiple languages per document.

TODO Emacs as a translator's tool   emacs translation

CNCL Flycheck Eask

  • State "CNCL" from "TODO" [2024-07-03 Wed 10:23]
    Eask is mainly for development.

DONE Recoll

  • State "DONE" from "TODO" [2023-08-18 Fri 13:05]

TODO Blocked repairing actionable.org from org-gtd-refilegroup-p error · Issue #209 · Trevoke/org-gtd.el · GitHub

Recompile all Emacs packages with

   (byte-recompile-directory package-user-dir nil :force)