Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invalid slot type: pm-inner-chunkmode, head-matcher #2

Closed
jbromley opened this issue Sep 5, 2018 · 3 comments
Closed

Invalid slot type: pm-inner-chunkmode, head-matcher #2

jbromley opened this issue Sep 5, 2018 · 3 comments

Comments

@jbromley
Copy link

jbromley commented Sep 5, 2018

When launching emacs 26.1 with polymode-20180905.1435 and poly-markdown-20180905.1437 (both from MELPA) I get the following error message:

Invalid slot type: pm-inner-chunkmode, head-matcher, (or string symbol cons), #[257 \302\300\301�#\207 [markdown-yaml-metadata-begin nil pm--get-property-nearby] 5 

(fn AHEAD)]

Using --debug-init, the stack trace looks like the following:

Debugger entered--Lisp error: (invalid-slot-type pm-inner-chunkmode head-matcher (or string symbol cons) #f(compiled-function (ahead) #<bytecode 0xc7b021>))
  signal(invalid-slot-type (pm-inner-chunkmode head-matcher (or string symbol cons) #f(compiled-function (ahead) #<bytecode 0xc7b021>)))
  eieio--validate-slot-value(#s(eieio--class :name pm-inner-chunkmode :docstring "Inner-chunkmodes represent innermodes (or sub-modes) within a\nbuffer. Chunks are commonly delimited by head and tail markup but\ncan be delimited by some other logic (e.g. indentation). In the\nlatter case, heads or tails have zero length and are not\nphysically present in the buffer." :parents (#s(eieio--class :name pm-chunkmode :docstring "Generic chunkmode object.\nPlease note that by default :protect-xyz slots are nil in\nhostmodes and t in innermodes." :parents (#s(eieio--class :name pm-root :docstring "Root polymode class." :parents (#s(eieio--class :name eieio-instance-inheritor :docstring "This special class can enable instance inheritance.\nUse `clone' to make a new object that does instance inheritance from\na parent instance.  When a slot in the child is referenced, and has\nnot been set, use values from the parent." :parents nil :slots [#s(cl-slot-descriptor :name parent-instance :initform unbound :type eieio-instance-inheritor :props ((:documentation . "The parent of this instance.\nIf a slot of this class is referenced, and is unbound, then the parent\nis checked for a value.")))] :index-table #<hash-table eq 1/65 0x488399> :children (pm-root) :initarg-tuples ((:parent-instance . parent-instance)) :class-slots [] :class-allocation-values [] :default-object-cache #<eieio-instance-inheritor eieio-instance-inheritor> :options (:custom-groups nil :documentation "This special class can enable instance inheritance.\nUse `clone' to make a new object that does instance inheritance from\na parent instance.  When a slot in the child is referenced, and has\nnot been set, use values from the parent." :abstract t))) :slots [#s(cl-slot-descriptor :name parent-instance :initform unbound :type eieio-instance-inheritor :props ((:documentation . "The parent of this instance.\nIf a slot of this class is referenced, and is unbound, then the parent\nis checked for a value."))) #s(cl-slot-descriptor :name name :initform "UNNAMED" :type string :props ((:documentation . "Name of the object used to for display and info.") (:custom . string) (:group default))) #s(cl-slot-descriptor :name -id :initform 0 :type number :props ((:documentation . "[Internal] Numeric id to track objects. Every object has an id."))) #s(cl-slot-descriptor :name -props :initform 'nil :type list :props ((:documentation . "[Internal] Plist used to store various extra metadata such as user history.\nUse `pm--prop-get' and `pm--prop-put' to place key value pairs\ninto this list.")))] :index-table #<hash-table eq 4/65 0x545309> :children (pm-weaver pm-exporter pm-chunkmode pm-polymode) :initarg-tuples ((:parent-instance . parent-instance) (:name . name)) :class-slots [] :class-allocation-values [] :default-object-cache #<pm-root UNNAMED> :options (:custom-groups (default) :documentation "Root polymode class."))) :slots [#s(cl-slot-descriptor :name parent-instance :initform unbound :type eieio-instance-inheritor :props ((:documentation . "The parent of this instance.\nIf a slot of this class is referenced, and is unbound, then the parent\nis checked for a value."))) #s(cl-slot-descriptor :name name :initform "UNNAMED" :type string :props ((:documentation . "Name of the object used to for display and info.") (:custom . string) (:group default))) #s(cl-slot-descriptor :name -id :initform 0 :type number :props ((:documentation . "[Internal] Numeric id to track objects. Every object has an id."))) #s(cl-slot-descriptor :name -props :initform 'nil :type list :props ((:documentation . "[Internal] Plist used to store various extra metadata such as user history.\nUse `pm--prop-get' and `pm--prop-put' to place key value pairs\ninto this list."))) #s(cl-slot-descriptor :name mode :initform nil :type symbol :props ((:documentation . "Emacs major mode for the chunk's body.\nWhen nil the value of `polymode-default-inner-mode' is used when set;\notherwise `poly-fallback-mode' is used. A special value 'host\nmeans to use the host mode as a fallback in the body of this\nchunk.") (:custom . symbol) (:group default))) #s(cl-slot-descriptor :name indent-offset :initform 0 :type integer :props ((:documentation . "Offset to add when indenting chunk's line.\nTakes effect only when :protect-indent is non-nil.") (:custom . integer) (:group default))) #s(cl-slot-descriptor :name protect-indent :initform nil :type boolean :props ((:documentation . "Whether to narrowing to current span before indent.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name protect-font-lock :initform nil :type boolean :props ((:documentation . "Whether to narrow to span during font lock.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name protect-syntax :initform nil :type boolean :props ((:documentation . "Whether to narrow to span when calling `syntax-propertize-function'.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name adjust-face :initform 'nil :type (or number face list) :props ((:documentation . "Fontification adjustment for the body of the chunk.\nIt should be either, nil, number, face or a list of text\nproperties as in `put-text-property' specification. If nil no\nhighlighting occurs. If a face, use that face. If a number, it is\na percentage by which to lighten/darken the default chunk\nbackground. If positive - lighten the background on dark themes\nand darken on light thems. If negative - darken in dark thems and\nlighten in light thems.") (:custom choice number face sexp) (:group default))) #s(cl-slot-descriptor :name init-functions :initform 'nil :type list :props ((:documentation . "List of functions called after the initialization.\nFunctions are called with one argument TYPE in the buffer\nassociated with this chunkmode's span. TYPE is either 'host,\n'head, 'body or 'tail. All init-functions in the inheritance\nchain are called in parent-first order. Either customize this\nslot or use `object-add-to-list' function.") (:custom . hook) (:group default))) #s(cl-slot-descriptor :name switch-buffer-functions :initform 'nil :type list :props ((:documentation . "List of functions to run at polymode buffer switch.\nEach function is run with two arguments, OLD-BUFFER and\nNEW-BUFFER. In contrast to identically named slot in\n`pm-polymode' class, these functions are run only when NEW-BUFFER\nis of this chunkmode.") (:custom . hook) (:group default))) #s(cl-slot-descriptor :name -buffer :initform nil :type (or null buffer) :props nil)] :index-table #<hash-table eq 13/65 0x3d198d> :children (pm-inner-chunkmode pm-host-chunkmode) :initarg-tuples ((:parent-instance . parent-instance) (:name . name) (:mode . mode) (:indent-offset . indent-offset) (:protect-indent . protect-indent) (:protect-font-lock . protect-font-lock) (:protect-syntax . protect-syntax) (:adjust-face . adjust-face) (:init-functions . init-functions) (:switch-buffer-functions . switch-buffer-functions)) :class-slots [] :class-allocation-values [] :default-object-cache #<pm-chunkmode UNNAMED> :options (:custom-groups (default) :documentation "Generic chunkmode object.\nPlease note that by default :protect-xyz slots are nil in\nhostmodes and t in innermodes."))) :slots [#s(cl-slot-descriptor :name parent-instance :initform unbound :type eieio-instance-inheritor :props ((:documentation . "The parent of this instance.\nIf a slot of this class is referenced, and is unbound, then the parent\nis checked for a value."))) #s(cl-slot-descriptor :name name :initform "UNNAMED" :type string :props ((:documentation . "Name of the object used to for display and info.") (:custom . string) (:group default))) #s(cl-slot-descriptor :name -id :initform 0 :type number :props ((:documentation . "[Internal] Numeric id to track objects. Every object has an id."))) #s(cl-slot-descriptor :name -props :initform 'nil :type list :props ((:documentation . "[Internal] Plist used to store various extra metadata such as user history.\nUse `pm--prop-get' and `pm--prop-put' to place key value pairs\ninto this list."))) #s(cl-slot-descriptor :name mode :initform nil :type symbol :props ((:documentation . "Emacs major mode for the chunk's body.\nWhen nil the value of `polymode-default-inner-mode' is used when set;\notherwise `poly-fallback-mode' is used. A special value 'host\nmeans to use the host mode as a fallback in the body of this\nchunk.") (:custom . symbol) (:group default))) #s(cl-slot-descriptor :name indent-offset :initform 0 :type integer :props ((:documentation . "Offset to add when indenting chunk's line.\nTakes effect only when :protect-indent is non-nil.") (:custom . integer) (:group default))) #s(cl-slot-descriptor :name protect-indent :initform t :type boolean :props ((:documentation . "Whether to narrowing to current span before indent.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name protect-font-lock :initform t :type boolean :props ((:documentation . "Whether to narrow to span during font lock.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name protect-syntax :initform t :type boolean :props ((:documentation . "Whether to narrow to span when calling `syntax-propertize-function'.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name adjust-face :initform 2 :type (or number face list) :props ((:documentation . "Fontification adjustment for the body of the chunk.\nIt should be either, nil, number, face or a list of text\nproperties as in `put-text-property' specification. If nil no\nhighlighting occurs. If a face, use that face. If a number, it is\na percentage by which to lighten/darken the default chunk\nbackground. If positive - lighten the background on dark themes\nand darken on light thems. If negative - darken in dark thems and\nlighten in light thems.") (:custom choice number face sexp) (:group default))) #s(cl-slot-descriptor :name init-functions :initform 'nil :type list :props ((:documentation . "List of functions called after the initialization.\nFunctions are called with one argument TYPE in the buffer\nassociated with this chunkmode's span. TYPE is either 'host,\n'head, 'body or 'tail. All init-functions in the inheritance\nchain are called in parent-first order. Either customize this\nslot or use `object-add-to-list' function.") (:custom . hook) (:group default))) #s(cl-slot-descriptor :name switch-buffer-functions :initform 'nil :type list :props ((:documentation . "List of functions to run at polymode buffer switch.\nEach function is run with two arguments, OLD-BUFFER and\nNEW-BUFFER. In contrast to identically named slot in\n`pm-polymode' class, these functions are run only when NEW-BUFFER\nis of this chunkmode.") (:custom . hook) (:group default))) #s(cl-slot-descriptor :name -buffer :initform nil :type (or null buffer) :props nil) #s(cl-slot-descriptor :name can-nest :initform nil :type boolean :props ((:documentation . "Non-nil if this chunk can nest within other inner modes.\nAll chunks can nest within the host-mode.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name can-overlap :initform nil :type boolean :props ((:documentation . "Non-nil if chunks of this type can overlap with other chunks of the same type.\nSee noweb for an example.") (:custom . boolean) (:group default))) #s(cl-slot-descriptor :name head-mode :initform 'poly-head-tail-mode :type symbol :props ((:documentation . "Chunk's head mode.\nIf set to 'host or 'body use host or body's mode respectively.") (:custom . symbol) (:group default))) #s(cl-slot-descriptor :name tail-mode :initform nil :type symbol :props ((:documentation . "Chunk's tail mode.\nIf set to 'host or 'body use host or body's mode respectively. If\nnil, pick the mode from :head-mode slot.") (:custom choice (const nil :tag "From Head") function) (:group default))) #s(cl-slot-descriptor :name head-matcher :initform nil :type (or string symbol cons) :props ((:documentation . "A regexp, a cons (REGEXP . SUB-MATCH) or a function.\nWhen a function, the matcher must accept one argument that can\ntake either values 1 (forwards search) or -1 (backward search).\nThis function must return either nil (no match) or a (cons BEG\nEND) representing the span of the head or tail respectively. See\nthe code of `pm-fun-matcher' for a simple example.") (:custom choice string (cons string integer) function) (:group default))) #s(cl-slot-descriptor :name tail-matcher :initform nil :type (or string cons symbol) :props ((:documentation . "A regexp, a cons (REGEXP . SUB-MATCH) or a function.\nLike :head-matcher but for the chunk's tail. It is always called\nwith the point at the end of the matched head and with the\npositive argument.") (:custom choice string (cons string integer) function) (:group default))) #s(cl-slot-descriptor :name head-adjust-face :initform 'bold :type (or number face list) :props ((:documentation . "Head's face adjustment.\nCan be a number, a list of properties or a face.") (:custom choice number face sexp) (:group default))) #s(cl-slot-descriptor :name tail-adjust-face :initform nil :type (or null number face list) :props ((:documentation . "Tail's face adjustment.\nA number, a list of properties, a face or nil. When nil, take the\nconfiguration from :head-adjust-face.") (:custom choice (const :tag "From Head" nil) number face sexp) (:group default))) #s(cl-slot-descriptor :name -head-buffer :initform nil :type (or null buffer) :props ((:documentation . "[Internal] This buffer is set automatically to -buffer if\n:head-mode is 'body, and to base-buffer if :head-mode is 'host."))) #s(cl-slot-descriptor :name -tail-buffer :initform nil :type (or null buffer) :props ((:documentation . "[Internal] Same as -head-buffer, but for tail span.")))] :index-table #<hash-table eq 23/65 0x3d2099> :children (pm-inner-auto-chunkmode) :initarg-tuples ((:parent-instance . parent-instance) (:name . name) (:mode . mode) (:indent-offset . indent-offset) (:protect-indent . protect-indent) (:protect-font-lock . protect-font-lock) (:protect-syntax . protect-syntax) (:adjust-face . adjust-face) (:init-functions . init-functions) (:switch-buffer-functions . switch-buffer-functions) (:can-nest . can-nest) (:can-overlap . can-overlap) (:head-mode . head-mode) (:tail-mode . tail-mode) (:head-matcher . head-matcher) (:tail-matcher . tail-matcher) (:head-adjust-face . head-adjust-face) (:tail-adjust-face . tail-adjust-face)) :class-slots [] :class-allocation-values [] :default-object-cache #<pm-inner-chunkmode UNNAMED> :options (:custom-groups (default) :documentation "Inner-chunkmodes represent innermodes (or sub-modes) within a\nbuffer. Chunks are commonly delimited by head and tail markup but\ncan be delimited by some other logic (e.g. indentation). In the\nlatter case, heads or tails have zero length and are not\nphysically present in the buffer.")) 18 #f(compiled-function (ahead) #<bytecode 0xc7b021>) head-matcher)
  eieio-oset(#<pm-inner-chunkmode markdown-yaml-metadata> head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>))
  #f(compiled-function (obj slots) "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine." #<bytecode 0x51699d>)(#<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  apply(#f(compiled-function (obj slots) "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine." #<bytecode 0x51699d>) #<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  shared-initialize(#<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  #f(compiled-function (this &optional slots) "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS." #<bytecode 0x5169c5>)(#<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  apply(#f(compiled-function (this &optional slots) "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS." #<bytecode 0x5169c5>) #<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  initialize-instance(#<pm-inner-chunkmode markdown-yaml-metadata> (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  #f(compiled-function (class &rest slots) "Default constructor for CLASS `eieio-default-superclass'.\nSLOTS are the initialization slots used by `initialize-instance'.\nThis static method is called when an object is constructed.\nIt allocates the vector used to represent an EIEIO object, and then\ncalls `initialize-instance' on that object." #<bytecode 0x5151e1>)(pm-inner-chunkmode :name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host)
  apply(#f(compiled-function (class &rest slots) "Default constructor for CLASS `eieio-default-superclass'.\nSLOTS are the initialization slots used by `initialize-instance'.\nThis static method is called when an object is constructed.\nIt allocates the vector used to represent an EIEIO object, and then\ncalls `initialize-instance' on that object." #<bytecode 0x5151e1>) pm-inner-chunkmode (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  make-instance(pm-inner-chunkmode :name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host)
  apply(make-instance pm-inner-chunkmode (:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host))
  pm-inner-chunkmode(:name "markdown-yaml-metadata" :mode yaml-mode :head-matcher #f(compiled-function (ahead) #<bytecode 0xc7b021>) :tail-matcher #f(compiled-function (ahead) #<bytecode 0xc7b03d>) :head-mode host :tail-mode host)
  (closure (t) nil (pm-inner-chunkmode :name "markdown-yaml-metadata" :mode 'yaml-mode :head-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-begin) :tail-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-end) :head-mode 'host :tail-mode 'host))()
  funcall((closure (t) nil (pm-inner-chunkmode :name "markdown-yaml-metadata" :mode 'yaml-mode :head-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-begin) :tail-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-end) :head-mode 'host :tail-mode 'host)))
  eval((funcall (function (closure (t) nil (pm-inner-chunkmode :name "markdown-yaml-metadata" :mode 'yaml-mode :head-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-begin) :tail-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-end) :head-mode 'host :tail-mode 'host)))))
  custom-initialize-reset(pm-inner/markdown-yaml-metadata (funcall (function (closure (t) nil (pm-inner-chunkmode :name "markdown-yaml-metadata" :mode 'yaml-mode :head-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-begin) :tail-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-end) :head-mode 'host :tail-mode 'host)))))
  custom-declare-variable(pm-inner/markdown-yaml-metadata (funcall (function (closure (t) nil (pm-inner-chunkmode :name "markdown-yaml-metadata" :mode 'yaml-mode :head-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-begin) :tail-matcher (pm-make-text-property-matcher 'markdown-yaml-metadata-end) :head-mode 'host :tail-mode 'host)))) "Markdown YAML metadata block." :group poly-innermodes :type object)
  eval-buffer(#<buffer  *load*-147167> nil "/home/jay/.emacs.d/elpa/poly-markdown-20180905.1437/poly-markdown.el" nil t)  ; Reading at buffer position 2258
  load-with-code-conversion("/home/jay/.emacs.d/elpa/poly-markdown-20180905.1437/poly-markdown.el" "/home/jay/.emacs.d/elpa/poly-markdown-20180905.1437/poly-markdown.el" nil t)
  require(poly-markdown)
  eval-buffer(#<buffer  *load*> nil "/home/jay/.emacs.d/init.el" nil t)  ; Reading at buffer position 66
  load-with-code-conversion("/home/jay/.emacs.d/init.el" "/home/jay/.emacs.d/init.el" t t)
  load("/home/jay/.emacs.d/init" t t)
  #f(compiled-function () #<bytecode 0x2601c9>)()
  command-line()
  normal-top-level()

My simple test init.el is the following:

(package-initialize)
(require 'polymode)
(require 'poly-markdown)
;(require 'poly-R)

I have the same problem when trying to load poly-R.

@behrica
Copy link

behrica commented Sep 6, 2018

same for me

@crotoc
Copy link

crotoc commented Sep 6, 2018

I have a problem to install poly-markdown so I just try to load the file poly-markdown.el manually and the error comes out as well.

@crotoc
Copy link

crotoc commented Sep 6, 2018

I solve it by installing polymode. Please check whether polymode is installed correctly.

  1. M+x package-list-packages
  2. C+s search polymode and check if it's installed correctly.

If it doesn't solve the problem, try to Install poly-markdown through github:

git clone https://github.com/polymode/poly-markdown

Add following to your .emacs

;;poly-markdown
(setq load-path
(append '("path/to/vc/dir/polymode/" "path/to/vc/dir/poly-markdown/")
load-path))
(require 'poly-markdown)
(add-to-list 'auto-mode-alist '("\.md" . poly-markdown-mode))

Hope this help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants