Coder Social home page Coder Social logo

duff's People

Contributors

dependabot[bot] avatar karlbjorkman avatar rye avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

karlbjorkman

duff's Issues

Mac OS X: Emacs.app Support Fixes

While .emacs.d handles the environment configuration in a function, it would be great to modify the .app file so that the environment stuff is good out-of-the-box.

Here's a list of necessary things:

  • Ensure that Homebrew is installed
  • Get the current HOMEBREW_CELLAR value using the following command:
    $ ruby -e 'puts `brew config | grep HOMEBREW_CELLAR`.split(\": \")[1]'
  • Modify the $HOMEBREW_CELLAR/emacs/<VERSION>/bin/emacs script in the Emacs installation directory to remove the -nw flag.
  • Create a new script in $HOMEBREW_CELLAR/emacs/<VERSION>/Emacs.app/Contents/MacOS/ with the following contents:
    #!/bin/zsh
    cd $HOME echo '/usr/local/Cellar/emacs/HEAD/bin/emacs "$@"' | zsh --login -s "$@"
  • Modify Info.plist in $HOMEBREW_CELLAR/emacs/<VERSION>/Emacs.app/Contents/. The <string> after the CFBundleExecutable <key> should be modified to point to the new script.
  • Restart the Dock as such:
    $ killall Dock

OS-Specific Variations

It would be fantastic if I didn't have to manually edit and ignore changes in some of these configs based on which OS they're running on.

gpg-agent is a good example of this:

# Connects gpg-agent to the OSX keychain via the brew-installed
# pinentry program from GPGtools. This is the OSX 'magic sauce',
# allowing the gpg key's passphrase to be stored in the login
# keychain, enabling automatic key signing.
pinentry-program /usr/local/bin/pinentry-mac

(This line shouldn't exist on my Linux boxes.)

One way to handle this would be to store a "base" file and then maintain a set of .diff files that apply the necessary changes for the various platforms. I would need some way of tracking the base and diff files, then.

Alternatively, I could implement templating — not sure which is easier yet.

.emacs.d: Local Configuration Spoke

We should reach out and load local configuration files. Here are some strategy ideas:

  • Load a unified filename (duff-local)
  • Load all .el/.elc files within local directories, if they exist.

Add Sublime Text configuration

I have a license for this and I enjoy using it, so I should add this configuration, ideally with zero difference between the macOS and Linux builds.

  • Map out which files need to be tracked
  • Collect the configurations from my main systems and see which parts can be unified
  • Add the necessary Rakefiles

Bootstrap Scripts for Mac OS X, Linux (maybe Windows)

Currently there's a lot of stuff that could be automated for this kind of stuff. It would be great to have some kind of automatic bootstrapping system so that I can just bootstrap my development environment on any system.

I'm thinking having a .yml file for each OS, version, type, etc. would be nice. Interactivity will be important for providing direction to the system.

Tmux: Make Pane Creation Create a New Window With Current PWD

Whenever I use Tmux I'm frustrated by the fact that creating new windows spawns you new sessions within your home directory. It'd probably be better to do things differently and to have <prefix> c instead bring you into your current directory in a new window.

This should be fairly straightforward to accomplish.

Font downloading

I want to be able to download and install fonts automatically. To name a few,

  • Source Code Pro

  • JetBrains Mono

  • How do you automate this on macOS? On Linux, we can just download to ~/.local/share/fonts.

    • Need to handle the case where the fonts are available via package manager vs not — kernel is not specific enough as Arch might have some fonts whereas macOS would have otherwise.

Emacs: Use Spaces Instead of Tabs in ruby-mode

The number of Ruby projects which use tabs is quite low. Unfortunately, contributing to open source Ruby projects with my current configuration is hampered by the use of Smart Tabs. I would rather avoid conversation about tabs/spaces completely and just conform to the community standard.

dockerfile-mode

Dockerfiles are important to be edited. We should include the package for that.

nginx-mode

We should add support for nginx configuration editing to this project.

SCSS: SMIE's indent size is 4 rather than 2, Smart Tabs?

SMIE sucks. smart-tabs-mode is better, but I don't think it has support for SCSS.

We can temporarily globally change smie-indent-basic to make it use the proper size tabs and not insert duplicate tabs, but if we can switch to Smart Tabs to keep everything unified, that would be the most ideal.

Automate Fresh Default Updating

Related to #32, every so often the defaults for something will change. For example, Alacritty will sometimes add new configuration keys. They ship their default configuration, so it'd be great if we could listen for updates and automatically open an Issue here or something?

Include Zash

rye/zash is a collection of scripts that I've been meaning to add for some time to this. I need to actually get that done. It should be trivial.

Should be as simple as:

  • Adding the files to a .zsh folder.
  • Adding a Rakefile to that folder.

See rye/zash#2.

Emacs: Solarized Looks Trashy in org-mode

Solarized has some funky features like changing the pitch of the files to variable for headings in org-mode and scaling org headlines.

I don't really care for this, and, frankly, I think it looks hideous. Thus, this should be removed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.