• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emacs bindings for libgit2

libgit2 bindings for Emacs

Travis build status Appveyor build status

This is an experimental module for libgit2 bindings to Emacs, intended to boost the performance of magit.

Other work in this direction:

This module is written in C, and aims to be a thin wrapper around libgit2. That means that all functions in the libgit2 reference should translate more-or-less directly to Emacs, in the following sense:

  • Function names are the same, except with underscores replaced by hyphens. The prefix is changed from git- to libgit-.
  • Predicate functions are given a -p suffix, and words like "is" are removed, e.g. git_repository_is_bare becomes libgit-repository-bare-p.
  • Output parameters become return values.
  • Error codes become error signals (type giterr).
  • Return types map to their natural Emacs counterparts, or opaque user pointers when not applicable (e.g. for git-??? structures). Exceptions: git-oid and git-buf types are converted to Emacs strings.
  • Boolean parameters or pointers towards the end of argument lists whose natural default value is false or NULL will be made optional.

Quality-of-life convenience functionality is better implemented in Emacs Lisp than in C.

Building

There is a loader file written in Emacs Lisp that will build the module for you, but the git submodule steps need to be run manually.

git submodule init
git submodule update
mkdir build
cd build
cmake ..
make

If you're on OSX and using Macports, you may need to set CMAKE_PREFIX_PATH to avoid linking against the wrong libiconv. For example,

cmake -DCMAKE_PREFIX_PATH=/opt/local ..

Testing

Ensure that you have Cask installed.

cask install
cd build
make test

To see more output for debugging new tests you can specify more verbose output.

make test ARGS=-V

Using

Ensure that libgit.el is somewhere in your load path. Then

(require 'libgit)

If the dynamic module was not already built, you should be asked to do it manually.

If you use Borg, then use the following .gitmodules entry.

[submodule "libgit"]
    path = lib/libgit
    url = [email protected]:magit/libegit2.git
    build-step = make

Contributing

Adding a function

  1. Find the section that the function belongs to (i.e. git_SECTION_xyz).
  2. Create, if necessary, src/egit-SECTION.h and src/egit-SECTION.c.
  3. In src/egit-SECTION.h, declare the function with EGIT_DEFUN. See existing headers for examples.
  4. In src/egit-SECTION.c, document the function with EGIT_DOC. See existing files for examples.
  5. In src/egit-SECTION.c, implement the function. See existing files for examples.
    1. Always check argument types in the beginning. Use EGIT_ASSERT for this. These macros may return.
    2. Then, extract the data needed from emacs_value. This may involve allocating buffers for strings.
    3. Call the libgit2 backend function.
    4. Free any memory you might need to free that was allocated in step 2.
    5. Check the error code if applicable with EGIT_CHECK_ERROR. This macro may return.
    6. Create return value and return.
  6. In src/egit.c, create a DEFUN call in egit_init. You may need to include a new header.

Adding a type

Sometimes a struct of type git_??? may need to be returned to Emacs as an opaque user pointer. To do this, we use a wrapper structure with a type information tag.

Some objects expose data that belong to other objects. In many cases, libgit2 keeps reference-counts on these internally, but that's not always true. In particular, git_repository structs are not reference-counted (although the data-owning sub-objects like git_odb are). Neither are lightweight public structs like git_index_entry, git_diff_XYZ, etc. In these cases, the parent types must be reference-counted on our side, and the child types must keep a reference to the parent alive.

  1. In src/egit.h, add an entry to the egit_type enum for the new type.
  2. In src/egit.h add a new EGIT_ASSERT macro for the new type.
  3. In src/egit.c add a new entry to the egit_finalize switch statement to free the structure. If the type is reference-counted, also add an entry to the decref switch statement.
  4. In src/egit.c add a new entry to the egit_typeof switch statement.
  5. In src/egit.c add a new type predicate by calling the TYPECHECKER macro.
  6. In src/egit.c create a DEFUN call in egit_init for the type predicate.
  7. In src/interface.h add two new symbols, libgit-TYPE-p and TYPE.
  8. In src/interface.c initialize those symbols in the em_init function.

Returning opaque pointers to Emacs

To create a new user pointer, call egit_wrap with arguments:

  1. The emacs_env*
  2. The type tag
  3. The pointer to wrap
  4. The parent wrapper, if applicable (note: this is an egit_object*, not a git_XYZ*)

To return an existing user pointer (usually by grabbing the parent field of an egit_object*), just increase the reference count and use the EM_USER_PTR macro. Do not do this for types that are not reference-counted!

Function list

This is a complete list of functions in libgit2. It therefore serves more or less as an upper bound on the amount of work needed.

Legend:

  • โœ”๏ธ Function is implemented
  • โŒ Function should probably not be implemented (reason given)
  • โ” Undecided

Some functions are defined in libgit2 headers in the sys subdirectory, and are not reachable from a standard include (i.e. #include "git2.h"). For now, we will skip those on the assumption that they are more specialized.

Estimates (updated periodically):

  • Implemented: 325 (41.8%)
  • Should not implement: 169 (21.7%)
  • To do: 284 (36.5%)
  • Total: 778

extra

These are functions that do not have a libgit2 equivalent.

Type checkers and predicates:

  • โœ”๏ธ git-typeof
  • โœ”๏ธ git-blame-p
  • โœ”๏ธ git-commit-p
  • โœ”๏ธ git-cred-p
  • โœ”๏ธ git-diff-p
  • โœ”๏ธ git-diff-delta-p
  • โœ”๏ธ git-diff-binary-p
  • โœ”๏ธ git-diff-hunk-p
  • โœ”๏ธ git-diff-line-p
  • โœ”๏ธ git-index-p
  • โœ”๏ธ git-index-entry-p
  • โœ”๏ธ git-object-p
  • โœ”๏ธ git-reference-p
  • โœ”๏ธ git-repository-p
  • โœ”๏ธ git-signature-p
  • โœ”๏ธ git-reference-direct-p
  • โœ”๏ธ git-reference-symbolic-p
  • โœ”๏ธ git-transaction-p
  • โœ”๏ธ git-tree-p

Getters for public structs:

  • โœ”๏ธ git-blame-hunk-commit-id
  • โœ”๏ธ git-blame-hunk-lines
  • โœ”๏ธ git-blame-hunk-orig-path
  • โœ”๏ธ git-blame-hunk-signature
  • โœ”๏ธ git-blame-hunk-start-line-number
  • โœ”๏ธ git-diff-delta-file-id
  • โœ”๏ธ git-diff-delta-file-path
  • โœ”๏ธ git-diff-delta-nfiles
  • โœ”๏ธ git-diff-delta-similarity
  • โœ”๏ธ git-diff-delta-status
  • โœ”๏ธ git-diff-delta-file-exists-p
  • โœ”๏ธ git-diff-hunk-header
  • โœ”๏ธ git-diff-hunk-lines
  • โœ”๏ธ git-diff-hunk-start
  • โœ”๏ธ git-diff-line-origin
  • โœ”๏ธ git-diff-line-lineno
  • โœ”๏ธ git-diff-line-content
  • โœ”๏ธ git-index-entry-path
  • โœ”๏ธ git-signature-name
  • โœ”๏ธ git-signature-email
  • โœ”๏ธ git-signature-time

Iterators converted to map functions:

  • โœ”๏ธ git-branch-foreach
  • โœ”๏ธ git-index-conflict-foreach

annotated

  • โŒ git-annotated-commit-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-annotated-commit-from-fetchhead
  • โœ”๏ธ git-annotated-commit-from-ref
  • โœ”๏ธ git-annotated-commit-from-revspec
  • โœ”๏ธ git-annotated-commit-id
  • โœ”๏ธ git-annotated-commit-lookup

attr

  • โ” git-attr-add-macro
  • โ” git-attr-cache-flush
  • โ” git-attr-foreach
  • โ” git-attr-get
  • โ” git-attr-get-many
  • โ” git-attr-value

blame

  • โ” git-blame-buffer
  • โœ”๏ธ git-blame-file
  • โŒ git-blame-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-blame-get-hunk-byindex
  • โœ”๏ธ git-blame-get-hunk-byline
  • โœ”๏ธ git-blame-get-hunk-count
  • โŒ git-blame-init-options (options are represented by an alist)

blob

  • โœ”๏ธ git-blob-create-frombuffer
  • โœ”๏ธ git-blob-create-fromdisk
  • โ” git-blob-create-fromstream
  • โ” git-blob-create-fromstream-commit
  • โœ”๏ธ git-blob-create-fromworkdir
  • โ” git-blob-dup
  • โœ”๏ธ git-blob-filtered-content
  • โŒ git-blob-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-blob-id
  • โœ”๏ธ git-blob-is-binary (as libgit-blob-binary-p)
  • โœ”๏ธ git-blob-lookup
  • โœ”๏ธ git-blob-lookup-prefix
  • โœ”๏ธ git-blob-owner
  • โœ”๏ธ git-blob-rawcontent
  • โœ”๏ธ git-blob-rawsize

branch

  • โœ”๏ธ git-branch-create
  • โœ”๏ธ git-branch-create-from-annotated
  • โœ”๏ธ git-branch-delete
  • โœ”๏ธ git-branch-is-checked-out
  • โœ”๏ธ git-branch-is-head
  • โŒ git-branch-iterator-free
  • โŒ git-branch-iterator-new
  • โœ”๏ธ git-branch-lookup
  • โœ”๏ธ git-branch-move
  • โœ”๏ธ git-branch-name
  • โŒ git-branch-next
  • โœ”๏ธ git-branch-remote-name
  • โœ”๏ธ git-branch-set-upstream
  • โœ”๏ธ git-branch-upstream
  • โœ”๏ธ git-branch-upstream-name
  • โœ”๏ธ git-branch-upstream-remote

buf

Probably none of these functions are necessary, since we can expose buffers to Emacs as strings.

  • โŒ git-buf-contains-nul
  • โŒ git-buf-free (memory management shouldn't be exposed to Emacs)
  • โŒ git-buf-grow
  • โŒ git-buf-is-binary
  • โŒ git-buf-set

checkout

  • โœ”๏ธ git-checkout-head
  • โœ”๏ธ git-checkout-index
  • โŒ git-checkout-init-options
  • โœ”๏ธ git-checkout-tree

cherrypick

  • โœ”๏ธ git-cherrypick
  • โœ”๏ธ git-cherrypick-commit
  • โŒ git-cherrypick-init-options

clone

  • โœ”๏ธ git-clone
  • โ” git-clone-init-options

commit

  • โ” git-commit-amend
  • โœ”๏ธ git-commit-author
  • โœ”๏ธ git-commit-body
  • โœ”๏ธ git-commit-committer
  • โœ”๏ธ git-commit-create
  • โ” git-commit-create-buffer
  • โŒ git-commit-create-from-callback (in sys)
  • โŒ git-commit-create-from-ids (in sys)
  • โŒ git-commit-create-v (git-commit-create does the same)
  • โ” git-commit-create-with-signature
  • โ” git-commit-dup
  • โ” git-commit-extract-signature
  • โŒ git-commit-free (memory management shouldn't be exposed to Emacs)
  • โ” git-commit-header-field
  • โœ”๏ธ git-commit-id
  • โœ”๏ธ git-commit-lookup
  • โœ”๏ธ git-commit-lookup-prefix
  • โœ”๏ธ git-commit-message
  • โ” git-commit-message-encoding
  • โ” git-commit-message-raw
  • โœ”๏ธ git-commit-nth-gen-ancestor
  • โœ”๏ธ git-commit-owner
  • โœ”๏ธ git-commit-parent
  • โœ”๏ธ git-commit-parent-id
  • โœ”๏ธ git-commit-parentcount
  • โ” git-commit-raw-header
  • โœ”๏ธ git-commit-summary
  • โœ”๏ธ git-commit-time
  • โŒ git-commit-time-offset (included in git-commit-time)
  • โœ”๏ธ git-commit-tree
  • โœ”๏ธ git-commit-tree-id

config

  • โŒ git-config-add-backend (in sys)
  • โœ”๏ธ git-config-add-file-ondisk
  • โ” git-config-backend-foreach-match
  • โœ”๏ธ git-config-delete-entry
  • โœ”๏ธ git-config-delete-multivar
  • โŒ git-config-entry-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-config-find-global
  • โœ”๏ธ git-config-find-programdata
  • โœ”๏ธ git-config-find-system
  • โœ”๏ธ git-config-find-xdg
  • โ” git-config-foreach
  • โ” git-config-foreach-match
  • โŒ git-config-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-config-get-bool
  • โ” git-config-get-entry
  • โŒ git-config-get-int32 (don't need different integer types)
  • โœ”๏ธ git-config-get-int64 (as -int)
  • โ” git-config-get-mapped
  • โ” git-config-get-multivar-foreach
  • โœ”๏ธ git-config-get-path
  • โœ”๏ธ git-config-get-string
  • โŒ git-config-get-string-buf (probably fine with just -get-string)
  • โŒ git-config-init-backend (in sys)
  • โŒ git-config-iterator-free (memory management shouldn't be exposed to Emacs)
  • โ” git-config-iterator-glob-new
  • โ” git-config-iterator-new
  • โœ”๏ธ git-config-lock
  • โ” git-config-lookup-map-value
  • โ” git-config-multivar-iterator-new
  • โœ”๏ธ git-config-new
  • โ” git-config-next
  • โœ”๏ธ git-config-open-default
  • โœ”๏ธ git-config-open-global
  • โœ”๏ธ git-config-open-level
  • โœ”๏ธ git-config-open-ondisk
  • โ” git-config-parse-bool
  • โ” git-config-parse-int32
  • โ” git-config-parse-int64
  • โ” git-config-parse-path
  • โœ”๏ธ git-config-set-bool
  • โŒ git-config-set-int32 (don't need different integer types)
  • โœ”๏ธ git-config-set-int64 (as -int)
  • โ” git-config-set-multivar
  • โœ”๏ธ git-config-set-string
  • โœ”๏ธ git-config-snapshot

cred

  • โœ”๏ธ git-cred-default-new
  • โŒ git-cred-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-cred-has-username (git-cred-username-p)
  • โ” git-cred-ssh-custom-new
  • โ” git-cred-ssh-interactive-new
  • โœ”๏ธ git-cred-ssh-key-from-agent
  • โœ”๏ธ git-cred-ssh-key-memory-new
  • โœ”๏ธ git-cred-ssh-key-new
  • โœ”๏ธ git-cred-username-new
  • โŒ git-cred-userpass (stock callback)
  • โœ”๏ธ git-cred-userpass-plaintext-new

describe

  • โœ”๏ธ git-describe-commit
  • โŒ git-describe-format (we return strings immediately)
  • โŒ git-describe-result-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-describe-workdir

diff

  • โ” git-diff-blob-to-buffer
  • โ” git-diff-blobs
  • โ” git-diff-buffers
  • โ” git-diff-commit-as-email
  • โŒ git-diff-find-init-options
  • โœ”๏ธ git-diff-find-similar
  • โœ”๏ธ git-diff-foreach
  • โ” git-diff-format-email
  • โ” git-diff-format-email-init-options
  • โŒ git-diff-free (memory management shouldn't be exposed to Emacs)
  • โ” git-diff-from-buffer
  • โœ”๏ธ git-diff-get-delta
  • โŒ git-diff-get-perfdata (in sys)
  • โ” git-diff-get-stats
  • โœ”๏ธ git-diff-index-to-index
  • โœ”๏ธ git-diff-index-to-workdir
  • โ” git-diff-init-options
  • โ” git-diff-is-sorted-icase
  • โ” git-diff-merge
  • โœ”๏ธ git-diff-num-deltas
  • โœ”๏ธ git-diff-num-deltas-of-type (use git-diff-num-deltas)
  • โ” git-diff-patchid
  • โ” git-diff-patchid-init-options
  • โœ”๏ธ git-diff-print
  • โŒ git-diff-print-callback--to-buf (in sys)
  • โ” git-diff-print-callback--to-file-handle
  • โ” git-diff-stats-deletions
  • โ” git-diff-stats-files-changed
  • โŒ git-diff-stats-free (memory management shouldn't be exposed to Emacs)
  • โ” git-diff-stats-insertions
  • โ” git-diff-stats-to-buf
  • โ” git-diff-status-char
  • โ” git-diff-to-buf
  • โœ”๏ธ git-diff-tree-to-index
  • โœ”๏ธ git-diff-tree-to-tree
  • โœ”๏ธ git-diff-tree-to-workdir
  • โœ”๏ธ git-diff-tree-to-workdir-with-index

fetch

  • โŒ git-fetch-init-options

filter

  • โŒ git-filter-init (in sys)
  • โ” git-filter-list-apply-to-blob
  • โ” git-filter-list-apply-to-data
  • โ” git-filter-list-apply-to-file
  • โ” git-filter-list-contains
  • โŒ git-filter-list-free (memory management shouldn't be exposed to Emacs)
  • โŒ git-filter-list-length (in sys)
  • โ” git-filter-list-load
  • โŒ git-filter-list-new (in sys)
  • โŒ git-filter-list-push (in sys)
  • โ” git-filter-list-stream-blob
  • โ” git-filter-list-stream-data
  • โ” git-filter-list-stream-file
  • โŒ git-filter-lookup (in sys)
  • โŒ git-filter-register (in sys)
  • โŒ git-filter-source-filemode (in sys)
  • โŒ git-filter-source-flags (in sys)
  • โŒ git-filter-source-id (in sys)
  • โŒ git-filter-source-mode (in sys)
  • โŒ git-filter-source-path (in sys)
  • โŒ git-filter-source-repo (in sys)
  • โŒ git-filter-unregister (in sys)

giterr

Probably none of these functions will be necessary, since we expose errors to Emacs as signals.

  • โŒ giterr-clear
  • โŒ giterr-last
  • โŒ giterr-set-oom
  • โŒ giterr-set-str

graph

  • โœ”๏ธ git-graph-ahead-behind
  • โœ”๏ธ git-graph-descendant-of

hashsig

  • โŒ git-hashsig-compare (in sys)
  • โŒ git-hashsig-create (in sys)
  • โŒ git-hashsig-create-fromfile (in sys)
  • โŒ git-hashsig-free (memory management shouldn't be exposed to Emacs)

ignore

  • โœ”๏ธ git-ignore-add-rule
  • โœ”๏ธ git-ignore-clear-internal-rules
  • โœ”๏ธ git-ignore-path-is-ignored

index

  • โ” git-index-add
  • โœ”๏ธ git-index-add-all
  • โœ”๏ธ git-index-add-bypath
  • โ” git-index-add-frombuffer
  • โœ”๏ธ git-index-caps
  • โœ”๏ธ git-index-checksum
  • โœ”๏ธ git-index-clear
  • โ” git-index-conflict-add
  • โ” git-index-conflict-cleanup
  • โœ”๏ธ git-index-conflict-get
  • โœ”๏ธ git-index-conflict-iterator-free (use git-index-conflict-foreach)
  • โœ”๏ธ git-index-conflict-iterator-new (use git-index-conflict-foreach)
  • โœ”๏ธ git-index-conflict-next (use git-index-conflict-foreach)
  • โ” git-index-conflict-remove
  • โœ”๏ธ git-index-entry-is-conflict (use git-index-entry-stage)
  • โœ”๏ธ git-index-entry-stage
  • โœ”๏ธ git-index-entrycount
  • โ” git-index-find
  • โ” git-index-find-prefix
  • โŒ git-index-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-index-get-byindex
  • โœ”๏ธ git-index-get-bypath
  • โœ”๏ธ git-index-has-conflicts (as git-index-conflicts-p)
  • โ” git-index-new
  • โ” git-index-open
  • โœ”๏ธ git-index-owner
  • โœ”๏ธ git-index-path
  • โœ”๏ธ git-index-read
  • โ” git-index-read-tree
  • โ” git-index-remove
  • โ” git-index-remove-all
  • โ” git-index-remove-bypath
  • โ” git-index-remove-directory
  • โ” git-index-set-caps
  • โ” git-index-set-version
  • โ” git-index-update-all
  • โœ”๏ธ git-index-version
  • โœ”๏ธ git-index-write
  • โœ”๏ธ git-index-write-tree
  • โœ”๏ธ git-index-write-tree-to (use git-index-write-tree)

indexer

  • โ” git-indexer-append
  • โ” git-indexer-commit
  • โŒ git-indexer-free (memory management shouldn't be exposed to Emacs)
  • โ” git-indexer-hash
  • โ” git-indexer-new

libgit2

  • โœ”๏ธ git-libgit2-features (as libgit-feature-p)
  • โŒ git-libgit2-init (internal)
  • โ” git-libgit2-opts
  • โŒ git-libgit2-shutdown (internal)
  • โœ”๏ธ git-libgit2-version (as libgit-version)

mempack

  • โŒ git-mempack-dump (in sys)
  • โŒ git-mempack-new (in sys)
  • โŒ git-mempack-reset (in sys)

merge

  • โœ”๏ธ git-merge
  • โœ”๏ธ git-merge-analysis
  • โœ”๏ธ git-merge-base
  • โœ”๏ธ git-merge-base-many (use git-merge-base)
  • โœ”๏ธ git-merge-base-octopus
  • โœ”๏ธ git-merge-bases
  • โœ”๏ธ git-merge-bases-many (use git-merge-bases)
  • โ” git-merge-commits
  • โ” git-merge-file
  • โ” git-merge-file-from-index
  • โ” git-merge-file-init-input
  • โ” git-merge-file-init-options
  • โ” git-merge-file-result-free
  • โŒ git-merge-init-options
  • โ” git-merge-trees

message

  • โœ”๏ธ git-message-prettify
  • โŒ git-message-trailer-array-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-message-trailers

note

  • โ” git-note-author
  • โ” git-note-commit-create
  • โ” git-note-commit-iterator-new
  • โ” git-note-commit-read
  • โ” git-note-commit-remove
  • โ” git-note-committer
  • โ” git-note-create
  • โ” git-note-foreach
  • โŒ git-note-free (memory management shouldn't be exposed to Emacs)
  • โ” git-note-id
  • โ” git-note-iterator-free
  • โ” git-note-iterator-new
  • โ” git-note-message
  • โ” git-note-next
  • โ” git-note-read
  • โ” git-note-remove

object

  • โŒ git-object--size (memory management shouldn't be exposed to Emacs)
  • โ” git-object-dup
  • โŒ git-object-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-object-id
  • โ” git-object-lookup
  • โœ”๏ธ git-object-lookup-bypath
  • โœ”๏ธ git-object-lookup-prefix
  • โœ”๏ธ git-object-owner
  • โ” git-object-peel
  • โœ”๏ธ git-object-short-id
  • โŒ git-object-string2type (see below)
  • โŒ git-object-type (can be covered by a more general git-typeof for all opaque user pointers)
  • โŒ git-object-type2string (see above)
  • โ” git-object-typeisloose

odb

  • โ” git-odb-add-alternate
  • โ” git-odb-add-backend
  • โ” git-odb-add-disk-alternate
  • โ” git-odb-backend-loose
  • โ” git-odb-backend-one-pack
  • โ” git-odb-backend-pack
  • โ” git-odb-exists
  • โ” git-odb-exists-prefix
  • โ” git-odb-expand-ids
  • โ” git-odb-foreach
  • โŒ git-odb-free (memory management shouldn't be exposed to Emacs)
  • โ” git-odb-get-backend
  • โ” git-odb-hash
  • โ” git-odb-hashfile
  • โŒ git-odb-init-backend (in sys)
  • โ” git-odb-new
  • โ” git-odb-num-backends
  • โ” git-odb-object-data
  • โ” git-odb-object-dup
  • โŒ git-odb-object-free (memory management shouldn't be exposed to Emacs)
  • โ” git-odb-object-id
  • โ” git-odb-object-size
  • โ” git-odb-object-type
  • โ” git-odb-open
  • โ” git-odb-open-rstream
  • โ” git-odb-open-wstream
  • โ” git-odb-read
  • โ” git-odb-read-header
  • โ” git-odb-read-prefix
  • โ” git-odb-refresh
  • โ” git-odb-stream-finalize-write
  • โŒ git-odb-stream-free (memory management shouldn't be exposed to Emacs)
  • โ” git-odb-stream-read
  • โ” git-odb-stream-write
  • โ” git-odb-write
  • โ” git-odb-write-pack

oid

Probably none of these functions will be necessary, since we can expose OIDs to Emacs as strings.

  • โŒ git-oid-cmp
  • โŒ git-oid-cpy
  • โŒ git-oid-equal
  • โŒ git-oid-fmt
  • โŒ git-oid-fromraw
  • โŒ git-oid-fromstr
  • โŒ git-oid-fromstrn
  • โŒ git-oid-fromstrp
  • โŒ git-oid-iszero
  • โŒ git-oid-ncmp
  • โŒ git-oid-nfmt
  • โŒ git-oid-pathfmt
  • โŒ git-oid-shorten-add
  • โŒ git-oid-shorten-free
  • โŒ git-oid-shorten-new
  • โŒ git-oid-strcmp
  • โŒ git-oid-streq
  • โŒ git-oid-tostr
  • โŒ git-oid-tostr-s

oidarray

  • โŒ git-oidarray-free (memory management shouldn't be exposed to Emacs)

openssl

  • โŒ git-openssl-set-locking (in sys)

packbuilder

  • โ” git-packbuilder-foreach
  • โŒ git-packbuilder-free (memory management shouldn't be exposed to Emacs)
  • โ” git-packbuilder-hash
  • โ” git-packbuilder-insert
  • โ” git-packbuilder-insert-commit
  • โ” git-packbuilder-insert-recur
  • โ” git-packbuilder-insert-tree
  • โ” git-packbuilder-insert-walk
  • โ” git-packbuilder-new
  • โ” git-packbuilder-object-count
  • โ” git-packbuilder-set-callbacks
  • โ” git-packbuilder-set-threads
  • โ” git-packbuilder-write
  • โ” git-packbuilder-written

patch

  • โŒ git-patch-free (memory management shouldn't be exposed to Emacs)
  • โ” git-patch-from-blob-and-buffer
  • โ” git-patch-from-blobs
  • โ” git-patch-from-buffers
  • โ” git-patch-from-diff
  • โ” git-patch-get-delta
  • โ” git-patch-get-hunk
  • โ” git-patch-get-line-in-hunk
  • โ” git-patch-line-stats
  • โ” git-patch-num-hunks
  • โ” git-patch-num-lines-in-hunk
  • โ” git-patch-print
  • โ” git-patch-size
  • โ” git-patch-to-buf

pathspec

  • โŒ git-pathspec-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-pathspec-match-diff
  • โœ”๏ธ git-pathspec-match-index
  • โœ”๏ธ git-pathspec-match-list-diff-entry
  • โœ”๏ธ git-pathspec-match-list-entry
  • โœ”๏ธ git-pathspec-match-list-entrycount
  • โœ”๏ธ git-pathspec-match-list-failed-entry
  • โœ”๏ธ git-pathspec-match-list-failed-entrycount
  • โŒ git-pathspec-match-list-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-pathspec-match-tree
  • โœ”๏ธ git-pathspec-match-workdir
  • โœ”๏ธ git-pathspec-matches-path
  • โœ”๏ธ git-pathspec-new

proxy

  • โŒ git-proxy-init-options

push

  • โŒ git-push-init-options

rebase

  • โ” git-rebase-abort
  • โ” git-rebase-commit
  • โ” git-rebase-finish
  • โŒ git-rebase-free (memory management shouldn't be exposed to Emacs)
  • โ” git-rebase-init
  • โ” git-rebase-init-options
  • โ” git-rebase-inmemory-index
  • โ” git-rebase-next
  • โ” git-rebase-open
  • โ” git-rebase-operation-byindex
  • โ” git-rebase-operation-current
  • โ” git-rebase-operation-entrycount

refdb

  • โŒ git-refdb-backend-fs (in sys)
  • โ” git-refdb-compress
  • โŒ git-refdb-free (memory management shouldn't be exposed to Emacs)
  • โŒ git-refdb-init-backend (in sys)
  • โ” git-refdb-new
  • โ” git-refdb-open
  • โŒ git-refdb-set-backend (in sys)

reference

  • โŒ git-reference--alloc (in sys)
  • โŒ git-reference--alloc-symbolic (in sys)
  • โ” git-reference-cmp
  • โœ”๏ธ git-reference-create
  • โœ”๏ธ git-reference-create-matching
  • โœ”๏ธ git-reference-delete
  • โœ”๏ธ git-reference-dup
  • โœ”๏ธ git-reference-dwim
  • โœ”๏ธ git-reference-ensure-log
  • โœ”๏ธ git-reference-foreach
  • โœ”๏ธ git-reference-foreach-glob
  • โœ”๏ธ git-reference-foreach-name
  • โŒ git-reference-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-reference-has-log
  • โœ”๏ธ git-reference-is-branch
  • โœ”๏ธ git-reference-is-note
  • โœ”๏ธ git-reference-is-remote
  • โœ”๏ธ git-reference-is-tag
  • โœ”๏ธ git-reference-is-valid-name
  • โŒ git-reference-iterator-free (use the foreach functions)
  • โŒ git-reference-iterator-glob-new (use the foreach functions)
  • โŒ git-reference-iterator-new (use the foreach functions)
  • โœ”๏ธ git-reference-list
  • โœ”๏ธ git-reference-lookup
  • โœ”๏ธ git-reference-name
  • โœ”๏ธ git-reference-name-to-id
  • โŒ git-reference-next (use the foreach functions)
  • โŒ git-reference-next-name (use the foreach functions)
  • โ” git-reference-normalize-name
  • โœ”๏ธ git-reference-owner
  • โœ”๏ธ git-reference-peel
  • โœ”๏ธ git-reference-remove
  • โ” git-reference-rename
  • โœ”๏ธ git-reference-resolve
  • โ” git-reference-set-target
  • โœ”๏ธ git-reference-shorthand
  • โ” git-reference-symbolic-create
  • โ” git-reference-symbolic-create-matching
  • โ” git-reference-symbolic-set-target
  • โœ”๏ธ git-reference-symbolic-target
  • โœ”๏ธ git-reference-target
  • โœ”๏ธ git-reference-target-peel
  • โœ”๏ธ git-reference-type

reflog

  • โœ”๏ธ git-reflog-append
  • โœ”๏ธ git-reflog-delete
  • โœ”๏ธ git-reflog-drop
  • โœ”๏ธ git-reflog-entry-byindex
  • โœ”๏ธ git-reflog-entry-committer
  • โœ”๏ธ git-reflog-entry-id-new (use git-reflog-entry-id)
  • โœ”๏ธ git-reflog-entry-id-old (use git-reflog-entry-id)
  • โœ”๏ธ git-reflog-entry-message
  • โœ”๏ธ git-reflog-entrycount
  • โŒ git-reflog-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-reflog-read
  • โœ”๏ธ git-reflog-rename
  • โœ”๏ธ git-reflog-write

refspec

  • โœ”๏ธ git-refspec-direction
  • โœ”๏ธ git-refspec-dst
  • โœ”๏ธ git-refspec-dst-matches
  • โœ”๏ธ git-refspec-force
  • โ” git-refspec-rtransform
  • โœ”๏ธ git-refspec-src
  • โœ”๏ธ git-refspec-src-matches
  • โœ”๏ธ git-refspec-string
  • โ” git-refspec-transform

remote

  • โœ”๏ธ git-remote-add-fetch (use git-remote-add-refspec)
  • โœ”๏ธ git-remote-add-push (use git-remote-add-refspec)
  • โœ”๏ธ git-remote-autotag
  • โ” git-remote-connect
  • โ” git-remote-connected
  • โœ”๏ธ git-remote-create
  • โ” git-remote-create-anonymous
  • โ” git-remote-create-detached
  • โ” git-remote-create-with-fetchspec
  • โ” git-remote-default-branch
  • โ” git-remote-delete
  • โ” git-remote-disconnect
  • โ” git-remote-download
  • โ” git-remote-dup
  • โœ”๏ธ git-remote-fetch
  • โŒ git-remote-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-remote-get-fetch-refspecs (use git-remote-get-refspecs)
  • โœ”๏ธ git-remote-get-push-refspecs (use git-remote-get-refspecs)
  • โœ”๏ธ git-remote-get-refspec
  • โŒ git-remote-init-callbacks
  • โœ”๏ธ git-remote-is-valid-name
  • โœ”๏ธ git-remote-list
  • โœ”๏ธ git-remote-lookup
  • โ” git-remote-ls
  • โœ”๏ธ git-remote-name
  • โœ”๏ธ git-remote-owner
  • โ” git-remote-prune
  • โ” git-remote-prune-refs
  • โœ”๏ธ git-remote-push
  • โœ”๏ธ git-remote-pushurl
  • โœ”๏ธ git-remote-refspec-count
  • โ” git-remote-rename
  • โ” git-remote-set-autotag
  • โ” git-remote-set-pushurl
  • โ” git-remote-set-url
  • โ” git-remote-stats
  • โ” git-remote-stop
  • โ” git-remote-update-tips
  • โ” git-remote-upload
  • โœ”๏ธ git-remote-url

repository

  • โŒ git-repository--cleanup (in sys)
  • โœ”๏ธ git-repository-commondir
  • โœ”๏ธ git-repository-config
  • โ” git-repository-config-snapshot
  • โœ”๏ธ git-repository-detach-head
  • โœ”๏ธ git-repository-discover
  • โ” git-repository-fetchhead-foreach
  • โŒ git-repository-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-repository-get-namespace
  • โ” git-repository-hashfile
  • โœ”๏ธ git-repository-head
  • โœ”๏ธ git-repository-head-detached
  • โœ”๏ธ git-repository-head-for-worktree
  • โœ”๏ธ git-repository-head-unborn
  • โœ”๏ธ git-repository-ident
  • โœ”๏ธ git-repository-index
  • โœ”๏ธ git-repository-init
  • โ” git-repository-init-ext
  • โ” git-repository-init-init-options
  • โœ”๏ธ git-repository-is-bare
  • โœ”๏ธ git-repository-is-empty
  • โœ”๏ธ git-repository-is-shallow
  • โœ”๏ธ git-repository-is-worktree
  • โ” git-repository-item-path
  • โ” git-repository-mergehead-foreach
  • โœ”๏ธ git-repository-message
  • โœ”๏ธ git-repository-message-remove
  • โŒ git-repository-new (in sys)
  • โ” git-repository-odb
  • โœ”๏ธ git-repository-open
  • โœ”๏ธ git-repository-open-bare
  • โ” git-repository-open-ext
  • โ” git-repository-open-from-worktree
  • โœ”๏ธ git-repository-path
  • โ” git-repository-refdb
  • โŒ git-repository-reinit-filesystem (in sys)
  • โŒ git-repository-set-bare (in sys)
  • โŒ git-repository-set-config (in sys)
  • โœ”๏ธ git-repository-set-head
  • โœ”๏ธ git-repository-set-head-detached
  • โ” git-repository-set-head-detached-from-annotated
  • โœ”๏ธ git-repository-set-ident
  • โŒ git-repository-set-index (in sys)
  • โœ”๏ธ git-repository-set-namespace
  • โŒ git-repository-set-odb (in sys)
  • โŒ git-repository-set-refdb (in sys)
  • โœ”๏ธ git-repository-set-workdir
  • โœ”๏ธ git-repository-state
  • โœ”๏ธ git-repository-state-cleanup
  • โŒ git-repository-submodule-cache-all (in sys)
  • โŒ git-repository-submodule-cache-clear (in sys)
  • โœ”๏ธ git-repository-workdir
  • โ” git-repository-wrap-odb

reset

  • โœ”๏ธ git-reset
  • โœ”๏ธ git-reset-default
  • โœ”๏ธ git-reset-from-annotated

revert

  • โœ”๏ธ git-revert
  • โœ”๏ธ git-revert-commit
  • โŒ git-revert-init-options

revparse

  • โœ”๏ธ git-revparse
  • โœ”๏ธ git-revparse-ext
  • โœ”๏ธ git-revparse-single

revwalk

  • โŒ git-revwalk-add-hide-cb (use git-revwalk-foreach)
  • โŒ git-revwalk-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-revwalk-hide
  • โœ”๏ธ git-revwalk-hide-glob
  • โœ”๏ธ git-revwalk-hide-head
  • โœ”๏ธ git-revwalk-hide-ref
  • โœ”๏ธ git-revwalk-new
  • โŒ git-revwalk-next (use git-revwalk-foreach)
  • โœ”๏ธ git-revwalk-push
  • โœ”๏ธ git-revwalk-push-glob
  • โœ”๏ธ git-revwalk-push-head
  • โœ”๏ธ git-revwalk-push-range
  • โœ”๏ธ git-revwalk-push-ref
  • โœ”๏ธ git-revwalk-repository
  • โœ”๏ธ git-revwalk-reset
  • โœ”๏ธ git-revwalk-simplify-first-parent
  • โœ”๏ธ git-revwalk-sorting

signature

  • โœ”๏ธ git-signature-default
  • โ” git-signature-dup
  • โŒ git-signature-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-signature-from-buffer (use git-signature-from-string)
  • โœ”๏ธ git-signature-new
  • โœ”๏ธ git-signature-now

smart

  • โ” git-smart-subtransport-git
  • โ” git-smart-subtransport-http
  • โ” git-smart-subtransport-ssh

stash

  • โ” git-stash-apply
  • โ” git-stash-apply-init-options
  • โ” git-stash-drop
  • โ” git-stash-foreach
  • โ” git-stash-pop

status

  • โ” git-status-byindex
  • โœ”๏ธ git-status-file
  • โœ”๏ธ git-status-foreach
  • โœ”๏ธ git-status-foreach-ext
  • โŒ git-status-init-options
  • โ” git-status-list-entrycount
  • โ” git-status-list-free
  • โŒ git-status-list-get-perfdata (in sys)
  • โ” git-status-list-new
  • โœ”๏ธ git-status-should-ignore

strarray

  • โŒ git-strarray-copy
  • โŒ git-strarray-free (memory management shouldn't be exposed to Emacs)

stream

  • โŒ git-stream-register-tls (in sys)

submodule

  • โœ”๏ธ git-submodule-add-finalize
  • โœ”๏ธ git-submodule-add-setup
  • โœ”๏ธ git-submodule-add-to-index
  • โœ”๏ธ git-submodule-branch
  • โœ”๏ธ git-submodule-fetch-recurse-submodules
  • โœ”๏ธ git-submodule-foreach
  • โŒ git-submodule-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-submodule-head-id
  • โœ”๏ธ git-submodule-ignore
  • โœ”๏ธ git-submodule-index-id
  • โœ”๏ธ git-submodule-init
  • โœ”๏ธ git-submodule-location
  • โœ”๏ธ git-submodule-lookup
  • โœ”๏ธ git-submodule-name
  • โœ”๏ธ git-submodule-open
  • โœ”๏ธ git-submodule-owner
  • โœ”๏ธ git-submodule-path
  • โœ”๏ธ git-submodule-reload
  • โœ”๏ธ git-submodule-repo-init
  • โ” git-submodule-resolve-url
  • โœ”๏ธ git-submodule-set-branch
  • โœ”๏ธ git-submodule-set-fetch-recurse-submodules
  • โœ”๏ธ git-submodule-set-ignore
  • โœ”๏ธ git-submodule-set-update
  • โœ”๏ธ git-submodule-set-url
  • โœ”๏ธ git-submodule-status
  • โœ”๏ธ git-submodule-sync
  • โœ”๏ธ git-submodule-update
  • โŒ git-submodule-update-init-options
  • โœ”๏ธ git-submodule-update-strategy
  • โœ”๏ธ git-submodule-url
  • โœ”๏ธ git-submodule-wd-id

tag

  • โ” git-tag-annotation-create
  • โ” git-tag-create
  • โ” git-tag-create-frombuffer
  • โ” git-tag-create-lightweight
  • โ” git-tag-delete
  • โ” git-tag-dup
  • โœ”๏ธ git-tag-foreach
  • โŒ git-tag-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-tag-id
  • โœ”๏ธ git-tag-list
  • โœ”๏ธ git-tag-list-match
  • โœ”๏ธ git-tag-lookup
  • โœ”๏ธ git-tag-lookup-prefix
  • โœ”๏ธ git-tag-message
  • โœ”๏ธ git-tag-name
  • โœ”๏ธ git-tag-owner
  • โœ”๏ธ git-tag-peel
  • โœ”๏ธ git-tag-tagger
  • โœ”๏ธ git-tag-target
  • โœ”๏ธ git-tag-target-id
  • โœ”๏ธ git-tag-target-type

time

  • โŒ git-time-monotonic (in sys)

trace

  • โ” git-trace-set

transaction

  • โœ”๏ธ git_transaction_commit
  • โŒ git_transaction_free (memory management shouldn't be exposed to Emacs)
  • โ” git_transaction_lock_ref
  • โ” git_transaction_new
  • โ” git_transaction_remove
  • โ” git_transaction_set_reflog
  • โ” git_transaction_set_symbolic_target
  • โ” git_transaction_set_target

transport

  • โŒ git-transport-dummy (in sys)
  • โŒ git-transport-init (in sys)
  • โŒ git-transport-local (in sys)
  • โŒ git-transport-new (in sys)
  • โŒ git-transport-register (in sys)
  • โŒ git-transport-smart (in sys)
  • โŒ git-transport-smart-certificate-check (in sys)
  • โŒ git-transport-smart-credentials (in sys)
  • โŒ git-transport-smart-proxy-options (in sys)
  • โŒ git-transport-ssh-with-paths (in sys)
  • โŒ git-transport-unregister (in sys)

tree

  • โ” git-tree-create-updated
  • โ” git-tree-dup
  • โœ”๏ธ git-tree-entry-byid
  • โœ”๏ธ git-tree-entry-byindex
  • โœ”๏ธ git-tree-entry-byname
  • โœ”๏ธ git-tree-entry-bypath
  • โŒ git-tree-entry-cmp (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-dup (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-filemode (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-filemode-raw (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-free (memory management shouldn't be exposed to Emacs)
  • โŒ git-tree-entry-id (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-name (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-to-object (tree entries are exposed to emacs as lists)
  • โŒ git-tree-entry-type (tree entries are exposed to emacs as lists)
  • โœ”๏ธ git-tree-entrycount
  • โŒ git-tree-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-tree-id
  • โœ”๏ธ git-tree-lookup
  • โœ”๏ธ git-tree-lookup-prefix
  • โœ”๏ธ git-tree-owner
  • โœ”๏ธ git-tree-walk

treebuilder

  • โœ”๏ธ git-treebuilder-clear
  • โœ”๏ธ git-treebuilder-entrycount
  • โœ”๏ธ git-treebuilder-filter
  • โŒ git-treebuilder-free (memory management shouldn't be exposed to Emacs)
  • โœ”๏ธ git-treebuilder-get
  • โœ”๏ธ git-treebuilder-insert
  • โœ”๏ธ git-treebuilder-new
  • โœ”๏ธ git-treebuilder-remove
  • โœ”๏ธ git-treebuilder-write
  • โ” git-treebuilder-write-with-buffer

worktree

  • โ” git-worktree-add
  • โ” git-worktree-add-init-options
  • โŒ git-worktree-free (memory management shouldn't be exposed to Emacs)
  • โ” git-worktree-is-locked
  • โ” git-worktree-is-prunable
  • โ” git-worktree-list
  • โ” git-worktree-lock
  • โ” git-worktree-lookup
  • โ” git-worktree-open-from-repository
  • โ” git-worktree-prune
  • โ” git-worktree-prune-init-options
  • โ” git-worktree-unlock
  • โ” git-worktree-validate

More Repositories

1

god-mode

Minor mode for God-like command entering
Emacs Lisp
849
star
2

git-gutter

Emacs port of GitGutter which is Sublime Text Plugin
Emacs Lisp
830
star
3

helm-swoop

Efficiently hopping squeezed lines powered by Emacs helm interface
Emacs Lisp
688
star
4

org-page

[INACTIVE] A static site generator based on Emacs and org mode.
Emacs Lisp
673
star
5

popwin

Popup Window Manager for Emacs
Emacs Lisp
496
star
6

helm-ag

The silver searcher with helm interface
Emacs Lisp
492
star
7

quickrun

Run command quickly. This packages is inspired quickrun.vim
Emacs Lisp
474
star
8

anzu

Emacs Port of anzu.vim
Emacs Lisp
414
star
9

emamux

tmux manipulation from Emacs
Emacs Lisp
265
star
10

ov

Overlay library for Emacs Lisp.
Emacs Lisp
211
star
11

helm-gtags

GNU GLOBAL helm interface
Emacs Lisp
204
star
12

direx

Directory Explorer for GNU Emacs
Emacs Lisp
204
star
13

terraform-mode

Major mode of Terraform configuration file
Emacs Lisp
194
star
14

git-gutter-fringe

Fringe version of git-gutter.el
Emacs Lisp
160
star
15

req-package

dependency management system on top of use-package
Emacs Lisp
153
star
16

git-messenger

Emacs Port of git-messenger.vim
Emacs Lisp
146
star
17

go-eldoc

eldoc for go language
Emacs Lisp
128
star
18

key-chord

Map pairs of simultaneously pressed keys to commands
Emacs Lisp
108
star
19

yascroll

Yet Another Scroll Bar Mode
Emacs Lisp
104
star
20

zoom-window

Zoom and Unzoom window
Emacs Lisp
102
star
21

company-jedi

Company backend for Python jedi
Emacs Lisp
100
star
22

swoop

Peculiar buffer navigation for Emacs
Emacs Lisp
90
star
23

org-redmine

Redmine tools using Emacs OrgMode
Emacs Lisp
83
star
24

dired-k

Highlighting dired buffer like k
Emacs Lisp
82
star
25

magit-gerrit

Magit plugin for Gerrit Code Review
Emacs Lisp
61
star
26

go-add-tags

Add field tags for struct fields
Emacs Lisp
59
star
27

pkg-info

Provide information about Emacs packages
Emacs Lisp
57
star
28

helm-css-scss

This emacs program makes your CSS/SCSS/LESS coding faster and easier than ever.
Emacs Lisp
54
star
29

smeargle

Highlighting Regions by Last Updated Time
Emacs Lisp
49
star
30

evil-anzu

anzu for Evil
Emacs Lisp
49
star
31

mongo

MongoDB driver for Emacs Lisp
Emacs Lisp
47
star
32

manage-minor-mode

Manage your minor-mode on the dedicated interface buffer. Emacs.
Emacs Lisp
47
star
33

gh-md

Render markdown using the github api
Emacs Lisp
46
star
34

farmhouse-themes

Hand-picked light and dark color theme for Emacs 24+
Emacs Lisp
43
star
35

go-direx

Tree style source code viewer for Go language
Emacs Lisp
40
star
36

undohist

Persistent Undo History for GNU Emacs
Emacs Lisp
40
star
37

helm-themes

Emacs theme selection with helm interface
Emacs Lisp
38
star
38

fontawesome

fontawesome utility
Emacs Lisp
33
star
39

go-impl

impl for Emacs
Emacs Lisp
32
star
40

ansible-doc

Ansible documentation for GNU Emacs
Emacs Lisp
32
star
41

sr-speedbar

Same frame speedbar
Emacs Lisp
31
star
42

fancy-battery

Display battery in Emacs Mode line
Emacs Lisp
31
star
43

cpp-auto-include

Insert and delete C++ header files automatically.
Emacs Lisp
31
star
44

helm-open-github

Utilities for opening github page
Emacs Lisp
29
star
45

ac-etags

etags/ctags completion source for auto-complete
Emacs Lisp
28
star
46

transpose-frame

Transpose windows arrangement in a frame
Emacs Lisp
26
star
47

osx-trash

Make Emacs' delete-by-moving-to-trash do what you expect it to do on OS X.
Emacs Lisp
26
star
48

ac-emoji

auto-complete source of Emoji
Emacs Lisp
25
star
49

ac-ispell

ispell/aspell completion source for auto-complete
Emacs Lisp
25
star
50

applescript-mode

Emacs mode for editing AppleScript
Emacs Lisp
24
star
51

codic

Codic for Emacs
Emacs Lisp
23
star
52

magit-svn

Git-Svn extension for Magit
Emacs Lisp
22
star
53

helm-pydoc

pydoc with helm interface
Emacs Lisp
20
star
54

evil-textobj-line

Evil Line text object
Emacs Lisp
18
star
55

ac-alchemist

auto-complete source of alchemist
Emacs Lisp
18
star
56

sourcemap

Sourmap parser in Emacs Lisp
Emacs Lisp
18
star
57

dart-mode

An Emacs mode for the Dart language
Dart
16
star
58

helm-ack

App::ack with helm interface
Emacs Lisp
13
star
59

helm-perldoc

perlpod with helm interface
Emacs Lisp
12
star
60

reverse-theme

Emacs color theme of reverse(like 'emacs --reverse-video')
Emacs Lisp
12
star
61

helm-github-issues

github issues with helm interface
Emacs Lisp
12
star
62

ac-capf

auto-complete source of completion-at-point
Emacs Lisp
12
star
63

sound-wav

Play wav file
Emacs Lisp
12
star
64

ac-racer

auto-complete source of racer
Emacs Lisp
10
star
65

qt-pro-mode

GNU Emacs major-mode for Qt build-system files
Emacs Lisp
9
star
66

popup-complete

Completion with popup-el
Emacs Lisp
9
star
67

splitjoin

Emacs port of splitjoin.vim
Emacs Lisp
8
star
68

miniedit

Enhanced editing for minibuffer fields
Emacs Lisp
8
star
69

helm-ispell

ispell completion with helm interface
Emacs Lisp
8
star
70

thingopt

Additional features of thingatpt.el
Emacs Lisp
8
star
71

helm-package

Listing ELPA packages with helm interface
Emacs Lisp
7
star
72

magit-p4

Magit plugin integrating git-p4 add-on.
Emacs Lisp
6
star
73

docean

Interact with DigitalOcean from Emacs
Emacs Lisp
6
star
74

pyimpsort

Sort python imports
Python
5
star
75

emamux-ruby-test

Ruby test with emamux
Emacs Lisp
5
star
76

octicons

Emacs octicons utility
Emacs Lisp
5
star
77

oberon

Major mode for editing Oberon/Oberon-2 program texts
Emacs Lisp
5
star
78

dedicated

A very simple minor mode for dedicated buffers
Emacs Lisp
4
star
79

haxe-mode

Major mode for editing Haxe files.
Emacs Lisp
4
star
80

helm-robe

Helm completing function for robe
Emacs Lisp
4
star
81

ert-expectations

The simplest unit test framework in the world
Emacs Lisp
4
star
82

keydef

A simpler way to define keys, with kbd syntax
Emacs Lisp
3
star
83

help-find-org-mode

Advise help functions to find org babel source blocks instead of tangled source
Emacs Lisp
3
star
84

test-more

Emacs Test framework like Perl's Test::More
Emacs Lisp
3
star
85

tree-mode

A mode to manage tree widgets
Emacs Lisp
3
star
86

showtip

Show tip at cursor
Emacs Lisp
3
star
87

import-popwin

Pop up buffer near by import statements with popwin
Emacs Lisp
3
star
88

literate-coffee-mode

Major mode for Literate CoffeeScript
Emacs Lisp
3
star
89

perl-utils

Emacs Perl utilities
Emacs Lisp
2
star
90

ltsv

LTSV for Emacs
Emacs Lisp
2
star
91

later-do

Execute lisp code ... later
Emacs Lisp
2
star
92

findr

Breadth-first file-finding facility for (X)Emacs
Emacs Lisp
2
star
93

org-json

Conversion between org and json
Emacs Lisp
2
star
94

dirtree

Directory tree views
Emacs Lisp
2
star
95

pylint

Minor mode for running `pylint'
Emacs Lisp
2
star
96

jedi-eldoc

Eldoc with emacs-jedi
Emacs Lisp
2
star
97

w32-browser

Run Windows application associated with a file
Emacs Lisp
2
star
98

setnu

Emacs Lisp
1
star
99

oddmuse

Edit pages on an Oddmuse wiki
Emacs Lisp
1
star
100

.github

Talk and learn about the Emacsorphanage
Makefile
1
star