This is really nice, I totally missed that you can use swift code in a module. Thanks for sharing.
Emacs
A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!
Get Emacs
Rules
- Posts should be emacs related
- Be kind please
- Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.
Emacs Resources
Emacs Tutorials
- Beginner’s Guide to Emacs
- Absolute Beginner's Guide to Emacs
- How to Learn Emacs: A Hand-drawn One-pager for Beginners
Useful Emacs configuration files and distributions
Quick pain-saver tip
I hope this post brings more visibility to u/vsavchenko’s https://github.com/SavchenkoValeriy/emacs-swift-module and spark more more integrations. u/divinedominion got ideas https://mastodon.social/@ctietze/111470001921901575 Maybe Maps https://xenodium.com/hey-emacs-where-did-i-take-that-photo?
Love it!
A year ago, u/vsavchenko announced https://www.reddit.com/r/emacs/comments/wemj1z/writing_emacs_dynamic_modules_in_swift. I had been meaning to try it out for some time. Finally had the chance and it's really neat!
For example, most of the sharing logic from the experiment in the screen grab is below:
try env.defun(
"macos-module--share",
with: """
Share files in ARG1.
ARG1 must be a vector (not a list) of file paths.
"""
) { (env: Environment, files: [String]) in
let urls = files.map { URL(fileURLWithPath: $0) }
let picker = NSSharingServicePicker(items: urls)
guard let view = NSApp.mainWindow?.contentView else {
return
}
let x = try env.funcall("macos--emacs-point-x") as Int
let y = try env.funcall("macos--emacs-point-y") as Int
let rect = NSRect(
x: x + 15, y: Int(view.bounds.height) - y + 15, width: 1, height: 1
)
picker.show(relativeTo: rect, of: view, preferredEdge: .maxY)
return
}
Xenodium's Github repo for the dynamic module needs more stars and links so more people find it
I'll be collecting dynamic modules while deciding how to make a template for elisp repo kit (Rust).